【面经】亚信科技面试问题合集

下述内容经搜寻广大平台的面试经历,整理汇合得出,答案来自chatgpt,加黑的地方意味着出现多次。

1.自我介绍

2.介绍项目功能

3.==和equals的区别。八大基本类型(byte,char,int ,long,double,float,boolean,short)

  • == 是用于比较两个变量的值是否相等。

  • equals() 是用于比较两个对象的内容是否相等。在 Java 中,equals() 方法是用来比较对象的内容是否相等,而对于基本数据类型,equals() 方法与 == 是一样的作用。

4.hashmap和hashstable的区别

  • 线程安全性:Hashtable是线程安全的,所有的方法都是同步的,而HashMap不是线程安全的,如果需要在多线程环境下使用,可以使用ConcurrentHashMap来代替HashMap。

  • null值:Hashtable不允许键或值为null,会抛出NullPointerException异常,而HashMap允许键或值为null。

  • 继承关系:Hashtable是Hashtable类的子类,而HashMap是AbstractMap类的子类。

  • 迭代器:Hashtable的迭代器是通过Enumeration接口实现的,而HashMap的迭代器是通过Iterator接口实现的。

5.concurrenthashmap的原理

  • ConcurrentHashMap 使用分段锁(Segment)来确保线程安全,每个 Segment 有自己的锁,不同 Segment 的数据修改操作可以并发进行,提高了并发性能。

6.lambda表达式怎么写

  • Java 8引入的新特性,用于简化代码编写。它可以替代匿名内部类的语法,使代码更加简洁易读。

  • (int a, int b) -> a + b

  • 这个Lambda表达式表示一个函数,接受两个整数参数a和b,然后返回它们的和。

7.垃圾回收常见的算法

  • 常见的垃圾回收算法包括标记清除(Mark and Sweep)、复制(Copying)、标记整理(Mark and Compact)等

8.Linux的两个常见命令:查看内存大小,查看磁盘大小

  • 查看内存大小:free -h

  • 查看磁盘大小:df -h

9.springboot的常用注解

  • @SpringBootApplication: 启动SpringBoot应用的入口注解。

  • @Controller, @Service, @Repository: 分别用于标记Controller、Service和DAO层的类。

  • @Autowired: 自动装配依赖。

10.redis怎么设置过期时间

  • 使用命令 EXPIRE key seconds 来设置键的过期时间。

11.sql的索引和使用场景

SQL的索引是用来提高查询效率的数据结构,可以加快数据的检索速度。常见的使用场景包括:

  • 当某个字段经常被用作查询条件时,可以为该字段创建索引,提高查询效率。

  • 当某个字段经常用来进行排序或分组操作时,也可以为该字段创建索引。

  • 连接操作中,如果连接的字段没有索引,可能会导致性能问题,可以考虑为连接字段创建索引

12给出一张表,id,姓名,性别,年龄,问怎么实现分组查询

  • SELECT 性别, COUNT(*) FROM 表名 GROUP BY 性别;

13.给出两张表,一个表中有id和姓名,一个表中有id和年龄,问怎么联合索引。

  • 联合索引是指在多个字段上创建一个组合索引,以提高多个字段组合条件查询的效率。在给出的两张表中,可以通过以下SQL语句创建联合索引:

  • CREATE INDEX idx_name_age ON 表1(id);

  • CREATE INDEX idx_id_name ON 表2(id);

14.乐观锁和悲观锁

  • 乐观锁是指在更新数据时,先读取数据,然后在更新时检查数据是否被其他事务修改过,如果没有则更新成功,否则放弃更新并重试。

  • 悲观锁是指在操作数据之前先加锁,确保其他事务无法修改数据,操作完成后释放锁

15.mq的使用

  • MQ(消息队列)用于在不同组件或系统之间传递消息,常见的使用场景包括解耦、异步处理、削峰填谷等。常见的MQ系统有RabbitMQ、Kafka、ActiveMQ等。

16.断点上传的思路

  • 指在网络传输大文件时,如果中断了传输,可以从中断的地方继续传输,常见的实现思路是在客户端和服务端记录已传输的字节数,当传输中断时,下次传输时从中断的位置继续传输。

