科协前辈的阿里面试转载2
1 内推开始
我记得内推开始是在年前,**的一学长建了个内推群,一开始因为觉得自己能力有限,找工作被刷的可能性比较大,就没投。到了年后开学来了学校,想着先投了,觉得应该面试不会很快来,可以有段时间看书。因为觉得研发投的人会多,所以一开始投的系统工程师。
2简历评估面(2015.3.4)
没想到的是我上午在阿里招聘网站上完善完简历,下午4点左右电话就来了,是第一面。面试官很有亲和力,上来问我有没有时间。我说有的,面试就开始了,当时很紧张,因为完全没有准备,说话都颤抖。面试官让自我介绍一下,我就先把自己的大学来主要用的语言和项目稍微讲了一下。接着面试官让介绍项目,大概把项目和自己做的说了些,还是紧张中,面试官一直跟我说不要紧张,我们就是聊聊天。说完项目(机器人仿真),面试官就问我Java会什么,我说基础和集合框架用的多一点,API一般我用的是比赛的API。他就问我HashMap和HashSet的区别,包括实现,恰好去年网上看过一篇文章说的是这两个的区别与实现。所以这个很快答上来了。接着他又问的是会不会Java线程,说怎么实现。我答完后他继续又问线程同步怎么实现,我说用synchronize,接着他问synchronized 的要怎么实现,当时一下子蒙了,我说给我半分钟想想,突然就想起来可以用队列的思想,大概把思路讲完,面试官说可以看成一种实现的方式。Java就面完了,接着问的是字符串问题,比较简单就是统计出现的字符个数,包括假如中文怎么办呢。问完后我先说中文可能会有编码问题,接着说用Hasp表就可以实现,把思路说完,包括遇到的冲突怎么避免,算法也就问了这么点。接着是计算机网络的三次握手。基本问题回答完后,他说假如让你实现大文件断点续传功能怎么实现(数据比较大)。我先说了可以开多线程,服务器端可以分配变量记录上传的数量。后来他说数据大呢,我没想清楚,面试官很友好的说没事,可能问的难了,我给你提示把数据分块的。我立马想到了ARQ协议和数据块控制,把思路重新说了,包括差错控制和流量控制。一面面完感觉还可以,面试官跟我说是他研发的,这是比较高兴,本来最想做的就是研发。一面后大概十几分钟后上网站看状态,简历评估已过。
3 二面(2015.3.5)
我觉得初面是最令我害怕的一次,因为简历上写的专业的全称 软件工程(嵌入式软件人才培养)加上做的机器人仿真比赛,面试官第一句话就说你应该做的硬件呀,怎么还能过第一面。我解释了项目,忘解释专业。接着他让我介绍项目和自己做的部分,问了项目中遇到的最大问题接着问我擅长的方面,一般回答这样问题我会说我用的什么多,而不回答擅长。接着就问了Java的反射,线程,让我说一段实现一个用线程的小程序,说完后就开始问字符串问题,问的是从长长串中找子串,我说了普通方法和KMP算法。他说还有改进的吗,之前看算法不是很多,也就不会了,还能把毫不相关的最长公共子序列说进去,说完后发现不对,好在面试官没有继续问这些。接着问我会不会Java web ,我说只是看过JSP 和Servlet。面试官也就问了cookie和session的区别,最后一个问题是抓取一个类似百度指数的问题,说是数据加密,还有什么Flash,我说不会这些,面试官就说想法呢,我把思路说完,感觉面试官不是很满意。就说今天就到这,当时感觉不好。回去发现网站上系统工程师已回绝,但是出现了研发工程师面试中,而且是应届生,于是第二天找客服问了后,又变回研发了实习生了(其实本来最想投的也是研发)。到了下午改为面试通过。所以面试中有问题答不上来不要怕,说不定就过了。
4 三面(2015.3.13)
三面基本轻松,上来就项目,我说了十分钟,他简单问了些项目中的问题。接着问我擅长的,我还是说了我用Java多一点,面试官也没问Java问题,就给了一个算法题,说一个表达式里面有数字、四则运算和括号不知道他们顺序怎样求值。我说把表达式转成后缀表达式不就可以了吗,他说具体实现,我把算法说了,怎么进栈和进栈顺序,说完面试结束。三面比较快只有15分。
5 HR面(2015.3.15)
HR面比较简单,只是随便聊聊,一开始就问为什么不读研而选择工作,接着聊了我的比赛,主要是获奖,写代码过程,以及和队友相处啊,遇到问题怎么解决。回答这类问题的时候我都会先说是我们团队一起之类的话,其次问的就是你在网站上填的开放性问题。面试完10分钟后,我的简历状态变为待同意offer。
6 五面
待同意offer一周后简历状态变为面试中,这次就紧张的要死,等了两天终于等到了电话。也是问的我为什么不读研,接着聊项目,问我在团队中的的职责以及和其他人代码对比,恰好代码中有开源的代码,我就说我们几个主要成员写的代码质量都差不多,但跟开源的那些又有差别。接着问我会不会JVM和JMS,我说只是用过,就是不了解,知道他们是干什么的,面试官也就没问什么。又问Java的ssh会吗,我也是只说了他们的作用。最后面试官问的是我用过什么开源的东西,我说我们比赛里用的server是开源的还有项目代码里用过javolution的FastMap ,恰好那两天看到kryo这个框架,也写了些测试。面试后问了我的实习时间,面试结束。回去过了一会儿机简历变为待跟进状态,问了客服说没问题了,几天后收到录用喜报和意向书。
7 总结
总的来说,面试并没有想的那么难,运气也会占一部分。如果你技术不是很强很强,那你基础就要好,数据结构,计算机网络,操作系统,算法,数据库,都要会,个人觉得这些把课本知识学会就好,如果你学的扎实,到面试前用一到两个小时这些就可以看完,因为知道大概就好。其次还要有个项目,基本上能可以跟面试官扯扯的。还有方向问题,这个尽快决定,基本上面试选的你最擅长的。