面灵AI

字节国际化广告CRM一面

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

《面试题目》

  1. 做一下自我介绍。
  2. 除专业学习之外,平时有什么爱好?
  3. 实习中主要负责哪些工作?遇到过什么比较难的问题,如何解决?
  4. 报表生成偏向查询操作,为什么业务中需要用到事务?报表生成接口里面增删改查是放在同一个接口吗?
  5. 是否可以把写操作和读操作进行拆分,这种方案是否可行?
  6. 每个银行都要做业务开发,有没有做公共层提取?不同银行报表指标不一样如何处理?
  7. 报表是页面直接查看还是导出 Excel/PDF?
  8. 业务数据流水明细数据量级大概多大?
  9. 项目同时使用 MySQL 和 OceanBase,两种数据库分别适配什么业务场景?
  10. 项目中 Redis 的作用是什么?(你个人业务是否用到)
  11. SQL 多表联查优化思路是什么?
  12. 如何排查 SQL 是否命中索引,具体排查过程?
  13. 简单介绍你做的开源修改项目。
  14. setNX 是原子操作,什么场景下还会出现超卖、一人多单问题?
  15. 如何找到单向链表倒数第 K 个节点?
  16. 基础不牢、表达不清,如何提升?
  17. 入该岗位,还需要补充哪些知识?

《参考解析》

  1. 报表事务与读写拆分:事务用于保证同一业务操作中的写入一致性;纯查询报表不必为了查询本身开启事务,但如果报表生成同时更新快照、任务状态或审计记录,就要明确事务边界。读写拆分可行,但需要处理主从延迟、读己之写、故障切换和跨库事务,不能只把请求按读写类型机械分流。
  2. 多银行公共层:把认证、请求签名、重试、分页、错误码转换、落库和审计等稳定能力抽到公共层;银行差异通过适配器、策略或配置化指标定义隔离。公共接口应表达业务语义,避免把某一家银行的字段直接泄漏到上层。
  3. MySQL 与 OceanBase 选型:应结合现有兼容性、事务模型、数据规模、可用性、运维能力和迁移成本判断,而不是只比较单次查询速度。报表明细通常要关注分区、索引、归档和批量读取,避免把大结果集一次性加载到内存。
  4. SQL 联查与索引排查:先用 EXPLAIN/EXPLAIN ANALYZE 看访问类型、候选索引、实际扫描行数、回表和排序临时表,再检查连接列类型是否一致、联合索引是否符合最左前缀、谓词是否对列做了函数或隐式转换,并结合慢查询日志和真实数据分布验证优化效果。
  5. Redis 与 setNX:Redis 可用于缓存、分布式锁、幂等键、计数和热点数据。SET NX 只能保证抢锁动作原子,不能自动保证库存扣减、锁续期、释放归属和数据库写入的一致性;锁过期、客户端宕机、重试重复下单、库存校验与扣减分离等情况仍可能造成超卖或一人多单,因此还需要原子扣减、唯一约束、状态机和幂等校验兜底。
  6. 倒数第 K 个节点:使用快慢双指针。先让快指针领先慢指针 K 个节点,再同步向后移动,快指针到达链表尾部时慢指针就是目标节点。该方法只需一次遍历、O(n) 时间和 O(1) 额外空间,并应明确 K 越界和空链表的处理。