百度提前批后端二面 —— 体系化深挖,受益匪浅

这次想聊聊当时百度提前批二面的感受。25 届校招,总监面在后,这场是第二轮技术面,后面知道是隔壁组的 Leader,聊完这个 ld 立马主动加了我的微信。

面试一开始就让我先自我介绍,然后围绕我在滴滴做的 “素材推送系统重构” 项目深挖,基本是从业务背景、性能瓶颈、并发控制到架构优化一路追问。面试官的切入点很有体系感 —— 从我当前的局部优化聊到整体架构解耦,再引申到 “生产者-消费者” 模型,还顺势探讨了分布式队列、水平扩容等思路。

项目聊完,又切到 Go 语言底层机制,比如进程/线程/协程关系、协程生命周期控制、HTTP 请求全链路的技术环节等,追问很细。有一段还聊到我在实习中遇到的重大事故,面试官结合案例跟我聊了开发流程上缺陷和上线策略,让我意识到工程实践中 “影响面评估” 和 “灰度验证” 的重要性。

氛围上对方很平和,但问题密度不低,经常一个回答后立刻跟进新的角度。聊到后期,面试官还给了我不少职业建议,比如尽早确定赛道(业务 / 技术 / 策略),先补深度再拓宽度,这到是经常能得到的回复了。面试结束时我感觉信息量很大,收获不只是技术答题,而是思维方式和视野的提升。下面是这次二面的面经题目。

一、背景与动机

1、你在滴滴实习了时间挺长的,不打算留在滴滴吗?

2、你对下一份工作的思考是什么?为什么想换公司或看新的机会?

3、你怎么评估你所在的行业以及未来方向?

二、项目与工程实践

1、请挑一个你认为有技术挑战的项目讲讲。

2、这个项目核心解决了什么业务问题?

3、分析下来,性能瓶颈和核心问题在哪些环节?

4、为什么不直接用频率控制?

5、并发控制是怎么做的?能否动态调整任务数量与资源负载?

6、diff 任务重复推送的原因是什么?你怎么防止这种情况?

7、除了局部优化,有没有更完美的整体架构方案?

8、素材下载在任务中的角色是什么?

9、这不是生产者-消费者模型吗?如果要按这个模式改造,需要怎么做、要考虑什么?

三、技术问答

1、请讲一下进程、线程和协程的关系。

2、如果要做一个“开关”接口控制后台协程的启动和停止,你会怎么实现?

3、在这个开关例子中,从点击到执行,中间会发生哪些技术环节?

4、滴滴内网拓扑是怎样的?

5、滴滴的应用是否上云?

6、你对 Docker 和 K8s 的熟悉程度如何?

四、事故复盘

1、分享一次在滴滴遇到的重大挫折或事故案例。

2、事故原因是什么?你之后做了哪些改进?

五、个人认知

1、你觉得自己和滴滴里的前辈差距在哪?

六、反问环节

1、如果有后续环节,面试流程会怎样?

2、团队主要做哪方面的工作?

3、对于职业方向或人生发展,有什么建议?

#牛客AI配图神器#

#秋招##百度##牛客创作赏金赛##面试#
全部评论

相关推荐

常规问题: 1. 3分钟简单自我介绍2. 在实习和开源经历中,你遇到的最大困难或最具挑战性的事情是什么?实习拷打(拓展相应的场景八股)慢 sql 治理相关的1. 你在平台稳定性建设中提到通过添加索引、读写分离优化慢SQL,具体是怎么做的?2. 读写分离可以再详细说一下吗3. 能否举一个添加索引的具体例子?比如在哪个字段上加了什么类型的索引?4. 你加的是单列索引,如果查询只需要表中的几个字段,当前的单列索引是否有优化空间?5. 联合索引相比单列索引的优势是什么?为什么更优?(从回表,索引下推优化那个方向说就好)es 慢查治理相关1. 关于ES扩容主分片优化查询,具体是怎么做的?2. 系统的ES集群资源配置你了解吗?(如CPU、节点数等)3. 扩容分片数量是如何确定的?仅依据数据量吗?4. 分片切割后为什么查询会变快(并行查询)5. 将 long 类型字段转为keyword类型,是如何利用跳表结构的?这里其实并不能,只是切换是为了适应精准匹配的场景,keyword 的底层用的是倒排索引+跳表6. 除了分片扩容和类型转换,还有哪些方式可以优化ES慢查询?(force merge 整理碎片)分布式锁(业务中有个并发修改用到了,主要问的一些分布式锁的实现细节)1. 你在业务中使用的分布式锁是标准库还是自研的?2. 让你自己实现一个最简单的分布式锁,你会怎么实现?3. 如果任务加锁后异常退出,没有释放锁,如何避免死锁?4. 如果任务执行时间很长,锁过期被其他任务获取,原任务完成后误删了别人的锁,如何解决(防止锁的误释放,加标识)5. 如果任务A包含多个子任务,且子任务本身也有加锁逻辑,在嵌套调用时会因重复加锁失败,如何解决?(可重入锁的实现)6. 在秒杀场景下,能否直接用分布式锁控制库存扣减?会有什么问题?7. 如何让秒杀请求不立即失败?(锁的自旋)并发编程1. 你使用CompletableFuture并发查询多个维度,底层是如何实现并发的?2. 你是自己定义线程池,还是使用默认线程池?3. 你是基于什么依据设置线程池参数的?4. 如果一个任务同时包含CPU密集型和I/O密集型操作,共用一个线程池会有什么问题?应该如何设计?(线程池隔离,避免cpu密集型任务阻塞I/O密集型任务)Agent和开源相关的内容1. 你的基座模型切换(DeepSeek → 千问)后,响应是流式还是非流式?2. 为什么关注完整响应时间,而不是首字响应时间?(主要是业务上的一个需要)3. 你的性能优化目标是在保证输出内容不变的前提下缩短生成时间吗?4. 你在Agent框架中使用了责任链模式和观察者模式,请分别解释这两种模式5. 既然有四个固定执行步骤(Agent执行前,执行后,模型执行前,执行后),是否可以用模板方法模式替代责任链模式?6. 你使用观察者模式的具体场景是什么?为什么选择它?7. 你还了解哪些常用设计模式?8. 你提到使用HNSW算法进行向量搜索,能简述其基本原理吗?(避免全表的向量查询)9. 为什么不直接用余弦相似度做全量匹配,而要引入HNSW?10. 你是否使用过BM25算法?它的作用是什么?11. 向量搜索有哪些弊端?12. 向量检索和BM25全文检索的得分量纲不同,如何进行混合排序?(引入一个精排模型重新打分)反问:1. 业务(智能客服相关)2. 不足,基础还需要加强无手撕,总体一个小时总结:面试体验很好,主要就是根据简历延伸一些八股和简单场景,有些还需要加强的地方,挖出来了自己基础上的一些问题
点赞 评论 收藏
分享
评论
5
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务