17.spring、springmvc,springboot的区别

  • Spring是一个综合性的框架,提供了依赖注入、AOP、事务管理等功能;Spring MVC是基于Spring的MVC框架,用于Web开发;Spring Boot是用于简化Spring应用开发的框架,提供了自动配置和约定优于配置的特性。

  • Spring Boot是一个快速开发框架,提供了自动配置和约定优于配置的方式,开发者只需关注业务逻辑而不用过多配置;而Spring MVC是用于构建Web应用程序的一个模块,需要更多的配置和设置。

  • Spring Boot可以快速搭建一个独立的、自包含的应用程序,包括内嵌的服务器,使得应用程序可以直接运行;而Spring MVC通常需要结合其他的容器(如Tomcat)来运行。

  • Spring Boot提供了很多开箱即用的功能,如健康检查、监控、日志等,使得开发者更容易实现这些功能;而Spring MVC需要开发者自己配置这些功能。

18.spring事务

  • Spring事务管理支持声明式事务和编程式事务两种方式,可以通过@Transactional注解或编程式API来实现事务管理,保证数据库操作的一致性。

19.springboot的自动配置

  • Spring Boot的自动配置是指Spring Boot根据项目中的依赖和配置自动配置Spring应用程序的特性。通过约定大于配置的方式,可以减少开发人员的配置工作,提高开发效率。

20集合的数据结构有哪些

  • List:列表,有序集合,可以重复元素。

  • Set:集合,无序集合,不允许重复元素。

  • Map:映射,键值对集合。

  • Queue:队列,先进先出的数据结构。

  • Stack:栈,后进先出的数据结构。

  • Linked List:链表,通过指针进行连接的数据结构等。

21.mysql中innoDB的底层原理

  • 事务:InnoDB支持ACID事务,采用多版本并发控制(MVCC)来实现事务的隔离性。

  • 行级锁:InnoDB使用行级锁进行并发控制,提高了多用户并发操作时的性能。

  • 聚簇索引:InnoDB的表数据存储采用聚簇索引,将数据和索引存储在一起,加速数据检索。

  • 事务日志:InnoDB采用事务日志(redo log)来保证事务的持久性和恢复能力。

  • 缓冲池:InnoDB使用缓冲池(Buffer Pool)来缓存数据,减少对磁盘IO的访问,提高性能。

22.B树和B+树

  • B树:B树是一种多路平衡查找树,用于实现关系型数据库中的索引结构。B树的特点是每个节点有多个子节点,且每个节点都对应一个区间范围,适合数据库中范围查询操作。

  • B+树:B+树是在B树的基础上优化而来,所有关键字都在叶子节点上非叶子节点只存储索引信息,使得范围查询更加高效。B+树通常用于数据库索引

23.线程池的原理

线程池是一种管理和复用线程的机制,其原理包括以下几个方面:

  • 线程复用:线程池中的线程可以被重复利用,减少线程创建和销毁的开销。

  • 线程管理:线程池可以控制线程的数量,避免创建过多线程导致资源浪费。

  • 任务队列:线程池通常包含一个任务队列,用于存放需要执行的任务,线程从队列中获取任务执行。

  • 线程调度:线程池会根据线程的状态、任务队列的情况等因素来决定如何调度线程执行任务。

24.讲讲线程,多线程,创建线程的方式(项目中哪些业务场景会用到线程)

线程:线程是操作系统能够进行运算调度的最小单位,一个进程可以包含多个线程,各线程之间共享进程的资源。

多线程:多线程指的是一个进程内包含多个线程,多线程可以提高程序的并发性和响应速度。

创建线程的方式

  • 继承Thread类:创建一个类继承Thread类,并重写run()方法。

  • 实现Runnable接口:创建一个实现了Runnable接口的类,并将其作为参数传递给Thread类的构造方法。

  • 实现Callable接口:创建一个实现了Callable接口的类,并结合ExecutorService实现。

并行处理大量数据,提高处理速度。

异步执行一些耗时任务,提高系统的响应速度。

