这是一个二本学历,工作超过三年的小伙伴投递滴滴商旅出行的一面整理的面试题。整体来说面试的题目都很基础,小伙伴回答出来了但是回答得不够有竞争力,并且在项目经历中没有面出亮点,最终没过。
岗位描述
职位描述
1、负责滴滴商旅出行管理平台相关业务研发工作,包括企业主数据管理、管控能力建设、清风风控相关工作等;
2、负责相关产品功能模块的设计和开发,包括需求分析,详细设计,测试上线等项目过程管理;
3、参与系统架构设计优化,系统瓶颈问题专项治理、解决系统稳定性,高并发,大数据等问题,提高稳定性;
4、具有一定的数据分析和逻辑判断能力,思路清晰、缜密;具备较强的问题解决能力,并有很好的前瞻性和全局观;
5、具备出色的沟通能力,有团队合作精神,与各业务方体系部门建立沟通协作机制;
任职要求
1、计算机或相关专业本科以上学历优先;
2、3年/5年及以上GOLANG开发经验,3年以上互联网项目经验,能够独立完成项目开发及现有项目二次开发;
3、基础知识扎实,对数据结构和算法有一定的了解;
4、掌握Redis,ES,MongoDB等NOSQL技术,精通MySQL的开发设计和调优;
5、具备模块或子系统的架构设计能力,掌握常见的架构设计方法和模式,持续优化系统架构,保证系统的高可用性(性能、安全、容量)、稳定性、和可扩展性;
6、对技术有激情,喜欢钻研,主动性高,具有较强的独立工作能力和解决问题的能力;
分析内容
职位描述分析:
- 业务是商旅出行,主要维护的系统是管理平台。众所周知,管理平台没有高并发和高性能,绝大多数时候就是增删改查。从后续“企业主”之类的来看,这个管理后台是给 ToB 用的或者内部使用的。因此这个职位进去之后在技术方面难有成长性。
- 增删改查。主要工作就是对接需求,然后开发功能,测试上线。
- 架构优化和系统瓶颈治理一方面说明你要接手屎山代码,一方面你可能会遇到一些有技术挑战的点,比如说提高系统稳定性,提高可用性。但是对此表示存疑,因为大厂的员工普遍缺乏重构系统的勇气,所以估计就是小打小闹,遇到问题了就解决一下。如果有系统的重构计划并且能参与进去,那么对你的技术成长会有比较大的帮助。
- 废话。恶意解读则是要你心思细腻,这样出问题了就是你思虑不周;前瞻性意思就是产品需求没有前瞻性,你要习惯;全局观就是你要当牛做马,哪里需要去哪里。
- 你要和很多部门打交道,“与各业务方体系部门建立沟通协作机制”几乎等同于你要一路求爷爷告奶奶,对接的业务方越多,越不好干。
任职要求分析:
- 废话。
- 经验丰富的牛马,上来就能用。这里特别强调了独立完成项目开发和现有项目二次开发,所以屎山+要重构的概率又增大了。
- 废话。
- MySQL 是常规技术,所以你要赢得竞争优势,最好是突出你在 MongoDB 和 ES 方面有深入的研究。那么你要背好 MongoDB 和 ES 的八股文,并且注意到职位要求里面有提到可用性和性能优化,因此你要额外准备一些 MongoDB ES 相关的问题排查和性能优化的案例。
- 这一条更加印证了,你进去真的有可能维护屎山,并且要重构。其余的非功能性要求,对于一个管理平台来说,我觉得它在装逼。
- 你得是一个核动力自驱力强的牛马。
总结:
- 业务方向一般,商旅出行还是很赚钱(至少能带来很强的现金流),但是通用性不强,领域知识只能用在出行一类的业务中。
- 从公司地位上来说,商旅出行应该挺重要的,但是比不过 C 端的打车之类的业务,所以在加薪晋升上表现平平。业务成长性看不到爆发式增长,只能每年长一点点的样子。
- 技术方向一般,这种业务不可能有高并发,撑死了就是万级别的并发,比不过 C 端打车业务,大概率进去就是做增删改查。
- 对下一跳有帮助,但是主要帮助是滴滴这个厂牌。
- 就面试准备来说,额外准备一些 MongoDB/ES 的八股文,以及性能优化和问题排查的案例。
GMP模型
- map的底层实现
- go的内存管理
- goroutine的并发模式你了解几种?说说原理?
- interface的底层实现
- 如何判断空interface,原理是什么?
- reflect的底层实现
mysql
- 为什么需要主键id
- 主键id有几种生成方式?
- 什么是幻读?幻读被彻底解决了吗?
redis
- 缓存问题有哪些?
- 如何用redis实现分布式锁?
- 用redis做分布式锁会遇到哪些问题?
- redis集群情况下如何保证锁不丢失?
- redis的数据结构有哪些?它们的底层实现是什么?
- redis的lru是什么?
- 如果让你实现一个lru,你的思路是什么?
项目
- 重构是如何推进的?成本如何评估?
- 重构过程中通过什么样的标准去保证代码质量和规范?
- 分库分表表达式如何实现?
- 分库分表中分页查询怎么处理的?
- 你提供了哪些分布式事务的解决方案?什么是CAP?
- TCC和XA了解吗?
- 装饰器模式具体怎么实现的?解耦体现在什么地方?
计算机网络
- http状态码500、501、502、504有什么区别?
- http3.0了解吗?实现原理是什么?
- epoll的模式了解吗?一共有几种?实现原理分别是什么?
整个面试都非常基础,聚焦的都是基础题。稍微比较难一点的也就是分库分表、分布式事务以及Redis分布式锁的问题,但是也不算很难。面试官追问的思路也是很清晰,没有出什么意外。具体每一道如何装逼,参考我们的题集。
而后在项目经历过程中,面试官的注意力上来就是重构,结合前面的岗位描述内容,更加有理由相信他们内部应该是要整什么重构了。也因此如果你有类似的项目经历,那么简历通过筛选、赢得竞争优势的概率都比较大。