全程 65min(实习岗)
这次面试十分抽象,我也用抽象的方式记录一下过程
首先还是和部门语言不通,我主Java辅golang,部门主c++和golang,可能因为这一点,面试官一直在提问有关理解和个人思考方面的问题,其实感觉中间件的问题可以随便问的,和语言没啥关系,但是一个没问。。
一开始先闲聊:
1. 你是怎么学习一门语言的
2. 你做一个项目会从哪些角度去优化
3. 现在公司实习的业务,为什么想离开
。。。。闲聊就没记,忘了
然后是抽象的提问:
1. 我看你主Java也会点儿golang,那么在开发一个项目前,语言选型方面你是怎么决定的(balabala)
2. 说说Java和golang的区别(答的数据结构和协程以及编译方式和底层优化)
3. 我看你说到golang的协程,说说为什么你觉得协程就比线程更好(往轻量上阐述)
4. 说说Java的=和golang的=有什么区别,比如一个对象赋值给另一个(只说了Java是引用拷贝)
5. 说说Java为什么比golang性能差一些(围绕jvm说的)
然后跟我讲他们部门主golang也用c++,讲了一些业务,问了我意愿之类的问题
最后出了一个算法题,但是很抽象:
1. 写一个最久未使用淘汰策略算法
我一听,这不是LRU吗,然后就问面试官,他说不一定,然后我就懵了,于是先写好了一个LRU,再继续问真的不是LRU吗,他说LRU可以优化,他希望通过计数去淘汰最久未使用的帧,行,那我加一个map去计数,然后把链表操作替换了
他看了说没啥问题,让我分析前后有什么优化
我一看,空间换时间,但是在淘汰时也需要去找最小数对应的key,这里需要一次遍历找最小和一次查找,至少O(N)+O(logN),单纯优化了更新链表时的O(N),感觉性能还差了点儿,所以我直说了要看业务场景,不然算不上优化。。
之后给了我一些人生建议(感觉像是要挂了在给我找点收获)
后面他让我反问,就问了几个问题,答得都听耐心,看不出态度
但是我问他什么时候能有结果,他说要是有后续hr会通知我(感觉有点gg)
总结,滴滴一二面的面试官人都非常好,至少很包容,没有说因为语言不通就直接否定,我个人还是觉得语言只是工具而已,后端重要的是思想,在此许愿一个OC,要是没有就明年再来 >_<