实现定时任务、轮询等功能。

25.redis的数据结构有哪些,使用场景

Redis支持的数据结构包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)、位图(Bitmap)、HyperLogLog等。不同的数据结构适用于不同的场景,例如:

  • 字符串:缓存、计数器

  • 哈希:存储对象的属性

  • 列表:消息队列、最新消息列表

  • 集合:关注列表、共同好友

  • 有序集合:排行榜、优先队列

  • 位图:用户签到、在线状态

  • HyperLogLog:基数统计

26.mybatis为什么优化检索

  • 使用MyBatis缓存来减少数据库查询次数

  • 使用延迟加载来减少不必要的数据加载

  • 使用分页查询来限制返回结果集的大小

  • 使用动态SQL来减少不必要的条件判断

  • 使用MyBatis的一级缓存和二级缓存来提高检索性能

27.数据库为什么要创建索引,加索引的本质是?索引的作用

数据库创建索引的主要原因是为了提高查询效率,加快数据检索的速度。索引的本质是一种数据结构,它通过存储数据的排序顺序或者哈希值来加速数据的查找。索引的作用包括:

  • 减少查询时需要扫描的数据量

  • 加速数据的查找和排序

  • 提高数据库的性能和响应速度

28.什么情况下索引不能用

索引不能用的情况包括:

  • 对于小表,使用索引可能会降低性能

  • 查询条件中使用了函数或表达式,无法使用索引

  • 对于高基数列(取值多样性很高的列),索引可能不起作用

  • 索引列上有大量的更新操作,可能会导致索引失效

29.sql语句中#和$的区别

在SQL语句中,#和$通常用作参数的占位符:

  • #表示参数是预编译的,可以防止SQL注入,但可能会受到SQL注入攻击

  • $表示参数是直接拼接到SQL语句中的,可能会有SQL注入风险,但性能更好

30.什么情况下使用redis

  • 需要高性能的缓存解决方案

  • 需要存储键值对数据的场景

  • 需要实时计数器、排行榜等功能

  • 需要发布/订阅消息或实现消息队列

  • 需要分布式锁或分布式限流控制

31.事务了解吗,它的原理

事务是一组操作单元,要么全部成功提交,要么全部失败回滚。事务的四个特性为ACID,即原子性、一致性、隔离性和持久性。事务的原理是通过数据库的事务日志和事务管理器来保证数据的一致性和可靠性。

32.springmvc的工作原理,执行流程

  • 客户端发起请求,请求被DispatcherServlet拦截

  • DispatcherServlet根据请求路径找到对应的HandlerMapping,将请求分发给对应的Controller

  • Controller处理请求并返回ModelAndView对象,包含视图名和模型数据

  • ViewResolver解析视图名,找到对应的视图模板

  • View渲染模型数据并生成

33.事务的四大隔离级别

  • 读未提交(Read Uncommitted)、读提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。

34.Mysql索引失效形式

  • 全表扫描、索引列上有函数操作、索引列不在联合索引的最左侧、使用"!="或"不等于"、模糊查询中使用通配符开头、对索引列进行数学运算等。

35.项目中用到哪些数据结构

  • 可能会用到的数据结构包括数组、链表、栈、队列、树、图、堆、哈希表

36.java中有哪些操作字符串的值,区别是什么?

  • Java中操作字符串的方式包括使用"+"连接字符串、使用StringBuffer和StringBuilder类进行字符串拼接。区别在于StringBuffer是线程安全的,而StringBuilder则是非线程安全的。

37.表索引,数据量大怎么办

  • 当表索引数据量大时,可以考虑对索引进行优化,使用合适的数据类型、调整索引顺序、添加覆盖索引或者使用分区表等方式来提升查询性能。

38。分布式锁

  • 用于在分布式系统中实现数据的并发访问控制的技术,可以通过ZooKeeper、Redis等工具实现分布式锁

39.CAS算法

  • CAS(Compare And Swap)算法是一种乐观锁技朧,通过比较并交换内存中的数值来实现并发控制,常用于无锁编程和并发数据结构的实现。

