大厂 Java 面试实录:谢飞机大战严肃面试官

发布时间:2026/10/30 9:24:42

大厂 Java 面试实录:谢飞机大战严肃面试官 大厂 Java 面试实录谢飞机大战严肃面试官场景互联网大厂终面。会议室里空气很冷面试官表情更冷。谢飞机抱着简历坐下努力把自己伪装成“懂点 Java 的人”。第一轮Java 核心与集合面试官先来个简单的。重载和重写有什么区别谢飞机重载是同一个类里方法名一样、参数列表不同重写是子类对父类方法进行覆盖方法签名要一致返回值可以协变。面试官嗯这题答得还行至少没有把“覆盖”说成“复制粘贴”。面试官那ArrayList为什么查询快插入某些位置又慢谢飞机因为它底层是数组支持下标随机访问所以查找快但中间插入或删除时要移动后面的元素所以慢。面试官不错像是认真学过。面试官那HashMap为什么能做到接近 O(1) 的查找谢飞机先算hashCode再做扰动和取模定位桶位置桶里如果冲突了再靠链表或者红黑树去找目标。面试官嗯方向对。面试官那你说说HashMap的扩容机制。谢飞机它会先把容量翻倍然后把所有元素跳一遍舞重新分配到新桶里……应该是这样吧面试官行了知道你在努力活跃气氛了下一题。面试官如果两个对象要放进HashMap里equals和hashCode什么关系谢飞机我感觉它俩像身份证和门牌号先看门牌号再看身份证能一起判断是不是同一个人。面试官比喻糙了点但勉强能听。第二轮JUC、多线程与线程池面试官现在进入高并发场景。比如秒杀下单你怎么理解volatile谢飞机volatile主要保证可见性变量一改其他线程能立刻看到它还能一定程度上禁止指令重排序。面试官这个回答可以说明你至少知道线程不是“共用脑子”。面试官那synchronized和ReentrantLock有什么区别谢飞机synchronized是 JVM 层面的关键字简单好用自动加锁解锁ReentrantLock是 API 层面的锁功能更灵活能尝试获取锁、可中断、支持公平锁还能配合条件队列。面试官很好终于不是“都能锁住”这种回答了。面试官如果订单创建后要异步发短信、发优惠券、记日志你会怎么设计线程池谢飞机我会先分析任务类型。短信和日志是 I/O 型任务可以用较多线程如果是 CPU 型计算线程数不要太多。线程池我会关注核心线程数、最大线程数、队列大小、线程工厂、拒绝策略。面试官继续。面试官那你说说线程池满了怎么办谢飞机这个……可以把拒绝策略改成“谁提交谁自己干”这样系统绝不会拒绝。面试官你这是把生产事故变成了个人崩溃。面试官再来AQS是什么谢飞机AQS 就是“俺也看不懂的同步器”面试官很好看来你对自己很诚实。第三轮JVM、Spring、SpringBoot、MyBatis、Dubbo、RabbitMQ面试官最后一轮系统设计相关。你先说说 JVM 运行时内存区域。谢飞机有程序计数器、Java 虚拟机栈、本地方法栈、堆、方法区。线程私有的是计数器和栈线程共享的是堆和方法区。面试官可以基础扎实。面试官那对象一般在哪里分配垃圾回收主要回收什么谢飞机对象主要在堆上分配垃圾回收回收不再被引用的对象。GC 会通过可达性分析判断对象是否存活。面试官嗯。面试官Spring 里 Bean 的生命周期你说一下最好结合我们项目里的“订单服务”。谢飞机Spring 容器先实例化 Bean再进行属性填充接着调用各种Aware然后执行 BeanPostProcessor 的前置处理初始化方法最后放入容器容器销毁时还会触发销毁回调。面试官不错思路清楚。面试官那 SpringBoot 为什么开发快谢飞机因为它减少了大量手动配置自动配置会根据类路径和环境条件装配 Bean内嵌 Tomcat 也省掉了部署外部容器的麻烦。面试官这个回答挺标准。面试官MyBatis 里为什么有时候你写了 SQL结果对象字段却映射不上谢飞机可能是字段名和属性名不一致没开下划线转驼峰也可能是resultMap没配好或者 SQL 别名写错了。面试官还行至少知道不是“数据库闹脾气”。面试官我们业务里支付成功后要通知多个系统为什么用 RabbitMQ谢飞机因为可以解耦、削峰、异步。支付成功后先把消息发到 MQ订单、积分、短信系统各自消费如果某个系统慢也不会直接拖垮主流程。面试官很好那消息丢了怎么办谢飞机这个……丢了就说明它很自由。面试官你自由得有点危险了。面试官最后一个Dubbo 和直接 HTTP 调用相比优势是什么谢飞机Dubbo 更偏向 RPC接口调用更像本地方法支持注册中心、负载均衡、超时、重试、集群容错等适合内部服务间调用。面试官行今天就到这儿吧。你先回去等通知后续有消息我们会联系你。谢飞机好的我回去等一个“有消息”的消息。面试题答案详解1. Java 核心知识重载 vs 重写重载同一个类中方法名相同参数列表不同。重写子类重新实现父类方法方法名、参数列表、返回值规则基本保持一致。重写遵循里氏替换原则便于多态。equals 和 hashCodehashCode()用于快速定位对象所在的桶。equals()用于判断两个对象内容是否相等。约定如果两个对象 equals 相等那么 hashCode 必须相等。反过来不一定成立hashCode 相等不代表对象一定相等。放入HashMap、HashSet时这两个方法非常关键。2. ArrayList为什么查询快底层是动态数组支持通过下标随机访问。访问元素时间复杂度接近O(1)。为什么插入删除慢在中间插入或删除元素时需要移动大量元素。最坏情况复杂度是O(n)。扩容机制底层数组容量不够时会进行扩容。旧数组元素复制到新数组中通常是按一定比例扩容以减少频繁扩容带来的开销。3. HashMap快速查找原理调用 key 的hashCode()。进行扰动计算降低 hash 冲突。通过取模或位运算定位到桶。在桶内查找目标元素。冲突解决JDK 8 前主要是链表。JDK 8 后当链表过长时会转换成红黑树提高查询效率。为什么线程不安全多线程同时修改时可能出现数据覆盖、结构混乱、扩容异常等问题。如果需要并发 Map可考虑ConcurrentHashMap。4. volatile保证可见性一个线程修改后其他线程能立即看到。一定程度保证有序性禁止部分指令重排序。不保证原子性比如count不是原子操作。5. synchronized 和 ReentrantLocksynchronizedJVM 内置关键字。自动加锁和释放锁。使用简单适合一般同步场景。ReentrantLock显式锁。功能更丰富可中断、可尝试获取、可设置公平锁、支持多个条件变量。适合更复杂的并发控制。6. 线程池核心参数corePoolSize核心线程数。maximumPoolSize最大线程数。keepAliveTime非核心线程空闲多久回收。workQueue任务队列。threadFactory线程工厂。handler拒绝策略。使用场景异步发短信、发邮件、生成报表、日志归档等。I/O 型任务通常可适当增加线程数。CPU 型任务一般不宜开太多线程。拒绝策略AbortPolicy直接抛异常。CallerRunsPolicy提交任务的线程自己执行。DiscardPolicy直接丢弃任务。DiscardOldestPolicy丢弃队列中最老的任务。7. JVM运行时内存区域程序计数器记录当前线程执行到哪条字节码。Java 虚拟机栈存放方法调用栈帧。本地方法栈服务于 native 方法。堆对象主要分配在这里。方法区存储类信息、常量、静态变量等。垃圾回收通过可达性分析判断对象是否还可被引用。常见回收算法有标记清除、复制、标记整理等。年轻代、老年代会采用不同的回收策略。8. SpringBean 生命周期实例化属性填充Aware 回调BeanPostProcessor 前置处理初始化BeanPostProcessor 后置处理放入容器容器关闭时销毁事务失效常见原因同类内部自调用没有经过代理对象。方法不是public。异常被捕获吞掉导致事务无法回滚。数据源或事务管理器配置不正确。9. SpringBoot核心优势是自动配置和约定大于配置。通过条件装配自动根据类路径、配置文件、环境信息创建 Bean。内嵌 Tomcat/Jetty简化部署。非常适合快速构建微服务项目。10. MyBatis映射不上字段的原因数据库字段和 Java 属性名不一致。没有开启驼峰映射。resultMap配置错误。SQL 别名不正确。关键点#{}是预编译参数占位安全。${}是字符串拼接存在 SQL 注入风险。11. DubboDubbo 是高性能 RPC 框架适合内部服务调用。支持注册中心、负载均衡、超时、重试、集群容错。相比直接 HTTP 调用通常在接口治理和调用效率上更适合微服务内部通信。12. RabbitMQ为什么使用 MQ解耦生产者和消费者分开。削峰高并发流量先进入消息队列缓冲。异步提升主流程响应速度。关键机制ACK 确认消费者处理成功后确认消息防止消息丢失。重试消费失败后可重投或进入死信队列。持久化交换机、队列、消息可做持久化提升可靠性。死信队列处理多次消费失败或过期消息。典型业务场景支付成功后通知订单、积分、短信等多个系统。订单创建后异步发送邮件。秒杀活动削峰填谷。今天的面试就到这里。面试官回去等通知吧。谢飞机好的我会把“等通知”三个字等成一个系统。
延伸阅读

