面灵AI

字节国际化广告后端二面:异步链路、Spring 与 SQL

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

《面试题目》

  1. Nacos 的架构和主要职责是什么?
  2. 抽象类与接口有什么区别,动态代理如何实现?
  3. Lambda 与函数式接口是什么,没有 Lambda 时如何表达同样逻辑?
  4. 怎样关联主线程和线程池中的日志?
  5. Java 异步任务有哪些实现方式,异常怎样传播?
  6. Spring 常见注解和 Value 注解有哪些用法?
  7. 在 Bean 初始化之前执行逻辑,可以使用什么扩展点?
  8. Spring Boot 如何启动,怎样实现 Starter?
  9. MySQL 的 CHAR 与 VARCHAR 有什么区别,字符零如何存储?
  10. 索引没有被有效利用是什么意思,慢 SQL 怎样排查?
  11. 只能买卖一次时,怎样求股票交易的最大利润?
  12. 平时如何学习,怎样看待代码生成工具?

《参考解析》

日志关联

为请求生成或接收 traceId,提交异步任务时捕获必要的日志上下文,在工作线程执行前安装,执行结束后恢复原上下文。线程池会复用线程,漏掉清理可能把两个请求的日志串在一起;传递一个 traceId 也不等于自动获得完整的跨服务追踪。

股票最大利润

从左到右维护之前最低价格,用当前价格减最低价更新最大收益,再更新最低价。不要先求整个数组的最小值和最大值,因为买入必须先于卖出。允许不交易时,初始收益为零,持续下跌返回零。

Bean 扩展点

如果要在初始化回调前处理实例,可以考虑 BeanPostProcessor 的前置方法;如果要修改 Bean 的定义或配置,则是更早的阶段。先说清修改对象还是修改定义,避免把所有扩展需求都塞进同一个钩子。