40.ArrayList遍历的几种形式

  • 可以通过for循环、forEach循环、迭代器等多种形式进行,选择不同的遍历方式可以根据具体的需求和场景来决定。

41.Springboot声明bean的注解应该怎么写

  • 可以使用@Component@Service@Repository等注解进行标记

42.Mybatis-plus做一个查询有哪几种写法

  • 使用selectByIdselectListselectMaps等方法;使用QueryWrapper进行条件查询;自定义SQL语句进行查询等。

43.为什么使用redission来作分布式锁

  • 提供简单易用的API、支持多种分布式锁实现、具有良好的性能等。

44.java的哪些框架

  • 包括Spring框架、Spring Boot、MyBatis等。

45.springboot的启动方式

  • 包括使用java -jar命令直接运行生成的可执行jar包,或者在IDE中运行主应用程序类。

46.springboot的核心注解

@SpringBootApplication@Controller@Service@Repository等。

47.mysql联合查询的几种方式

  • 包括使用JOIN语句、子查询、UNION操作符等。

48.list和set的区别

  • List是有序集合,允许元素重复;Set是无序集合,不允许元素重复。

49.spring中什么时候用到事务,事务用什么注解

  • 在Spring中需要保证一组操作要么全部成功要么全部失败时,需要使用事务。事务通常使用@Transactional注解来标记方法或类。

50.java反射

  • Java反射是一种机制,允许程序在运行时检查和操作类、对象、方法等的信息,可以通过反射获得类的构造器、字段、方法等信息,并动态调用它们。

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/341406.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode-43. 字符串相乘【数学 字符串 模拟】

LeetCode-43. 字符串相乘【数学 字符串 模拟】 题目描述:解题思路一:模拟乘法,两个数中每一位数相乘的时候乘上他们各自的进制数,之后求和。循环时,分别记录各自的进制数背诵版:解题思路三:0 题…

九、参数处理器

debug调试,一个参数的调通了,但是两个参数的会失败 总结一下: 到现在已经学了有10节了,我对mybatis底层的执行流程算是挺了解的了,把流程拆解开,每一个小步骤都是非常多的代码实现,代码都能看懂…

day25-XML

1.xml 1.1概述【理解】 1.2语法规则【应用】 1.5DTD约束【理解】 1.6schema约束【理解】 1.4xml解析【应用】 概述 xml解析就是从xml中获取到数据 常见的解析思想 DOM(Document Object Model)文档对象模型:就是把文档的各个组成部分看做成对应的对象。 会把xml文件全部加载到…

STM32作业实现(六)闪存保存数据

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

Ubuntu系统配置DDNS-GO【笔记】

DDNS-GO 是一个基于 Go 语言的动态 DNS (DDNS) 客户端,用于自动更新你的 IP 地址到 DNS 记录上。这对于经常变更 IP 地址的用户(如使用动态 IP 的家庭用户或者小型服务器)非常有用。 此文档实验环境为:ubuntu20.04.6。 在Ubuntu…

查看 samba 文件共享服务器地址的具体 IP

