发布时间:2026/9/6 4:47:10
大厂 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/9/6 4:47:10

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

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

2026/9/6 4:42:10

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

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

2026/9/6 5:47:13

数据结构:非比较排序:计数排序

前面我们介绍的冒泡、选择、插入、归并、快排等排序算法,本质上都属于比较排序——它们通过元素之间的两两比较来决定先后顺序。本篇我将带大家认识一种另辟蹊径的非比较排序算法——计数排序(Counting Sort),它不靠比较,而是借助数组下标直接…

2026/9/6 5:47:13

关店前最后一晚,我把验证码全部过了一遍

关店前最后一晚,我把验证码全部过了一遍 一个关店卖家的告别: 「决定关店那天,我把店铺里最后的链接都下架了。下架也弹验证,我一个个过,过得很平静。旁边老婆问:都要关了还这么认真干嘛?我说&…

2026/9/6 5:47:13

数据库工程:索引策略落地避坑实战指南‌

数据库工程:索引策略落地避坑实战指南‌ 2026年4月安徽合肥轨道交通3号线南延线的运维管理系统,在早高峰运维数据上报时段突然出现了大面积的接口超时,全线12个站点的运维人员上报完巡检数据之后,系统提交按钮转了半分钟都没有反应…

2026/9/6 5:47:13

网络原理:初识网络的一些基本概念

IP地址网络通信的本质是计算机之间数据的传输。网络里有很多主机,因此需要知道数据从哪个主机发出,哪个主机接收,所以需要IP地址定位主机。IP地址也可以标识网络中的设备,如路由器。格式:32位二进制,一般分…

2026/9/6 5:47:13

Java PrintStream 详解:从基础用法到实战技巧

1. 引言在 Java 开发中,PrintStream 是一个极其常用的输出流类。无论是控制台打印、日志输出还是文件写入,PrintStream 都扮演着重要角色。本文将深入讲解 PrintStream 的核心概念、常用方法以及实战中的注意事项。2. 什么是 PrintStreamPrintStream 是 …

2026/9/6 5:42:13

FANUC机器人CC-Link从站与三菱PLC主站通信配置与故障排查指南

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

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/6 0:06:59

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/6 0:06:59

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/6 0:06:59

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/5 2:45:13

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/5 2:30:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/5 2:46:50

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…