2025-12-22 晚 易宝软件(外包华为)电话面

HR跟我说是华为驻场的面试官,不知道真假,纯八股

依旧请求大佬解答 12、30、31

  1. 怎么理解泛型

    Java泛型的作用是通过在编译时检查类型安全,允许程序员编写更通用和灵活的代码,避免在运行时发生类型转换错误。【我回答的是能写出更通用和灵活的代码】

  2. 怎么理解反射

    反射是运行时获取类加载的时候保存在元数据区的类信息,比如方法、字段、注解等,进而对代码实现增强【举了一个利用反射实现自定义注解增强代码功能的例子】

  3. 深拷贝和浅拷贝的区别

    深拷贝是赋值一个完全独立的对象,互不影响;浅拷贝是指针引用,一个对象的修改会对其他对象产生影响

  4. 实现深拷贝的方式

    1. 递归调用clone()方法【没回答上来】
    2. 序列化和反序列化
  5. StringBuiler和StringBuufer的区别

    StringBuilder线程不安全,StringBuufer线程安全,所有方法都加了synchronized关键字

  6. 为什么说String是不可变的

    因为String使用finnal修饰char数组,并且声明为private,需要拼接替换的时候返回新对象

  7. 退出一个循环的方式

    return、break、抛出异常、continue(跳过当次循环)、break outer(跳出嵌套循环)

  8. 集合的分类

    Collection(List、Set、Queue)、Map体系,说了一些常见具体实现类,比如ArrayList

  9. ArrayList和LinkedList的区别

    ArrayList 动态数组、内存连续,读时间复杂度O(1),写时间复杂度O(n) LinkedList 动态数组、内存不连续,通过维护前后元素地址,逻辑连续,读时间复杂度O(n),写时间复杂度O(1)

  10. HashMap底层原理

    数组 + 链表 + 红黑树,默认长度、负载因子,讲了put一个元素全流程(包括延迟初始化的优化等)

  11. HashMap除了超过负载因子会扩容还有什么情况会扩容

    【没回答上来,除了超过 元素数量 * 负载因子,还有什么情况吗】

  12. HashMap是线程安全的吗,线程安全的Map有哪些,会使用哪个

    不是,安全的有HashTable、ConcurrentHashMap 【参考,没见过这个跳表就没回答】

image.png

  1. ConcurrentHashMap怎么保证线程安全的

    synchronized + CAS操作,具体流程是锁住当前桶首节点,然后通过CAS执行写操作 【说的不全面吧,参考https://www.mianshiya.com/question/1854745940761190402】

  2. synchronized关键字和Lock有什么区别

    【我是这样回答的】 来源不同:一个是java提供的关键字,一个来自JUC包 底层不同:synchronized依赖于monitor和对象头,Lock是AQS的实现 灵活性:Lock比synchronized更灵活,手动上锁解锁,支持中断

  3. synchronized锁升级了解过吗

    【实话实说:不了解,大概就是随着竞争越激烈,锁会升级且不会退化】

  4. AQS整个过程简述一下

    【我讲的ReentrantLock,跟下面这个流程差不多,讲了一下AQS的基本组成】

image.png

  1. JVM内存模型

    堆:存对象的地方 虚拟机栈:执行代码方法的地方,存储栈帧 本地方法栈:执行本地方法的地方 方法区:主要存储类的结构信息,包含运行时常量池 程序计数器:线程的执行地址(执行到哪一行)

  2. 常见的垃圾回收算法和特点

    【我只能说这么多了,再多就不会了】 复制:比较占用内存 标记-清除:产生内存碎片 标记-整理:不产生内存碎片,但是耗时 分代回收:年轻代使用复制,老年代使用标记整理

  3. 怎么理解Spring IOC

    反转控制,将Bean的创建和管理交给容器,统一管理【大概就是这意思吧】

  4. Spring怎么解决的循环依赖

    讲了三种循环依赖,三级缓存解决的是互相依赖,根据Spring官网提供的案例讲了A\B两个Bean整个初始化的流程

  5. 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返回给请求者(浏览器)

  6. 过滤器和拦截器的区别

    【实话实话:忘了】 【参考:https://www.mianshiya.com/question/1907425766060380162】

  7. 讲一下SpringBoot的启动流程

    【参考:https://www.mianshiya.com/question/1846441429268488194】 【没回答上来】

  8. 如果想在应用启动之后修改业务配置怎么去实现

    我讲的是通过事件监听去实现或者使用配置中心【我记得是可以的,又没有大佬回答一下】

  9. MySQL常见的数据引擎有哪些

    最常见的是InnoDB、MyISAM,其他可以通过show engines 命令查看,MySQL官方提供了10种

  10. InnoDB和MyISAM的区别

    1. InnoDB支持行锁,MyISAM不支持
    2. InnoDB支持事务,MyISAM不支持
    3. 数据完整性一致性使用InnoDB;读多写少使用MyISAM
    4. InnoDB支持崩溃后恢复,MyISAM不支持【这点他问我还有吗,我没记起来】
  11. InnoDB的索引存储结构

    B+树的结果,和B树的区别

  12. Redis持久化机制

    1. rdb,两种命令的区别(save、bgsave)
    2. aof,三种不同配置(always、everysec、no)
    3. 一般是混合持久化
  13. 假设一个页面数据展示有问题,应该怎么去定位是前端还是后端的问题

    F12手动请求检查数据完整性,定位谁的问题;如果是后端,看是否有报错、数据是否存在等,定位调用堆栈信息/手动debug 【我的理解就是这样,完整步骤 who can tell me!!】

  14. 微服务出现服务间的循环调用,怎么解决

    【实话实说:没遇到过,思路是看服务器资源、定位调用的堆栈信息, who can tell me!!】

总结:纯八股,能回答上来大概,但是细节还是缺一点

回复@老朽不性秀吉的

image.png

image.png

image.png

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
悲伤刘不住
下载 APP