搜狐畅游秋招面经:Linux 排障与数据处理系统
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- CPU 很高但吞吐没提升,怎样定位?
- 类加载器如何改变双亲委派策略,会带来哪些风险?
- Hive SQL 从提交到执行有哪些阶段?
- Spark 的窄依赖、宽依赖与 Stage 划分是什么关系?
- AQE 的分区合并、倾斜处理和 Join 转换怎样生效?
- 反射调用有哪些开销,MethodHandle 与 invokedynamic 有什么作用?
- Hadoop NameNode 为什么采用专门的元数据管理方式?
- Observer NameNode 与 Standby NameNode 有什么区别?
- 反压时 Flink Checkpoint Barrier 怎样传播?
- 为什么 Watermark 不能彻底消除乱序数据问题?
- Kafka Exactly-Once 为什么不等于所有外部副作用只发生一次?
- 消费组再均衡为什么会引起消费抖动?
《参考解析》
高 CPU 的定位顺序
先看哪个进程、哪个线程在消耗 CPU,再把热点线程与调用栈对应起来。Java 服务中既要看业务循环,也要看 GC、自旋和序列化;数据任务则要看是否只有少数分区特别慢。优化之前先拿到热点证据,避免仅靠增加线程把竞争放大。
消息一致性的范围
Kafka 事务能协调协议覆盖范围内的消息与消费进度,但不会自动把一次普通 HTTP 调用或外部数据库写入纳入事务。若外部写成功后进程退出、位点尚未提交,重试仍会再次执行。业务侧需要幂等键、唯一约束或能参与一致性协议的输出端。
乱序与迟到
Watermark 表达的是事件时间进度的估计,不是证明以后绝不会来更早的数据。窗口仍要定义允许迟到多久、迟到后更新结果还是送往旁路。时效和完整性之间的取舍要结合业务,而不是期待一个参数同时消除延迟与遗漏。