前言

处女面,可能因为有实习经历所以拷打项目非常多,手撕有惊无险。

内容

自我介绍

  • Q. 介绍一下自己
  • A. 学校背景,吸取上次经验,先简要介绍实习经历,看看对面反应

    介绍过程有持续反应,看来是懂技术懂业务的

业务内容介绍

  • Q. 我对你的项目还是不太熟悉,先介绍一下背景和过程中遇到的问题
    刚才介绍太短了,忘记把背景加入进去了,面试官给了一次机会
  • A. 介绍项目背景,根据要求,做了一个基于知识框架和知识图谱构建的智慧学习平台,通过知识绑定能够串联起来学习过程,通过 LangChain 能够将死知识变成活知识。
  • A. 首先是 WebRTC,我之前是做 RTMP、RTP 这块的,我们项目中又需要 WebRTC,这里应该补充:所以我快速学习了这方面的知识,我做了架构演进,提升了多少。
  • A. 然后就是 ShareDB 这块,就像是一块白板,上面储存了许多共享变量,如果大家都想修改它,就会引发冲突;因为我们之前做的是 Socket.io,如果想要加多个节点,就会出现问题。因为 Socket.io 需要 Http 长轮询,我印象中是 200 200 201 三个响应。如果做 LoadBalance,那么就会出现问题。
  • A. 其次,我们的网站访问量很大,之前也是遇到了 CC 攻击,说了一大堆抗 CC 攻击的东西

手撕代码

  • Q. 我们这块主要是 C++、Python 相关的,你主要会哪些语言
  • A. C++、Python 只能说能用,我主要会 Java、JS、TS
  • Q. 写一个 LRU,输入 Capacity 作为容量,实现 get、set 方法
  • A. 用了个 HashMap 存 key,value 遍历差点没写出来,还得多练

反问

  • A. 咱们的业务流程怎样
  • Q. 主要是分两大块,一块是车载 LLM 相关的,一块是训练验证 LLM 相关的后台项目。
  • Q. 你主要负责的应该是后台项目,这个其实没有像你那边业务的那样需要支撑高并发,其实更加侧重于自动化和验证这块,讲了一些 LLM 训练过程可能遇到中断的问题。估计是需要冗余设计,随时更换训练的显卡之类的,这样一个调度过程
  • A. 我如果能进入咱们业务部门,我会负责什么工作
  • Q. 后台项目其实是个全栈开发,前端没什么难度,能用就行,一般是 AI 帮写,后端就是你比较熟悉的了。

复盘

因为没有直接问面评,我只能通过他的行为举止猜测。

首先是 ShareDB 那块和 RocketMQ 那块,他没有往细了问,我这边也忘记了一些细节:

OT(Operational Transformation)算法是一种用于支持实时协作编辑的技术,允许多个用户同时编辑同一文档,并确保所有用户的视图保持一致。OT 算法最初是为了解决在分布式环境中协作编辑文本时的并发冲突问题而开发的。它最早是由 Concurrency Control in Groupware Systems 的这篇 论文 中提出。在随后的许多年里,OT 算法进行了许多小分支上的改进,不过核心逻辑一直很清晰,目前主要用于在线文档编辑领域。

不考虑数据中间态一致性,只保证最终一致性即可。使用 RocketMQ 是为了集群消费和消息削峰设计的。