更多相关文章

2026/10/30 9:23:58

实时进度查询系统架构演进:从直接查询到预聚合的实战方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:41:18

广州 AI 搜索优化服务商:五家候选评估

标题:广州 AI 搜索优化服务商:五家候选评估 AI 搜索与智能问答正在成为用户获取信息的重要入口,企业能否被豆包、DeepSeek、文心一言等 AI 产品准确引用,直接影响品牌曝光与获客效率。广州已有多家服务商开展 AI 搜索优化相关业务…

2026/10/30 9:22:04

DeepSeek-V4-GGUF量化食谱大公开:从Q2_K到IQ2_XXS的参数优化策略

DeepSeek-V4-GGUF量化食谱大公开:从Q2_K到IQ2_XXS的参数优化策略 DeepSeek-V4-GGUF是针对DS4推理引擎优化的量化模型集合,提供从Q2_K到IQ2_XXS等多种参数优化策略,帮助用户在不同硬件配置下实现高效的文本生成能力。本文将详细解析这些量化方…

2026/10/30 9:22:04

Scuttlebutt: 基于社交网络的数据同步协议

Scuttlebutt: 基于社交网络的数据同步协议 Scuttlebutt 是一种基于社交网络的数据同步协议,旨在解决分布式系统中的数据同步问题。该项目最初由 Dominic Tarr 开发,并在 GitCode 上开源。 什么是 Scuttlebutt? Scuttlebutt 是一个轻量级的、去…

2026/10/30 9:22:04

adb logcat 命令使用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 9:22:04

从零搭建语音工作台:录音、降噪、变声与转写全流程解析

1. 从零搭建一个语音工作台:VoiceStudio 到底在解决什么问题第一次看到 VoiceStudio 这个名字,我脑子里蹦出来的不是某个具体产品,而是一类需求:手头有一堆录音素材,想快速剪出能用的音频,又不想开庞大的专…

2026/10/30 9:22:04

Java航空订票系统源码解析:并发库存扣减与订单状态机设计

简介:这份资源是基于Java的航空订票管理系统设计源码,面向学习Java桌面开发、需要课程设计或毕业设计参考的学生与开发者,帮助解决票务预订、退票、账户管理等业务场景的实现问题。压缩包共33个文件,约2.87MB,以17个Ja…

2026/10/30 9:17:03

车载MCU系统性测试:ISO 26262驱动的硬件-软件协同验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