问题背景 在某个局域网中,已知 samba 文件共享服务器的地址如 \\samba_share在该局域网的子网中,由于 dns 服务器缺失,无法通过地址 \\samba_share 直接访问该服务器 解决方法 使用 ping 命令查看某个地址的 ip : ping [addre…

大模型系列:大模型tokenizer分词编码算法BPE理论简述和实践

前言 token是大模型处理和生成语言文本的基本单位,在之前介绍的Bert和GPT-2中,都是简单地将中文文本切分为单个汉字字符作为token,而目前LLaMA,ChatGLM等大模型采用的是基于分词工具sentencepiece实现的BBPE(Byte-lev…

MySQL——索引下推

1、使用前后对比 index Condition Pushdown(ICP)是MySQL5.6中新特性,是一种在存储引擎层使用索引过滤数据的优化方式。 如果没有ICP,存储引擎会遍历索引以定位基表中的行,并将它们返回给MySQL服务器,由MySQL服务器评估WHERE后面…

QT案例 记录解决在管理员权限下QFrame控件获取拖拽到控件上的文件路径

参考知乎问答 Qt管理员权限如何支持拖放操作? 的回答和代码示例。 解决在管理员权限运行下,通过窗体的QFrame子控件获取到拖拽的内容。 目录标题 导读解决方案详解示例详细 【管理员权限】在QFrame控件中获取拖拽内容 【管理员权限】继承 IDropTarget 类…

深度学习笔记:2.Jupyter Notebook

Jupyter Notebook 常用操作快捷键魔法指令_jupyter notebook快捷键调用函数-CSDN博客https://blog.csdn.net/qq_26917905/article/details/137211336?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171748112816800182160793%2522%252C%2522scm%2522%253A%25222014…

CS4344国产替代音频DAC数模转换芯片DP7344采样率192kHz

目录 DAC应用简介DP7344简介结构框图DP7344主要特性微信号:dnsj5343参考原理图 应用领域 DAC应用简介 DAC(中文:数字模拟转换器)是一种将数字信号转换为模拟信号(以电流、电压或电荷的形式)的设备。电脑对…

废品回收小程序怎么做?有哪些核心功能?

废品回收行业正逐步走向高质量发展的道路。在国家政策的推动下,再生资源市场需求旺盛,行业内部竞争格局逐渐明朗。 随着互联网技术的发展,"互联网回收"成为废品回收行业的一个新趋势。通过微信小程序这种线上平台,用户…

甲方的苛刻,是成就优质作品的必要条件,辩证看待。

取其上、得其中,取其中,得其下,取其下、则无所的。在进行B端界面的设计的时候,设计师除了自我加压外,还少不了客户的严格要求,贝格前端工场为大家辩证分析一下。 一、严格产出高品质作品 甲方提出苛刻的要…

自然语言处理(NLP)—— C-value方法

自然语言处理(NLP)和文本挖掘是计算机科学与语言学的交叉领域,旨在通过计算机程序来理解、解析和生成人类语言,以及从大量文本数据中提取有用的信息和知识。这些技术在现代数据驱动的世界中扮演着关键角色,帮助我们从海…

数据结构:单调栈

数据结构&#xff1a;单调栈 题目描述参考代码 题目描述 输入样例 5 3 4 2 7 5输出样例 -1 3 -1 2 2参考代码 #include <iostream>using namespace std;const int N 100010;int stk[N], top; int n, x;int main() {cin >> n;while (n--){cin >> x;while …

Redis 异常三连环

本文针对一种特殊情况下的Reids连环异常&#xff0c;分别是下面三种异常&#xff1a; NullPointerException: Cannot read the array length because “arg” is nullJedisDataException: ERR Protocol error: invalid bulk lengthJedisConnectionException: Unexpected end o…

c++ - list常用接口模拟实现

文章目录 一、模拟list类的框架二、函数接口实现1、迭代器接口2、常用删除、插入接口3、常用其他的一些函数接口4、默认成员函数 一、模拟list类的框架 1、使用带哨兵的双向链表实现。 2、链表结点&#xff1a; // List的结点类 template<class T> struct ListNode {Li…

Docker之路(三)docker安装nginx实现对springboot项目的负载均衡

Docker之路&#xff08;三&#xff09;dockernginxspringboot负载均衡 前言&#xff1a;一、安装docker二、安装nginx三、准备好我们的springboot项目四、将springboot项目分别build成docker镜像五、配置nginx并且启动六、nginx的负载均衡策略七、nginx的常用属性八、总结 前言…

Android WebView上传文件/自定义弹窗技术,附件的解决方案

安卓内核开发 其实是Android的webview默认是不支持<input type"file"/>文件上传的。现在的前端页面需要处理的是&#xff1a; 权限 文件路径AndroidManifest.xml <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&g…

计算机网络ppt和课后题总结(上)

试在下列条件下比较电路交换和分组交换。要传送的报文共 x(bit)。从源点到终点共经过 k 段链路&#xff0c;每段链路的传播时延为 d(s)&#xff0c;数据率为 b(b/s)。在电路交换时电路的建立时间为 s(s)。在分组交换时分组长度为 p(bit)&#xff0c;且各结点的排队等待时间可忽…