Offer

面经汇总--校招--金山办公

参考链接:https://www.nowcoder.com/experience/639

用于汇总Java后端各个校招、社招、实习面经,附自己答案

csdn csdn csdn csdn csdn


🔥1. 一面

image-20221122192154451

image-20221122192215094

  1. ConcurrentHashMap原理:JDK1.8之后是volatile定义的Node数组 + 链表 + 红黑树,对数组头结点加锁来保证线程安全。具体put加锁过程是采用synchronized + cas自旋实现,而get是voaltile,就可以直接读
  2. CopyOnWriteArrayList原理:适合读多写少场景,内部添加,复制都是对底层赋值的操作实现,由于list,set非线程安全,所以内部修改数据加了reentranlock锁
  3. synchronized做的优化手段有哪些
    1. 锁升级、锁粗化、锁消除
  4. JVM垃圾回收器: Parallel Scavenge + Parallel old。但是网上说的比较多的都是CMS + G1,后面得学下。
  5. 身份证号用主键索引是否合适呢: 肯定是不合适,因为主键索引在B+数中使用递增id最好,而且身份证不一定都是数字,而且太长的主键索引查询也会影响效率
  6. TCP连接已经建立了,但是客户端故障了,会怎么样
    1. TCP会开启keep-alive,若长期未收到相应就主动关闭连接
    2. 若服务器崩溃,会发送RST包让客户端关闭链接
  7. 计算机的交换空间了解吗:内存不够用,到辅存中置换空间
  8. Spring的自动注入底层调用了什么方法:set注入,有@Autowired,@resource,@inject这几种注解
  9. IOC如何实现的:控制反转,使用工厂模式和反射机制实现对象创建由spring创建
  10. 数据库有上百亿条数据,要输出到一个文本文件中,谈谈有哪些值得思考的地方:
    1. 使用多线程异步读取数据库百亿数据,控制线程数,避免内存OOM
    2. 使用buffer缓存流操作文件的IO
    3. 多线程异步输出到各个文件后,最后做文件合并
  11. 假设说我写一半,服务挂掉了,重启之后我肯定不想重头开始,而是继续读取,怎么处理
    1. 断点续传:randomAccessFile,每次往里面输入数据都先读取文件长度

🔥2.二面

1. 操作系统`32`位和`64`位有什么区别
 	1. 核心区别:cpu处理器一次能处理数据的最大位数
 	2. 64位可以兼容32,反之却不行

二面其余问题都是一些实际项目业务的了

image-20221122192230651

🔥2.HR面

​ HR面都是问的自我评价和一些学习路线之类的了

image-20221122192237934

posted @ 2022-11-22 19:25  Empirefree  阅读(111)  评论(0编辑  收藏  举报