今年入职了某厂,金三银四嘛,流动大,入职后部门还在招人,能看到后续其他人的面试反馈邮件,我进来当时的面试体验,感觉还好,中规中矩,既有问项目,也有问语言基础以及数据结构算法。
随着后来看到面试的内容时,发现部门无论面试者什么工作年限,都问纯数据结构的问题也就二分查找以及变种水平,全部纸上写代码。而且题目都是很普通的问题,这让我很诧异,面试两三年经验的这种还好,但面试工作五六年的全部问纯数据结构的,这有点不合适,怎么也得问下他擅长领域里的一些有深度的问题。我司好歹是个大厂,门槛太低了,大部分学校不错,基础差不多的人都能通过这些面试,可能公司早期微软员工比较多,偏数据结构和算法,但你起码也得问得深一点的啊,这些太浅了。
我对面试理解理解,拿美团来说,技术三轮面试,1面基础,2面深度,3面侧重于综合素质。其他大公司也都差不多,微信七八面的当我没说。。。
编程基础
比如你搞C++开发的,C++相关的一些设计:虚函数表,stl基础,构造和析构。
后端涉及linux,锁,并发,线程,进程,多线程,socket。
数据结构及算法,常见排序,时间复杂度,空间复杂度,二叉树的前中序遍历,递归非递归,深度优先广度优先这些都是很基础的,在高级点的,简单的动态规划,马的遍历等问题。
此外还需要附加部分手写代码题,写出关键实现思路即可。
上述知识点只是一个范围,面试当然不会问得很全面。关于基础,很多公司其实不是很在乎语言,更注重数据结构和算法这些理解的能力,觉得语言知识点可以学,但我觉得二者并无优劣,经验少的强调数据结构和算法,高级的语言等也得理解到位。当然面试有很多不确定性,出现一定的偏差也是有可能的。
技术深度
候选人熟悉后端,那socket一些参数,以及tcp、ip里的部分机制,比如拥塞控制,网络模型,epoll以及poll以及select优缺点,内核态用户态切换。水平触发,边沿触发,分布式系统设计,缓存,数据库优化,一些具体设计等。结合参与的项目里自己负责了那些模块,这些模块的设计实现,以及遇到的问题。
比如阿里中间件2面有个面试题,让你设计一个消息队列,满足水平扩充,数据高可用,讲述一下具体思路就可以了,这就很符合部门的岗位要求。
技术深度这些就比较偏向于领域了,这些知识理解了就是理解了。具体要求看具体岗位的工作内容,面试官很多时候就是希望看到候选人在某个知识点的理解能够达预期,而不是停留在基本的概念上。理想的情况是,和面试者一起探讨技术。
综合素质
这个就比较偏向于面试者性格,协作能力,沟通能力,对技术的一些看法和理解,个人的学习习惯,逻辑思维,这方面仁者见仁智者见智,需要能够快速融入团队等。比如我见过一个面试题,证明一个数位数和是三的倍数一定能够被3整除,我觉得这个问题就很能考察思维能力。
以上只是我的个人浅显的理解,实在是觉得部门面试考察的太浅了,换做我来面,工程能力差点的话,我必然会加深一下算法和数据结构内容,部分高频面试题目必须问,再加上简单的动态规划问题,要面的有深度有广度。但这样可能招人需要很长时间,但我觉得这个视部门缺人程度而言,一定门槛还是要有的。
之前在我心中一直以为我厂很难进,但进来后发现好像不难,社招不说了,但校招实习生能力一般的话怎么也得211吧,妹子一定要注重一下颜值!!!
网友评论