8.4 小厂 Java 全栈 一面
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 一、面试基本情况
- 面试形式:腾讯会议线上面试
- 参与人员:HR + 技术面试官
- 面试时长:约30分钟
- 前置流程:HR先沟通实习时间、薪资、到岗情况,随后自我介绍,进入正式技术面试
- 面试侧重:高并发、服务可用性、工程化落地、项目底层细节,没有过多询问基础八股
- 二、面试提问 & 作答情况(完整还原
- 一)第一个高并发核心项目
- MySQL for update 行锁升级表锁场景
- 面试官提问:哪些情况会导致 for update 行锁升级为表锁?
- 我的作答:仅答出查询未走索引这一种情况,回答不完整。
- 暴露问题:对 MySQL 锁机制、行锁失效场景掌握不全面,底层原理不扎实。
- Redis 聚合方案设计与容错
- 面试官提问
- 项目中为什么选用 Redis 做数据聚合?
- 若 Redis 宕机,是否会出现数据问题?如何保障稳定性?
- 我的作答:坦诚承认该模块存在设计短板,说明当前业务非核心、容错要求不高,但没有给出完整的兜底、降级、容错方案。
- 暴露问题:只实现功能,缺少高可用、故障兜底、异常防护的工程化思考。
《参考解析》
- Redis常用于缓存、分布式锁和计数。缓存与数据库更新通常采用“先写数据库、再删除缓存”,并通过重试、延时双删或消息补偿处理删除失败。
- MySQL索引通常使用B+树,叶子节点按顺序连接,适合范围查询;设计索引时结合选择性、最左匹配原则和执行计划,避免无效索引与回表开销。
- 并发问题应先明确共享状态和一致性边界,再选择锁、CAS或队列。线程池需要根据任务是CPU密集还是IO密集设置核心线程数、队列容量和拒绝策略,并监控活跃数与队列长度。