字节国际化广告后端二面:异步链路、Spring 与 SQL
- 轮次
- 二面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- Nacos 的架构和主要职责是什么?
- 抽象类与接口有什么区别,动态代理如何实现?
- Lambda 与函数式接口是什么,没有 Lambda 时如何表达同样逻辑?
- 怎样关联主线程和线程池中的日志?
- Java 异步任务有哪些实现方式,异常怎样传播?
- Spring 常见注解和 Value 注解有哪些用法?
- 在 Bean 初始化之前执行逻辑,可以使用什么扩展点?
- Spring Boot 如何启动,怎样实现 Starter?
- MySQL 的 CHAR 与 VARCHAR 有什么区别,字符零如何存储?
- 索引没有被有效利用是什么意思,慢 SQL 怎样排查?
- 只能买卖一次时,怎样求股票交易的最大利润?
- 平时如何学习,怎样看待代码生成工具?
《参考解析》
日志关联
为请求生成或接收 traceId,提交异步任务时捕获必要的日志上下文,在工作线程执行前安装,执行结束后恢复原上下文。线程池会复用线程,漏掉清理可能把两个请求的日志串在一起;传递一个 traceId 也不等于自动获得完整的跨服务追踪。
股票最大利润
从左到右维护之前最低价格,用当前价格减最低价更新最大收益,再更新最低价。不要先求整个数组的最小值和最大值,因为买入必须先于卖出。允许不交易时,初始收益为零,持续下跌返回零。
Bean 扩展点
如果要在初始化回调前处理实例,可以考虑 BeanPostProcessor 的前置方法;如果要修改 Bean 的定义或配置,则是更早的阶段。先说清修改对象还是修改定义,避免把所有扩展需求都塞进同一个钩子。