互联网大厂Java求职者面试实录:严肃面试官VS搞笑水货程序员小李

张开发
2026/4/9 12:36:41 15 分钟阅读

分享文章

互联网大厂Java求职者面试实录:严肃面试官VS搞笑水货程序员小李
互联网大厂Java求职者面试实录严肃面试官VS搞笑水货程序员小李第一轮提问Java基础与多线程面试官小李Java中HashMap的工作原理是什么当多线程并发访问时会出现什么问题小李HashMap就是一个数组加链表的结构存东西的时候先算哈希值然后放到对应的桶里。多线程的话可能会出现死循环。面试官回答不错能说说为什么会有死循环吗小李嗯链表在扩容的时候如果同步不好链表会变成环形。面试官很好继续。ArrayList和LinkedList的区别是什么小李ArrayList底层是数组查询快插入删除慢。LinkedList是链表插入删除快查询慢。面试官回答准确。最后解释一下Java中的volatile关键字。小李volatile让变量可见防止指令重排保证线程安全。面试官不错掌握得很好。第二轮提问JVM与线程池面试官小李描述一下JVM的内存结构。小李JVM内存有堆、栈、方法区、程序计数器和本地方法栈。面试官能详细说明堆和栈的区别吗小李堆用来存对象栈用来存方法调用和局部变量。面试官很好。线程池的核心参数有哪些它们的作用小李核心线程数、最大线程数、任务队列、线程存活时间、拒绝策略。面试官回答不错。能说说常见的拒绝策略吗小李有AbortPolicy丢弃并抛异常、CallerRunsPolicy调用者执行、DiscardPolicy直接丢弃、DiscardOldestPolicy丢弃队列头等。面试官掌握得挺好。第三轮提问Spring生态与分布式技术面试官小李Spring和SpringBoot有什么区别小李Spring是个框架SpringBoot是用来快速搭建项目的自动配置。面试官很好。MyBatis的工作原理是什么小李MyBatis通过XML或注解映射SQL简化数据库操作。面试官不错。说说RabbitMQ消息队列的作用和特点小李RabbitMQ是消息中间件可以解耦系统用异步处理解决高并发。面试官很好。最后解释一下设计模式中的单例模式。小李单例保证一个类只有一个实例常用饿汉和懒汉两种实现。面试官非常好。我们面试到这里你先回去等通知。答案详解HashMap 工作原理及多线程问题HashMap是基于数组和链表或红黑树实现的哈希表。通过哈希函数计算元素的存储位置。多线程环境下扩容时可能导致链表形成环造成死循环因其线程不安全。ArrayList和LinkedList的区别ArrayList基于动态数组适合随机访问LinkedList基于双向链表适合频繁插入删除。volatile关键字保证变量在多线程间的可见性禁止指令重排但不保证原子性。JVM内存结构包括堆存对象、栈存方法调用和局部变量、方法区存类信息、程序计数器和本地方法栈。线程池参数及拒绝策略核心线程数、最大线程数、任务队列、线程存活时间拒绝策略包括AbortPolicy、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicy。Spring与SpringBootSpring是基础框架SpringBoot基于Spring提供自动配置和快速启动。MyBatis工作原理通过XML或注解映射SQL语句简化数据库访问。RabbitMQ消息中间件支持异步解耦缓冲高并发流量。单例模式保证类只有一个实例常用实现有饿汉式和懒汉式。

更多文章