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


    参考链接: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,反之却不行
    
    • 1
    • 2
    • 3

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

    image-20221122192230651

    🔥2.HR面

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

    image-20221122192237934

  • 相关阅读:
    基于单向链表结构的软件虚拟定时器的设计与构建
    多线程之线程池
    《游戏引擎架构》--学习3
    Flask框架——项目可安装化
    录屏怎么录声音?用手机录屏怎么把声音录进去
    逻辑思维能力选择题30道
    spring:简介
    高级网络调试技巧:使用Charles Proxy捕获和修改HTTP/HTTPS请求
    nginx笔记
    Zabbix6通过ODBC方式监控Oracle 19C最佳实践
  • 原文地址:https://blog.csdn.net/Empire_ing/article/details/127988489