大家好,我是一名刚入职OD的后端工程师。
最近在另一个平台有好多朋友私信问我OD面试的事情,问的人多了,我索性写一篇完整的面经,把我从投递到拿offer的全过程都记录下来。
先声明:这只是我个人的面试经历,不代表所有OD岗位都是这样。
不同部门、不同方向的面试可能会有差异,大家参考一下就好。
能力强的也看不上OD的可以不用看这篇哈····别骂我,我就是整理分享一下。
先说说我的情况:普通二本计算机专业毕业,工作3年,一直在中小型公司做Java后端开发。
技术栈是Spring Boot + MySQL + Redis,做的都是业务系统。
说直白点,就是个普普通通的CRUD程序员。
今年年初公司裁员,我被优化了。在家待了一个月,投了很多简历,回复率低得可怜。
100份简历投出去,能有5个面试机会就不错了。 那段时间真的挺焦虑的,每天刷招聘网站刷到凌晨。
后来听朋友说OD还不错,岗位多,我相信内行都听说过OD吧,本来完全没打算去的,但不能一直在家里啃老吧,就想着薪资也还行,抱着试试看的心态投了。
说实话,毕竟我学校一般,工作背景也一般,我甚至感觉OD我都够呛。
没想到,最后居然面上了。
我是通过内推投的简历。大家也可以通过官网、招聘网站等多种渠道投递,效果都差不多。
内推的话可能流程会快一点,有认识的人在里面的话可以找找内推。没有也没关系,自己投也行,都是一样的面试流程。
我投完之后大概3天就收到了笔试邀请,效率还是很高的。当时我正在吃午饭,看到邮件差点把饭喷出来。真没想到这么快。

笔试是在线编程题,一共3道,时间90分钟。
我当时看到3道题的时候,心里咯噔一下,心想不会都是难题吧。结果做下来发现,难度中等,比我想象的要简单一些。大概就是LeetCode中等题的难度,甚至有的还简单一点。
我记得的题目大概是(具体题目记不太清了,说个大概方向):
字符串处理:给定一个字符串,找出最长不重复子串的长度。经典滑动窗口题,刷过LeetCode的应该都做过。
数组操作:合并两个有序数组,要求时间复杂度O(m+n)。也是经典题,双指针从后往前遍历就行。
二叉树:给定一棵二叉树,判断是否是平衡二叉树。递归就行,注意别重复计算高度。
我当时做了大概40分钟就做完了,检查了几遍,提前交卷了。
给大家的建议:
笔试不用太担心,都是比较经典的题目,刷过LeetCode应该问题不大
建议面试前刷个100-200道题,重点关注数组、链表、树、动态规划这些高频题型
不用死磕hard题,大部分都是medium难度,把常见题型掌握好就行
注意代码风格,变量名起得有意义一点,别全是a、b、c的
笔试通过后第二天就安排了技术一面,时长约1小时。
面试官是一位资深工程师,人挺nice的,不会故意刁难。开头先让我自我介绍,然后就开始问技术问题。
我把能记得的问题都列出来:
HashMap的底层实现原理?JDK1.8做了哪些优化?(这个几乎必问)
Java的垃圾回收机制?CMS和G1的区别?(这个我答得不太好,面试官也没深究
ThreadLocal的原理?内存泄漏问题怎么解决?
Spring的IOC和AOP原理?
Spring事务的传播机制?
什么是覆盖索引?什么是回表?
MySQL事务的隔离级别?各自解决了什么问题?
怎么优化一条慢SQL?
对对对,还有项目经验:
介绍一下你做过的最有挑战性的项目
项目中遇到过什么技术难题?怎么解决的?
你在项目中扮演什么角色?
最后还让我在线写了一道算法题,是关于链表反转的,比较简单。我当时有点紧张,写的时候手都有点抖,哈哈。
整体来说,一面的问题都比较基础,都是Java后端面试的常规问题。只要基础扎实,应该问题不大。

一面通过后隔了一天安排了二面,时长也是1小时左右。
二面的面试官级别更高一些,问的问题也更深入,偏向系统设计和实际场景。
这一面我感觉答得一般,好多问题都没答好,面完以为自己挂了。
能记得的问题:
设计一个高并发的秒杀系统,你会怎么设计?(这个我准备过,答得还可以)
如何保证接口的幂等性?
分布式锁的实现方式有哪些?各自的优缺点?
Redis的持久化机制?RDB和AOF的区别?
微服务架构下,如何做服务治理?
有没有做过性能优化?具体怎么做的?效果怎么样?
还深挖了一下我的项目经验,问了很多细节问题,比如:
你做的优化具体提升了多少?怎么衡量的?
如果让你重新设计这个系统,你会怎么做?
这些问题确实把我问住了。因为我之前的公司业务量不大,根本没考虑过这些问题。
但我尽量把自己知道的都说了,不知道的就坦诚说不知道,没有瞎编。
后来想想,面试官可能也知道我没做过这么大的系统,他想看的是你的思路,而不是标准答案。
二面通过后又隔了一天安排了三面,这一面是部门负责人面,时长大概45分钟。
三面的技术问题不多,更多的是考察你的综合能力和职业规划。有点像聊天,氛围比较轻松。
大概问了这些:
介绍一下你自己
你为什么选择OD?(这个问题一定要准备好)
你对未来3-5年的职业规划是什么?
你觉得自己最大的优点和缺点是什么?
工作中遇到过最难的事情是什么?怎么解决的?
你平时怎么学习新技术?
你有什么想问我的?
其实我感觉这一面主要是看你的综合素质、沟通能力、以及跟团队的匹配度。
建议大家提前准备一下职业规划和为什么选择OD这类问题。
对了,"你有什么想问我的"这个环节,别问"你们公司加班多吗"这种,显得你很怕吃苦。
这个一定要注意!!!可以问问团队的技术栈、项目方向、新人培养机制这些。
三面通过后就是HR面了,主要谈薪资、入职时间、福利这些。
HR会跟你详细介绍薪资结构、福利、晋升通道等信息,有什么问题都可以问。整体体验还是很透明的,不会藏着掖着。
谈薪资的时候,大家可以根据自己的情况合理预期,不用太客气,但也别漫天要价。
我反正是在我的理想薪资上多说了2k,没想到真能给哈哈哈哈。不用担心OD的薪资感觉还是比较有竞争力的。

从投递到拿offer,我总共用了不到两周时间,效率还是很高的。整体面试体验也不错,面试官都很专业,流程也很规范。
敲黑板!!!如果你想走OD,那我给准备面试OD的小伙伴几点建议,都是我自己的经验之谈:
(再次提醒:能力强的也看不上OD的可以不用看这篇哈)
打好基础。 Java基础、数据库、计算机网络这些基础知识一定要扎实,这是面试的重点。别光顾着学新技术,基础不牢地动山摇。
刷算法题。 笔试和面试都会考算法,建议提前刷LeetCode,重点关注高频题。不用刷太多,200道左右基本就够了。
准备好项目。 一定要把自己做过的项目理清楚,能讲清楚技术细节和难点。面试官很喜欢深挖项目,别被问住了。
了解OD。 面试前多了解一下OD是什么、做什么的,表现出你的诚意和兴趣。别连OD是什么都不知道就去面试。
保持平常心。 面试是双向选择,不用太紧张,正常发挥就好。答不上来也没关系,坦诚说不知道,比瞎编强。
最后祝大家都能拿到心仪的offer!有什么问题欢迎在评论区交流~
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70036698/viewspace-3176846/ ,如需转载,请注明出处,否则将追究法律责任。