快手后端开发实习二面面经
面试题目
- 自我介绍,包括技术栈和现状
- 项目介绍
- 这个项目不用AI能不能搞定?这个项目中AI使用的必要性是什么?
- 你为什么选择Milvus作为向量数据库?Milvus是自己搭建的吗?
- 你在Milvus中使用了什么索引?
- 你的嵌入向量是多少维度的?
- LangChain和LangGraph不是两个框架吗?你的项目中到底使用了哪个框架?
- 你这个项目中使用的大模型是哪个?
- 项目的效果是如何评测的?
- 你具体是怎么评估系统的准确率的?
- 你知道现在一般的微调手段有哪些吗?
- 微调有具体实践过吗?怎么做的?
- 比对一下SFT和RL的区别
- RL的具体算法知道哪些?
- 你说的这几种算法一般来说用哪个合适?
- MySQL锁机制你知道吗?有哪些锁?
- 唯一索引和普通索引有什么区别?
- 算法题:排序k个升序链表。写代码;并分析时间复杂度;除了用的方法外还有没有其他解决方案。
- 能实习多久?从几月份到几月份?
参考解析
- Milvus索引与维度:Milvus常用索引包括IVF_FLAT、HNSW、Scalar等。维度通常由Embedding模型决定(如OpenAI 1536维,BERT 768维),维度越高检索越精准但耗时越长。
- SFT vs RL:SFT(监督微调)通过指令微调模型输出格式与风格;RL(强化学习,如PPO、DPO)通过人类反馈优化模型对齐目标,减少幻觉,提升复杂推理能力。
- MySQL锁机制:包含全局锁、表锁(Table Lock)、行锁(Row Lock)。行锁分为共享锁(S锁)和排他锁(X锁),InnoDB通过MVCC配合锁实现事务隔离。
- 唯一索引 vs 普通索引:唯一索引强制要求字段值唯一,且对于查询性能,普通索引找到满足条件后需继续查找,唯一索引找到第一个即停止,因此性能略优。
- 排序k个升序链表:最优解为分治法或利用优先队列(小顶堆),时间复杂度为O(N log k),其中N为所有节点总数,k为链表个数。