无忧保职场指南早报:面试是有套路的,面试阿里这种级别的公司更是。客观的讲,面试除了自身的实力以外,技巧性是相当重要的,不管是一个技术再厉害的大牛,如果没有对整个面试环节有一个大致方向性的把握,对于面试官所要提问的内容毫无准备,失去offer的可能性很大。因此,我将分享下自己的经验,希望帮助更多人,在面试过程中可以少走一些弯路。
一、笔试
曾经做过的网易、蘑菇街笔试,按难度排序,大致应该是:阿里蘑菇街网易,当然这里仅仅考虑了难度,抛开了各个公司的评判标准。比如说,阿里的笔试你考60就给你过了,但是网易可能就要你考75。阿里的笔试题总共包括两个部分,前面一部分是选择题,总共20道,时间是40分钟。也就是说,40分钟后,不管有没有做完,选择题会自动进行提交,然后你才可以继续做第二部分。
从我做下来的情况看,时间相当得赶,基本上会来不及。题目内容大多是一些智商题,概率论,操作系统、网络等基础题。给我的感觉是,只要是技术面,选择题都是从一个大的题库中随机抽取,而不是跟某个具体的岗位挂钩。比如一些概率题,会有考察贝叶斯公式的,一些智商题,可能需要你用到简单的动态规划来推算。个人认为,选择题部分主要还是在考察一个人的基本功和知识面。第二部分总共有三道大题,时间大概是两个小时。一般情况下会考一道算法题,难度不会太大,但是如果你没做过这样的题目,基本上还是做不出来。下面列举几道笔试原题:
在一个数组中,有若干个数,每个数字都出现两次,也就是说数组中如果出现了一个2,那必定存在另一个2,除了一个数仅仅出现了一次,如何在空间复杂度为O(1)的情况下找出这个数。
这道题目如果你有做过,你会发现解决问题的方式相当巧妙。具体答案可以自行百度,这里不赘述。
从100个数中随机抽取K个数,要求K个数不能重复。
你也许可以马上想到用暴力的解决办法,如果重复了,那再次抽取,直到抽完K个数。这道题目也有巧妙的解决办法,详见《编程珠玑》随机数那一章。
另外两道题目,一般会出现一道并发编程题,往往它会给你一个场景,让你提供一个解决方案,比如说设计一个活动抢购之类的程序。这些题目,大多万变不离其中,从最本质上来说,它可能仅仅是让你写一个生产者消费者模式或者是哲学家吃饭思考的问题。
一般情况下,笔试部分选择题做得不是很差,后面三道大题能做出两道来基本上就过了。
二、面试
面试这个过程其实共性不多,因为面试官会根据不同的面试者进行提问。为了避免泛泛而谈,我可能也会以几个实际的面试题为例。
一般情况下,总共会有三轮,技术面+HR面。如果你参加的是内推,所有的都是电话面试。对于我来讲,我更喜欢与面试官一对一面试,通过一些肢体语言和纸笔,有利于把一个问题更好得表达清楚,我并不惧怕现场写代码。在这方面,网易做得就比较好,先通过一轮电话面试筛掉一部分人,然后再参加现场面试,对于外地过来的同学,车票可以报销。如果你参加的是校招,通过了笔试,一般会邀请你去一个酒店进行面试。
面试一般会让你先做个自我介绍,这时候不要再去重复得介绍一些个人信息,面试官跟你面试的时候,肯定是已经拿到你的个人简历了,可以介绍一下自己平时经常做的事情,自认为比较擅长的或者自己喜欢的,自我介绍一分钟足矣,在这过程中,应该是让面试官知道你擅长什么,从而引导面试官有针对性的提问。
接下来会问一些项目经验,你应该是挑一些有一定的含金量,并且印象比较深刻的(面试前,有必要回顾下做过的项目)。大致可以按照这几点来介绍:自己负责了哪个模块;把这个模块的大致流程介绍一遍;在做这个项目过程中碰到了哪些问题,最后是怎么解决的;最后就是对这个项目的收获。介绍完项目经验以后,面试官开始自由提问,以我多次面试的经验来看,面试的问题都不会太难。我可以大致给出面试的提问范围:
关于java虚拟机,你需要知道JVM的内存结构,垃圾回收机制,内存分配策略,类的加载机制以及内存模型。以上这些请参考周志明的《深入理解java虚拟机》。
熟悉java各个容器的实现,例如Hash Map、Concurrency Hash Map等,最好去阅读源码,这次面试关于Hash Map原理三个面试官问了我三次,重要程度不需多说了。
熟悉java并发编程,尤其是java.concurrency包下的api,并发作为一块高级内容,对于很多人说,很少接触,也很难将其掌握。幸运的是,面试官在这一块都不会考得太深入,推荐《java concurrency in practice》。
熟悉常用的数据结构、算法。很多人认为算法在实际项目中根本用不到,并且觉得算法太难,就疏于学习。那为什么所有的大公司都喜欢考算法呢?尤其是像微软、facebook这样的巨头?算法不仅需要必备的理论,更需要亲自动手,有关算法的书籍更多,找一本适合的就可以了,题库推荐leetcode。
其他还有像设计模式、数据库都很重要,这些东西并不是靠一两个月就能掌握,还是需要平时多积累、总结。推荐《head first设计模式》,如果有你认为学习能力强,可以直接看四人帮的《设计模式》,数据库就不多说了。
在这里,我并不是想给出一个面试宝典一样的东西。事实上,上面列出的东西,没有两到三年的时间学习,根本掌握不了。要想成为一名技术大牛没有捷径。还是希望大家可以认真踏实的学习,一旦你真正掌握了这些,面对面试官的提问基本上可以达到游刃有余。
三、总结
总体来说,大多数企业考虑到校招针对的是在校学生,面试都不会出现太难的题目。然而在如何学习这个问题,笔者还是有话要说的,我见过很多人,光看书或者视频,忽略了实践,最终的结果就是我能看懂代码,但是我不会写。更有甚者,拿着一本与自身水平不适应的书例如《think in java》在那里啃,导致自信心大受打击,学习兴趣骤减。武侠小说告诉我们,练一门与自身功力不相符的武功只会走火入魔。
马克思主义哲学告诉我们,要理论和时间相结合,实践是理论的基础,理论对实践有反作用,理论和实践是相辅相成的,缺一不可。
我刚才强调了实践的意义,但是我认为,如果你做过类似的项目已经足够得多,就不要再去做重复劳动。我无意去贬低在学校做的项目,但是事实就是如此,99%的学校里的项目只能算个Demo。试问,有谁考虑了代码是否足够Elegant?是否足够Robust?是否足够Sequrity?如果没有,那就远远达不到作为产品级别的工业强度!那么这样的项目做得再多也是无用功。
另外,文章开头谈到我两次失败的经历,都是到了HR面,有人说能面到HR,基本上就已经过了。而我两次都败在了HR面上,我一度怀疑自己是不是情商有问题,后来我发现大多数的HR都是SB,你要问我为什么,我可以给出逻辑证明,period。
最后,如果面试失败也不要灰心,面试很大一部分是有运气成分的,笔者不乏见过很多被BAT刷掉,最终去了微软谷歌的,你能说他们技术不够强硬?重要的是每次面试后,都能做反思、总结,吸取经验教训。
买房,摇号,落户,孩子入学都受社保影响,无忧保作为业界领先的个体社保自助缴纳平台推出全国社保代缴服务,保你社保不断缴。
小编有话说:谢谢这么优秀的你来看文章,有什么想对小编说的尽管来吧,大家的支持就是我们的动力,欢迎大家踊跃发表疑问,欢迎吐槽,社保生态圈群:248069515
标签: 面试