2025-12-22 晚 易宝软件(外包华为)电话面
HR跟我说是华为驻场的面试官,不知道真假,纯八股
依旧请求大佬解答 12、30、31
-
怎么理解泛型
Java泛型的作用是通过在编译时检查类型安全,允许程序员编写更通用和灵活的代码,避免在运行时发生类型转换错误。【我回答的是能写出更通用和灵活的代码】
-
怎么理解反射
反射是运行时获取类加载的时候保存在元数据区的类信息,比如方法、字段、注解等,进而对代码实现增强【举了一个利用反射实现自定义注解增强代码功能的例子】
-
深拷贝和浅拷贝的区别
深拷贝是赋值一个完全独立的对象,互不影响;浅拷贝是指针引用,一个对象的修改会对其他对象产生影响
-
实现深拷贝的方式
- 递归调用clone()方法【没回答上来】
- 序列化和反序列化
-
StringBuiler和StringBuufer的区别
StringBuilder线程不安全,StringBuufer线程安全,所有方法都加了synchronized关键字
-
为什么说String是不可变的
因为String使用finnal修饰char数组,并且声明为private,需要拼接替换的时候返回新对象
-
退出一个循环的方式
return、break、抛出异常、continue(跳过当次循环)、break outer(跳出嵌套循环)
-
集合的分类
Collection(List、Set、Queue)、Map体系,说了一些常见具体实现类,比如ArrayList
-
ArrayList和LinkedList的区别
ArrayList 动态数组、内存连续,读时间复杂度O(1),写时间复杂度O(n) LinkedList 动态数组、内存不连续,通过维护前后元素地址,逻辑连续,读时间复杂度O(n),写时间复杂度O(1)
-
HashMap底层原理
数组 + 链表 + 红黑树,默认长度、负载因子,讲了put一个元素全流程(包括延迟初始化的优化等)
-
HashMap除了超过负载因子会扩容还有什么情况会扩容
【没回答上来,除了超过 元素数量 * 负载因子,还有什么情况吗】
-
HashMap是线程安全的吗,线程安全的Map有哪些,会使用哪个
不是,安全的有HashTable、ConcurrentHashMap 【参考,没见过这个跳表就没回答】

-
ConcurrentHashMap怎么保证线程安全的
synchronized + CAS操作,具体流程是锁住当前桶首节点,然后通过CAS执行写操作 【说的不全面吧,参考https://www.mianshiya.com/question/1854745940761190402】
-
synchronized关键字和Lock有什么区别
【我是这样回答的】 来源不同:一个是java提供的关键字,一个来自JUC包 底层不同:synchronized依赖于monitor和对象头,Lock是AQS的实现 灵活性:Lock比synchronized更灵活,手动上锁解锁,支持中断
-
synchronized锁升级了解过吗
【实话实说:不了解,大概就是随着竞争越激烈,锁会升级且不会退化】
-
AQS整个过程简述一下
【我讲的ReentrantLock,跟下面这个流程差不多,讲了一下AQS的基本组成】

-
JVM内存模型
堆:存对象的地方 虚拟机栈:执行代码方法的地方,存储栈帧 本地方法栈:执行本地方法的地方 方法区:主要存储类的结构信息,包含运行时常量池 程序计数器:线程的执行地址(执行到哪一行)
-
常见的垃圾回收算法和特点
【我只能说这么多了,再多就不会了】 复制:比较占用内存 标记-清除:产生内存碎片 标记-整理:不产生内存碎片,但是耗时 分代回收:年轻代使用复制,老年代使用标记整理
-
怎么理解Spring IOC
反转控制,将Bean的创建和管理交给容器,统一管理【大概就是这意思吧】
-
Spring怎么解决的循环依赖
讲了三种循环依赖,三级缓存解决的是互相依赖,根据Spring官网提供的案例讲了A\B两个Bean整个初始化的流程
-
SpringMVC从接受客户端请求开始的整个流程
【根据下面的流程回答了个大概,最后讲了前后端分离直接返回json数据给Dispatcherservlet,前端自己渲染】 2. 客户端(浏览器)发送请求,Dispatcherservlet拦截请求 3. Dispatcherservlet根据请求信息调用HandlerMapping。HandlerMapping根据URL去匹配查找能处理的Handler(这个 Handler指的是我们自己写的Controller) 4. DispatcherServlet调用HandlerAdapter适配器执行Handler(这 里涉及到了适配器模式) 5. Handler完成对用户请求的处理后,会返回一个ModelAndView 对象给DispatcherServlet 6. ViewResolver视图解析去会根据逻辑View查找实际的View 7. DispaterServlet把返回的Model传给View(视图渲染) 8. 把View返回给请求者(浏览器)
-
过滤器和拦截器的区别
【实话实话:忘了】 【参考:https://www.mianshiya.com/question/1907425766060380162】
-
讲一下SpringBoot的启动流程
【参考:https://www.mianshiya.com/question/1846441429268488194】 【没回答上来】
-
如果想在应用启动之后修改业务配置怎么去实现
我讲的是通过事件监听去实现或者使用配置中心【我记得是可以的,又没有大佬回答一下】
-
MySQL常见的数据引擎有哪些
最常见的是InnoDB、MyISAM,其他可以通过show engines 命令查看,MySQL官方提供了10种
-
InnoDB和MyISAM的区别
- InnoDB支持行锁,MyISAM不支持
- InnoDB支持事务,MyISAM不支持
- 数据完整性一致性使用InnoDB;读多写少使用MyISAM
- InnoDB支持崩溃后恢复,MyISAM不支持【这点他问我还有吗,我没记起来】
-
InnoDB的索引存储结构
B+树的结果,和B树的区别
-
Redis持久化机制
- rdb,两种命令的区别(save、bgsave)
- aof,三种不同配置(always、everysec、no)
- 一般是混合持久化
-
假设一个页面数据展示有问题,应该怎么去定位是前端还是后端的问题
F12手动请求检查数据完整性,定位谁的问题;如果是后端,看是否有报错、数据是否存在等,定位调用堆栈信息/手动debug 【我的理解就是这样,完整步骤 who can tell me!!】
-
微服务出现服务间的循环调用,怎么解决
【实话实说:没遇到过,思路是看服务器资源、定位调用的堆栈信息, who can tell me!!】
总结:纯八股,能回答上来大概,但是细节还是缺一点
回复@老朽不性秀吉的



