阿里的招聘相比较于其他公司来说真的算早的,所以我其实很早就开始和阿里奋战了。在进入正式校招之前,抱着试试的心态投了阿里的内推。不过因为内推实在太早,完全没有面试的经历,对自己又过于自信、对面试的准备不是很够,且是在完全毫无准备的情况下接到的电面电话,毫无疑问挂了(这个经历有空的话会开个帖说说)。不过也没有太伤心,毕竟本来想着就是走校招流程的,内推不过是正好有这么一个机会,就试试,权当给自己多一次机会,而且因为经历过内推,校招面试的时候淡定了很多。另外那次面试经历在一定程度上给我敲响了警钟,之后就更努力认真的在准备面试了,总的来说还是有很多好处的。
在这里建议一下学弟学妹们,如果有内推机会的话都好好把握下试试,毕竟在招聘季最重要的就是能多一些被面试的机会,这样才能在增加基数的情况下获得比较好的结果(大牛们请无视)。另外,内推面试如果挂了对校招是没影响的,照样校招的时候按照正常的流程来走,所以参加内推基本上可以说是百利而无一害的。
说了这么多废话,下面进入正题
一、笔试
简历投了之后,就是笔试了,收到笔试的邮件通知的时候刚睡醒,真的是瞬间清醒了。但是总的来说还不是特别紧张的,毕竟对于自己要进行笔试这件事情本身就早有觉悟,所以早早的就有在准备笔试的东西。遥想暑假一开始的时候,抱着早起的鸟儿有虫吃的心态早早的查了下笔试的题目,做了一些题目之后直接吓哭了,一直觉得自己的基础知识还是挺不错的,结果笔试的几道题目做下来果断对自己产生了深深的怀疑。于是我开始了我的lintcode刷题之旅。出于对自己惰性深深的了解,还直接拉了室友一起刷题,相互督促,每天晚上相互检查,没完成相应题目数的就给对方发红包。虽然因此被室友赚了很多钱(哭),不过也在笔试前刷完了lintcode上的所有题,后续受益匪浅。
刚开始刷题的时候真的很痛苦,先不说题目本身,就是遇到做不来的题,找答案也是件很头疼很拖效率的事。不管实在谷歌还是百度,甚至在很多专门查题目的网站,有的时候费神费力也找不到答案!更可恶的是,有的时候我都充钱了!查到的答案居然还是错的!后来被人安利了一个题目超全的查参考答案网站(www.jiuzhang.com/solutions ),注册了账号找答案,不仅方便而且答案特别清楚。刷题的效率才开始一点点提上去
关于刷题一事,亲测一些感悟:
多看看参考答案,哪怕会的,这样可以增加自己代码的简练程度,在笔试的时候还是很有用处的。就我而言,在网站上研究了这么几个月的参考答案下来,自己代码的简洁度明显有了质的提高,最大的好处就是笔试时速度蹭蹭就上去了。
多研究答案背后的万能属性,很多参考答案是可以当模板来套的,稍微改一下代码就可以解决掉一大票的问题。真的非常实用。比如我在http://www.jiuzhang.com/solutions上面看到的quick sort的一个参考答案,它的答案就可以当做模板套到很多情况下。多研究参考答案,绝对磨刀不误砍柴工!
总的来说,刷lintcode相关还是很显著的,至少在整个面试过程中多次遇到了lintcode上的题目或类似的可以套模版的题目。顺便吐槽一下,阿里的笔试题目确实比网易之类的要难很多!
二、一面
笔试通过之后就去面试了,一面总的来说还是比较顺利的,先让做了下自我介绍,因为之前好好的准备了下,所以自我介绍的时候讲的挺顺利的。然后因为我自我介绍的时候着重讲了我做过的项目,面试官就问了我很多关于项目的问题,由于之前在内推的时候就因为没好好准备项目的内容吃过一次亏,这次面试前把自己的项目又好好的研究回忆拓展了一遍,无惊无险的过了。然后问了一些比较基础的知识,比如Java的垃圾回收机制、如何实现java的代理、Java和C/C++之间的差别、异步加载和延迟加载的实现、兼容性问题、web系统整体架构(差不多就这些啦),基本上都能答出来,所以没出现太大纰漏,
还算轻松的过了一面吧。总历时大概40分钟。
几点建议:
关于自我介绍,建议除了花一点点时间介绍下自己的基本信息像叫什么来自哪里专业是什么之外,就不要重复简历上已有的东西了,毕竟一般大公司的面试官们还是比较负责会看你的简历。这个时候就要好好讲讲简历上没有的东西,或者就你擅长的东西谈谈,或者讲讲你的项目,这些都是面试官比较感兴趣的,同时,也可以主动掌握面试的方向。一般如果你谈到了项目的话,很大可能很大一部分时间你就要和面试官讨论项目的东西,而这些东西是可以提前准备的,这样就可以比较轻松的面对被问到的问题了。
就项目来说,还是要在简历上放一些自己确实了解的项目,对一些自己也半懂不懂的项目就不要放上去了,不然如果非常不幸你的面试官正好对你不大熟的项目感兴趣、着重问这个项目的话,那就完蛋了。
三、二面:
一面结束后等了一会就被要求参加二面,二面依旧是技术面。
二面一上来,没让自我介绍,面试官就开始了技术问题上的轰炸:GET和POST区别、goagent是怎么实现、数据库事务隔离机制是什么有什么特点、Java的灵活性体现在什么机制上、设计模式有哪些、实现多线程有多少种方式、HashMap 与线程安全问题、怎么检测死循环。还好我面试之前有好好的做过功课,所以基本上没出太大问题,有惊无险的过了。中间还让写了下代码,不过写的不是很难,而且因为之前研究模仿参考答案的时候不自觉的就带上了jiuzhang参考答案里面代码的工业界风格,感觉面试官看了之后还是很满意的。之后面试官看了看我的简历,又问了我项目的事情。介于一面已经说过了一遍,理论上这次应该得心应手,不过后来还是出了一个bug(论不作时就不会死):讲到后来为了给自己加分,我说了下因为当时一起做项目的小伙伴手头有两个项目要做,所以自己是这个项目的主力什么的,结果面试官就心血来潮问起了如果以后让你作为一个项目的负责人,遇到类似的问题怎么办之类的问题。因为想着面技术岗就没太留意这方面的团队问题,回答的比较崩坏,事后想想估计是给自己减分了/(ㄒoㄒ)/~~。
然后二面就结束了。总历时大半个小时。
建议:
虽然说面技术岗主要考验的是技术问题,但是还是要稍微准备下关于团队的问题,毕竟技术岗特别是编程的岗位基本上工作寿命都不是很长的,能力好点的都会在后期开始负责项目然后慢慢转管理,团队之类的问题还是会对最终的面试结果造成一点点的影响。另外就是不要轻易给自己挖坑,相关团队问题不是很熟练应对的话,能少涉及尽量少涉及(同样,活动大牛请无视)。
四、HR面:
一直都说阿里的HR比较凶残,但是我面试时遇到的这个HR哥哥还是非常nice的。
基本上到了HR面的时候,整个人就没那么紧张了,毕竟想着技术面都过了,HR面虽然比较凶残,应该总的还是比较轻松写意了,最重要的是面试的HR哥哥非常温柔,全程都面露鼓励的微笑:)。
HR面总的来说就是谈谈人生谈谈理想谈谈规划。大概问题就是:之前做项目的时候在项目中主要起的什么作用,和别人怎么分工的,对阿里有哪些了解,为什么要来杭州,你最大的优势是什么,未来的职业规划是怎么样的,对于薪酬问题有什么想法,然后就是大概和我介绍了下我申请的部门,最后就是最常见的“你还有什么问题”(这个时候就是理所当然的搬出了万能的培养计划和晋升机制,问完的时候总感觉HR哥哥的眼里有着“我就知道”的意味在闪动。)
HR面结束,历时约半个小时。
建议
就HR面,总的来说就是要真诚,毕竟像阿里这样的大公司,HR可以说的上是阅人无数,如果说的言不符实的话很容易被发现。而且就像一些面经里面说的那样,不管多刁钻的问题都是为了看出你这个人的性格和态度,如果你的性格本身就不错,又是实打实的想进阿里,诚实的回答不犯大的政治错误就不会有太大问题。
面试结束后第三天就收到了阿里的录取信息,当时真的特别开心。因为一开始就想进的是阿里,所以收到了阿里的录取之后也就基本上没花太多心思在其他公司的校招上了,看着别的小伙伴忙忙碌碌红红火火恍恍惚惚的,觉得自己真的特别幸运。
五、写在最后:
之前有和学长讨论过是去大公司还是小公司的问题,我去的阿里毫无疑问是一家大公司啦,就个人而言,我还是建议学弟学妹们作为应届毕业生最好先尽量选择一些大公司,毕竟在一个大公司里面工作你能获得眼界绝不是一个小公司能给你的,而且大公司的工作经历在以后你的职业生涯中能给你提供的优势也绝对不是一个小公司可以给的。另外应届毕业生头顶的应届光环可以在你毕业校招的时候获得更大的可能进入大公司,而这个光环人生只有一次,所以还是不要浪费的好。
当然,如果你的眼光特别好,挑到了一家特别有潜力的创业公司,就像十几年前的阿里那样,那当我什么都没说过┑( ̄Д  ̄)┍