面灵AI→

招银网络二面+HR面:FullGC排查与MQ异步

轮次
二面
时间
2026-09
来源
牛客网

《面试题目》

二面:

  1. Full GC 排查思路
  2. 系统架构画图
  3. MQ 如何异步处理
  4. 项目内容(问得较多)

HR 面:

  1. 询问一些基本情况

《参考解析》

Full GC 排查思路:按「先确认现象,再定位对象,最后改参数或改代码」三步走。第一步确认频率和影响面:看 GC 日志(-Xlog:gc* 或老版本的 -XX:+PrintGCDetails),用 jstat -gcutil <pid> 1000 持续观察,重点看 FGC 次数是否持续增长、每次 Full GC 后老年代占用是否回落——如果回落说明是对象生命周期问题,如果不回落就是内存泄漏或老年代太小。同时看业务指标(RT 抖动、TP99 上升)确认因果。第二步定位对象:用 jmap -histo:live <pid> | head 看占用最多的类,用 jmap -dump 或 -XX:+HeapDumpOnOutOfMemoryError 抓堆转储后用 MAT 分析支配树和 GC Roots 引用链,找出是谁在持有;也可以用 jcmd <pid> GC.class_histogram。第三步按原因整改。常见原因和对应手段:老年代/堆太小或晋升过快 → 调整 -Xms/-Xmx(建议两者相等避免动态扩容抖动),必要时调 -XX:SurvivorRatio、-XX:MaxTenuringThreshold 或 -XX:PretenureSizeThreshold 避免大对象直接进老年代;元空间不足 → 看 -XX:MaxMetaspaceSize 和类加载器泄漏(热部署、动态代理生成类);显式触发 → 排查代码或框架里的 System.gc()(可加 -XX:+DisableExplicitGC);G1 场景下看 -XX:MaxGCPauseMillis、InitiatingHeapOccupancyPercent 和 Humongous 对象(大数组会占连续 region,直接触发并发周期甚至 Full GC)。最后是验证:改完压测对比 Full GC 频率和单次停顿时长,别只看「不报了」。

系统架构画图:面试官多半是想看你能不能把一个项目讲成清晰的分层结构。建议固定套路:自上而下画「客户端(Web/App)→ 接入层(Nginx/SLB、限流)→ 应用层(按业务拆的服务,标出同步 RPC 与异步 MQ 两条链路)→ 中间件(缓存 Redis、消息 MQ、注册中心/配置中心)→ 存储层(MySQL 主从、分库分表、对象存储)→ 基础设施(监控、日志、告警)」。画的时候要标三样东西:数据流向(箭头)、关键选型的原因(一句话)、以及容量与可用性设计(QPS 量级、缓存命中率、主从切换、降级开关)。如果项目里做了异步化,就把「同步链路耗时 X ms,异步后降到 Y ms」标在图上,比空谈架构有价值。手边没白板时用文字分层 + 箭头编号写也完全可以。

MQ 如何做异步处理:核心是把主流程里「非必须同步完成」的动作挪到消息队列。设计上要回答五个问题。一是拆分边界:什么该异步——发短信/邮件、写操作日志、生成报表、积分发放、下游数据同步;什么绝不能异步——扣款、库存扣减这类强一致的核心动作。二是生产端:本地事务提交后再发消息,用本地消息表 + 定时补偿或 RocketMQ 事务消息保证「业务成功则消息一定发出」,避免事务回滚了消息已发的脏数据。三是消息可靠性:broker 持久化、发送方 confirm、消费方手动 ack,失败进重试队列(指数退避)再进死信队列并告警。四是消费幂等:以业务唯一键建唯一索引或去重表,或让状态机做版本校验,保证「至少一次」投递下的结果正确。五是顺序与积压:需要顺序时按业务键哈希到同一队列单消费者;积压时靠扩容消费者、批量消费、降级丢弃非关键消息来处理。落地后再补充一致性口径:整体是最终一致,用对账任务兜底不一致数据。

无实习怎么讲项目:原帖作者提到「没有实习的痛苦」,这是这类岗位的常见减分项,但可以用项目深度补。把课程设计、竞赛、开源、自学的项目按「业务背景 → 我的角色 → 技术难点 → 量化结果」讲,重点放在你能解释清楚的设计决策上(为什么选这个中间件、为什么这样分表、压测数据多少),并且提前准备一两个「踩坑并解决」的故事。面试官问「项目内容较多」时往往是在找能深挖的点,主动给钩子比被动等问更好。

HR 面常见问题:基本情况类问题(籍贯、家庭、期望城市、能否接受加班、是否有其他 offer、期望薪资)要提前统一口径:城市意愿要明确,薪资给区间并说明依据,其他 offer 如实说但强调对本公司的意向。没有实习经历时,HR 大概率会问「这段时间在做什么」,提前准备好学习与研究安排的说明。

反问:二面适合问团队的技术栈与业务方向(比如「这个部门主要做哪条业务线、用的是什么中间件」),HR 面适合问培养机制和流程节奏。两轮都避免一上来就问薪资和加班。