字节TikTok一面8.11
1. 如果你这边准备好了的话,可以先简单地做一个自我介绍。2. 那你现在这边实习的话,后面怎么没有考虑在蚂蚁转正?3. 你刚才也提到几个在蚂蚁的实际项目,我就简单了解一下。你说第一个项目是支付相关的,对吧?然后我看你这里也做了一些事情,想了解一下里面具体的实现细节。你在这个项目里面,觉得最难的一件事情是什么?4. 所以这个看起来是之前发现了这类问题,对吧?我看你说线上存在指令处理断点,导致对账不平
1. 如果你这边准备好了的话,可以先简单地做一个自我介绍。
2. 那你现在这边实习的话,后面怎么没有考虑在蚂蚁转正?
3. 你刚才也提到几个在蚂蚁的实际项目,我就简单了解一下。你说第一个项目是支付相关的,对吧?然后我看你这里也做了一些事情,想了解一下里面具体的实现细节。你在这个项目里面,觉得最难的一件事情是什么?
4. 所以这个看起来是之前发现了这类问题,对吧?我看你说线上存在指令处理断点,导致对账不平,最终导致了一些资金损失。那这里的对账不平是怎么发现的?
5. 所以是新增了一些清算指令。然后我看你这里提到了使用悲观锁进行事务原子性的保障,那你能简单讲一下这里的悲观锁是怎么实现的吗?
6. 能讲一下追扣这一部分是怎么实现的吗?
7. 那你提到这个本地任务表,它是本地缓存还是数据库?
8. 我看你这里还提到了一个并行的逻辑,就是并行编排整个补扣链路的流程。那这里我理解应该是有很多原子的子任务,对吧?
9. 你这个本地任务表其实是一个个子任务,然后这个任务不是在一个线程里处理的,对吧?每一个子任务可能会有部分成功或者部分失败的情况。那这时候你是怎么保证任务最终状态一致的?比如说,是只对失败的任务进行重试,还是所有任务都重新尝试?
10. 所以你刚才这里提到的是每一个子任务的推进,还是整个主流程的推进?
11. 所以这里的并行编排,是可以自己编排整个任务的生命周期,还是固定的一套流程?
12. 前面你也有提到全部退款和部分退款,对吧?那你这里提到使用分级的防重设计,为什么要做多级?
13. 这两级使用的存储都是一样的,是吧?
AI Workflow项目
14. 你再讲一下这个 AI Workflow 项目。我听到你前面说,它是为了让 AI 自动把用户提出的需求从编码到测试全流程落地,对吧?那你在这里面主要做了哪些事情?
15. 所以相当于这个中断能力,是在状态机里新加了一个状态,是吧?
16. 人工暂停以后,比如说我们日常也会使用一些与 AI Agent 交互的能力,也会尝试中断任务,然后补充一些修改和调整。那如果用户没有及时输入新的指令,比如说把这个对话放在那里,它会一直占用 Agent 的资源吗?
17. 那在交互上会不会有一些奇怪的表现?比如说用户点了中断,但很久没有输入新的指令,后台又一直在运行这个任务。假设最后任务已经完成了,那用户侧的体验是怎么样的?
18. 你有没有想过,为什么后台任务还要继续运行?有没有其他的实现方式?
19. 当时在做这个设计和选型的时候,有没有进行过一些考量和对比?还是说只是觉得这样做更贴合你们目前的架构设计?
20. 当你更多地参与到这个项目以后,可能现有项目确实存在一些现状,在上面做迭代也很难进行完全颠覆性的改动。如果让你重新设计一套新的实现方式,你有没有一些更好的考虑?
21. 现在你们实现的这套 Workflow 里面,其实预设了一些环节,对吧?而不是完全由 AI 主动生成定制化的流程。可能对于不同的需求,AI 根据自己的理解生成的 Workflow 模板也不一样,明白这个意思吗?
22. 不一定是模板,就是需要拆分出来的环节,以及一些原子化节点,可能会存在差异。
RAG个人项目
23. 看这个项目的话,这是你自己做的一个项目吗?
24. 我看里面提到了比较多的数据指标提升,可以简单讲一下你在数据这方面做了哪些事情吗?
25. 你是怎么想到要通过这种方式实现的?你在做之前肯定会进行一些评估,对吧?为什么要使用这种方式?使用这种方式以后,指标上是否会有提升?你在初期是怎么进行评估的?
MySQL基础
26. 我再问一些比较基础的问题。MySQL 这一块你比较熟悉和了解吗?
27. 你可以简单讲一下 MySQL 的索引使用的是什么数据结构。
28. 你还了解过其他的数据结构吗?MySQL 为什么使用 B+ 树,没有使用 B 树或者跳表这种数据结构?
29. 在实际项目和实习经历中,你有使用过 MySQL 吗?有没有遇到过慢查询的情况?
30. 如果遇到慢查询,你会怎么进行排查?
31. 如果有一些查询完全没有办法实现索引覆盖,而数据库增加太多索引肯定也不是一个好的设计。假设数据库里面有二十多个字段,索引可能存在 (A, B)、(A, C, B) 这样的组合,它是一个笛卡尔积式的组合,也没有办法为所有字段组合都建立索引,对吧?如果确实存在无法进行索引覆盖的查询,在设计上可以做哪些调整?
32. MySQL 的一些日志原理,你有了解吗?
33. 你可以简单讲一下 MySQL 的 Binlog,它的作用是什么?
Redis基础
34. 看你对 Redis 也有一些了解,对吧?
35. 那简单讲一下,Redis 支持哪些过期策略?
36. Redis 可以为 Key 设置过期时间。在实际执行中,Redis 需要判断哪些 Key 已经过期,它应该有一些扫描和删除策略。你了解其中的过期删除策略吗?
算法题
37. 代码的话大概有15到20分钟,可能写一个主函数就可以。如果时间有富余,可以自己再写一些输入和输出,测试一下 Test Case。
38. 这个二叉树的输出,你不一定要把这个结构输出出来,直接打印后序遍历结果就可以。
39. 简单讲一下这个题的思路。
40. 我看你第一次没有写对,是吧?
反问环节
41. 候选人:能问一下咱们具体做什么业务吗?
面试官:我们做的是海外内容审核相关的业务,比如 TikTok 上的一些视频、图文,发布以后需要进行内容审核。目前还是以人工审核为主,同时也在引入 AI 能力。前面会有一个机审环节,由 AI 生成审核结果,再与人工审核的质量进行对比。当 AI 审核的成本和准确率都优于人工时,会逐步使用 AI 替代人工审核。
目前主要包含几个方向:
- AI 审核能力:引入 AI 辅助或替代人工完成内容审核;
- 审核分发策略:根据 Case 的类型和难度,将其分发给更合适的审核人员;
- 审核流程编排:通过 Workflow 自定义审核流程。例如简单 Case 可以直接根据模型置信分完成机审,复杂 Case 则可以配置多轮审核、多人投票等策略。
42. 候选人:方便问一下组里是什么工作节奏吗?
面试官:目前组里的整体强度还可以。大概从上班时间来看,晚上八点以后基本没有什么大的事情需要处理。
43. 面试官补充:后续面试结果会由 HR 沟通。如果还有后续面试流程,HR 也会继续进行邀约。