8.29号笔试,9.1号官网显示笔试通过请预约面试时间,预约了9.17号下午三点面试。
投入更加紧张的准备中,先把项目中的各种可能被问到的细节问题想到,然后再总结自己当时的解决办法和思路。最后,把各种C/C++的问题、数据结构、数据库、操作系统、计算机网络、软件测试方法用例原理等等乱七八糟的东西都扫了一遍,坚持写博客,每天至少更新一篇!另外,稍微了解以下阿里的文化和公司理念等。
虽然准备了很久,但面试的前一两个小时还是蛮紧张的,给GF打电话缓解了下情绪,然后准备好面试所需的所有可能用到的资料和工具,轻装上阵!下面便是笔者面试的详细过程。
阿里面试经历
一面(技术面)
首先看着简历问了些随便的问题,如你本科武大的,教育背景还可以,你是四川人,看着不像啊,人高马大的。算是闲扯了一会儿,然后看了下简历:看到有星载接收机项目和算法有关,然后说给你个题目你实现一下。然后就在纸上写了一个数组,说找出其中的次大值(第二大的数)。
他问:明白题目的意思了吗?我说:明白了。然后我就拿着笔写,他就看我的简历。代码如下:
#include "iostream"
#include "algorithm"
using namespace std;
int main()
{
int a[]={2,3,8,4};//当时的样例数组
int len=sizeof(a)/sizeof(a[0]);
sort(a,a+len);
cout<<a[2]<<endl;
}
给他说,写好了。他说:这么快,然后看了下说,哦,你用的库函数。然后让改,不用库函数,最好能写出最优的算法,可以想一下再写。
我想了会儿,然后开写,代码如下:
int main()
{
int a[]={2,3,8,4};
int Max=INT_MIN,max_second=INT_MIN;
int len=sizeof(a)/sizeof(a[0]);
for (int i=0;i<len;i++)
{
if (a[i]>Max)
Max=a[i];
if(a[i]>max_second&&a[i]<Max)
max_second=a[i];
}
cout<<max_second<<endl;
}
(1)然后他问,你这个是怎么实现的,我说先找出最大值,然后找出比最大值小一点的。
他问,你这个循环多少次,我说数组的长度次数。然后没再多问了。
然后让我介绍一下自己。
(2)我按照简历的大概,教育背景+项目经历,巴拉巴拉说了一通,把每个项目干什么实现什么功能用简短的话说完,然后说说自己负责的模块,做了什么,最后得到什么结果。(简历的项目那一块,最好把做的事情一条一条的列出来,这样面试官看的舒服)。
(3)然后他就开始对着项目问了:星载接收机这个你做了什么,用什么软件,有什么算法,怎么实现的。然后我说我负责捕获模块的实现,主要是算法研究和在硬件中的实现,然后配合组内成员完成后续环路的跟踪,具体怎么实现,巴拉巴拉一通。
(4)你数传地检软件这个项目做了什么?
然后我说主要是学习,包括多线程、套接字、多文件处理,按照指定的帧格式,实现动态实时多文件夹存储功能。
那你觉得难点在哪里?有没有压力特别大的时候,怎么处理面对的?
(如实说,扯了下项目快截止了,然后催着结项;还有就是一个新的程序代码,很长新东西多,短时间学起来压力比较大,缺什么补什么,慢慢就好了之类的)
后来问:代码有多少行?
我说叁仟陆佰多行吧。
他说不算长,他们有时候一天就写几千行。囧。
(5)你第三个项目,北斗导航技术掩星探测做什么的,你做了什么?
如实说我做算法分析,把星间链路回传数据的压力减小;反演算法分两类,一类复杂不能星上实现,只能剔除接收机无关代码,减少返回量,一类是算法简单,可以精简之后移植到星上进行;最后提交可行性方案给上海市科委。
这个主要是预研项目,他没问多少。简单的问了下实现的思路。
(6)然后开始问:你学电子的,本科呢?
如实说本科也是电子信息科学与技术的。
那你怎么想到会做测试工作呢?
我个人觉得测试工作比研发工作更难,研发只要进行需求分析、编写代码、修改bug等,而测试是要全程参与的,有更多的学习机会。然后扯了下双十一阿里的系统没有崩溃,觉得好牛,就想知道怎么实现的。因为知道阿里有专门的测试团队,所以就特别像进去学习。
那你知道测试的流程吗?
知道,有需求分析阶段、设计阶段、单元/集成测试阶段、性能/压力测试阶段、验收测试阶段、结项总结。方法主要有:白盒,黑盒;静态测试,动态测试等。
什么是单元测试?
我将概念稍微解释了下。
那你刚才你写的代码,求整型数组中次大的元素单元,要你来设计测试用例,你会怎么做?并给我举了个例子:比如,输入[2,3,8,4],输出4。
然后我按照测试用例设计方法,做了如下测试用例[2,2,2,2],[2,2,8,4],[1,2,3,…..,n],[2,3,’a’,8],[‘a’,’b’,’c’,’d’],[空],[“string”]。写的过程中,我写一个,他说一句:还有呢。。。。搞得我有点思维断片儿。后来我说暂时想到的就这些了。
他就挨个点评我的测试用例,然后提示说还有负值和一些边界情况要考虑,我赶紧说,哦对,比如0值。然后稍微给我说了下,就没再多问了。
(7)那你期望工作的地点是哪里?
赶紧说杭州,因为那边有亲戚。
平时都怎么学习的,方法有什么?
我说先自己看书搞懂基本原理,如果不会就上博客论坛,交流,一般都能解决。学习了之后写点博客笔记什么的。(他没问地址,二面面试官问了)。
那你有没有压力特别大的时候?怎么解决的?
举个实际例子说明即可(这个问题,一面二面HR都问了)。
(8)你有没有问题问我?
我问了什么时候出结果,几轮面试,他说快的话两到三天,慢两周也会出来,面试两到三轮吧。
还有问题吗? 没了。
行,你等一下,给你安排复试。
二面(技术面)
(1)面试官上来就开始问你武大的,为什么来中科院读书了?
我说中科院设备好,动手机会多。比高校好。
那你对自己的选择后悔吗?
我说不。
行,那你介绍一下自己吧。
然后按照预先准备好的再说了一遍。
(2)然后开始对着项目一条一条问。
做了什么?实现什么?你做了什么?
如实回答,尽量扯一些和岗位要求相关的技能,让他提起兴趣继续深入问你。
然后他说:你把数传地检软件这个项目的实现流程画一下吧。
按照实际的流程一边画,一遍讲解,怎么按照这个流程图实现项目中的功能的,画的过程中每说两句,面试官就:恩恩,恩恩(不知道是不是表示对我的尊重,表示他在听?反正一面面试官也是这样的)。
(3)你说是多线程实现的是吧,那你怎么管理线程的?
用互斥句柄实现同步。
要是多个线程抢资源怎么处理解决的?
这个我们还没做,不是很清楚。
(4)那你在这个项目里面具体做了什么?
主要是学习,学习怎么实现,里面有很多新东西,比如txt文件的动态存储,多个信道分别存储,改进了一些算法,使得程序更加稳定。比如文件夹,之前是一个,现在动态多个,并固定大小为256M,为帧结构的整数倍,方便后续的提取和分发。线程之前的优先级是全部一样的,然后项目需要实时存储,就把存储线程的优先级设置为最高,接收次之,其他的线程相对靠后等。
主要让他觉得你确实做了事情,能说出细节,有些他也不一定懂,我很担心他问我多线程,套接字等,但是他没有细问。
(5)然后问了问,星载接收机、北斗导航掩星探测项目的一些东西,随便问了问做了些什么,可能里面和C/C++、软件设计、测试什么的相关不大,问的比较少。
你这项目好像和测试关系不大,那你为什么面试测试?
没有啊,接收机性能功能的测试,数传地检软件的测试,这些都有实际经验的。不过主要是偏功能型的测试。
那你能简单说下流程吗?
如实说了,测试的流程、方法、思路和相关概念尽量说的详细、简洁!
(6)数据结构算法、其他的东西了解吗?
我说我自学了,了解一些。
排序知道吗?
知道。
写出快速排序的代码?
我心想完了,原理知道,代码没有认真考究过。然后按照原理自己写了写代码,这时正好有人找他有事,他给我说:你先写着。没人在,心理安稳了些,下面是当时的代码:
#include<iostream>
using namespace std;
void quickSort(int a[],int,int);
int main()
{
int array[]={34,65,12,43,67,5,78,10,3,70},k;
int len=sizeof(array)/sizeof(int);
cout<<"The orginal arrayare:"<<endl;
for(k=0;k<len;k++)
cout<<array[k]<<",";
cout<<endl;
quickSort(array,0,len-1);
cout<<"The sorted arrayare:"<<endl;
for(k=0;k<len;k++)
cout<<array[k]<<",";
cout<<endl;
system("pause");
return 0;
}
void quickSort(int s[], int l, int r)
{
if (l< r)
{
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j]>= x) // 从右向左找第一个小于x的数
j--;
if(i < j)
s[i++] = s[j];
while(i < j && s[i]< x) // 从左向右找第一个大于等于x的数
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x;
quickSort(s, l, i - 1); // 递归调用
quickSort(s, i + 1, r);
}
}
写完了,也没法改进了,写不出来,就这样了。在那儿等着,偷看了第一面成绩:B+,暗喜,觉得有戏。
然后他回来随便看了下代码,是那么回事,然后让我说说实现的思路,也就是快速排序怎么实现的。
我举了一个数组,然后将里面的元素按照快速排序的原理讲了一遍,他听了下,没再问了。
(7)你说你了解测试的流程,测试用例的设计方法,那你讲讲测试的基本流程方法吧?
像一面一样巴拉一番。
给你个淘宝的购物车,让你测试,你会怎么测试?
我会测试能不能正常加入购物车,多加入几个商品看反应怎么样,加入非法的不是淘宝的商品会怎么样;然后看看如果付款了,购物车相应商品会不会减少等等。
然后他没深问。
(8)你讲讲平时都怎么学习的吧?遇到什么压力特别大的时候怎么办?遇到不会的问题怎么解决?
扯了下,扯到博客论坛交流,自己写博客笔记等,他就问地址,然后浏览了下,你面了华为?恩不错。
(9)你平时有没有自学过一些软件,比如自学什么工具之类的?
我说有verilog,matlab等。
一般怎么学的?
扯了下自己的学习方法。
(10)你本科硕士都学电子的来做测试,好像跨度蛮大的,你怎么就觉得比那些专门学软件的有优势呢?
我赶紧说我的项目也涉及测试工作,至少做了功能性的测试。兴趣在这里。
别人学了十几年,你怎么知道你怎么赶得上别人?
不学我肯定赶不上了,但是一直学,我会有质的飞跃的。
(11)了解Java吗?
我说不了解。
如果让你去学个新的东西,你会怎么学习?(这个问题HR也问了。。。)
(12)你对工作地点有什么要求吗?
我说最好杭州,亲戚在那边。。。。。。
大体就这些问题吧,然后让我问问题,我又问了什么时候出结果,他好像说一周左右吧,忘了。然后让我在边上等。没让我回去等没有让我回去等结果,表明有戏。
HR面(综合面)
总感觉HR面会很轻松,实际上不是的,问的挺宽泛的,一上来就问技术问题(惊呆了,不适应啊),说说你的项目吧,然后把每个项目简短的说了下,因为感觉她不太耐烦。
(1)你在每个项目承担什么角色?自己做了什么?有什么改进,有多少想法是你自己提出来的?这个项目在同类行业水平中都有什么技术,你们做的在什么水平上?
我主要是算法研究啊什么的,行业最尖端的不是很了解,但是我们是继承别人,并改进,包括我的小论文也是从这个方向发出来。要体现你自己的有参与,并有想法,有改进什么的。
(2)你平时对什么语言比较熟悉?我说C/C++。那你怎么学习的?
我说做项目,缺什么补什么,还有就是自己编程序实现,并设置断点去窗口看它们的内存分配,这样记得深刻些。
你看过反汇编语言吗?
我说没有,这是我接下来想深入了解的地方,除了了解内存加深程序理解,最直接的办法就是看反汇编了,算是扯了下把。
Jave了解吗?
我说不熟。然后没多问java的东西。。。。
(3)举个你觉得自己做的最好的项目,在项目里你做了什么?有什么改进,或新的想法?
将数传地检软件又说了下,改进的地方啊什么的。
这些改进想法都是你自己想出来的吗?
我说不是,是和boss讨论出来,我实现的(心想她应该不懂具体实现吧,其实不是我一个人实现的),后来她没多问。
(4)北斗导航掩星探测项目你做了什么?
做了算法的分析研究。
你有什么改进吗?
我将改进的方案大体说了下。怎么去实现,怎么努力克服困难等。。。。
(5)星载接收机项目,你负责什么?
捕获模块及相关算法。
这个算法是自己研究的还是参考别人的,或者是已经成熟的算法?
我说是经典算法,我主要是先实现,将理论用于实际。并且由于我们行业对稳定性要求很高,不会轻易尝试用新的方法。
那你现在回过头来想想,有什么地方可以改进吗?
有啊,(扯了扯小轮文就是研究捕获算法发表的)比如,之前是按信号频率分块线性分块,并一块一块依次搜索捕获的;其实可以按照多块并行捕获,这样捕获时间段。
这是你自己提出来的想法吗?
不是,看到有论文里说的。
谁的论文?
想了会儿,我不记得名字了。后来没多问了。
(6)你觉得自己的缺点是什么?
想了想,偏见啊什么的。
你这样说我没有感觉,你举个例子吧?
好吧,想了半天。。。。
说一件最近的你觉得最自豪的事是什么?
找到很好的女友,交往4年了,在杭州(赶紧将杭州地点默默强调一遍)可以有什么说什么,真心对我好,很幸福。
祝你们白头偕老!
谢谢。
还有呢?
然后又说中科大代培生篮球赛拿了名次。
你打什么位置,你们第几名?
后卫,亚军。
还有吗?
又说数传地检的项目,刚开始什么都看不懂,后来自己努力学习,最终能够实现基本功能的测试。
那你自豪吗?
我说挺开心的。
(7)那你自己觉得自己是什么样的人?
比较合群的一些特质。说到诚实,诚心待人,积极向上等。
你有没有压力特别大的时候,怎么处理的?
积极学习面对就好,行动多过胡思乱想总没有错的。所以会尝试以行动去解决问题。
(8)你平时怎么学习的?碰到不会的问题怎么解决?有没有觉得自己接下来急需要学习的东西?
测试工具的使用,反汇编,编程之美的思维都需要深入研究下,因为我觉得这本书讲的程序设计思维真的很赞!
(9)你除了投阿里,还有投其他公司吗?
如实说百度、腾讯、网易、搜狗、搜狐、携程、去哪儿等。
什么岗位?
百度研发岗位、腾讯研发岗位、网易还是研发岗位,其他的也有测试岗位的。
她掩口大笑:你怎么这么老实,bat公司都投了是吧?
我只好尴尬笑了笑。
她说:我只是想看你诚实不诚实。。。。。。
那你为什么投阿里的测试岗位,最后给你次机会,如果研发测试都有机会你会选择什么?
我觉得是个坑(赶紧说不忘初衷,因为投阿里就是为了测试来的)我又将能多多学习,多多参与软件开发各个流程说了一遍。双十一系统多么牛逼,想知道背后怎么实现的。
她说:不一定是你想的那么理想?
我赶紧问:难道不是那么牛叉吗?
她说:这倒不是,是测试工作不一定那么理想,希望你有个心里准备。。。。
有的,肯定是从最苦逼的底层做起。
她又在那儿笑。。。。。。
(10)你一直关注阿里吗?
怕她问细节问题,如实说只是用它的服务什么的,关注是最近才关注的。
为了找工作是吧?
我只好傻笑。。。。。
对阿里了解吗?
说了下对阿里的了解,什么最具幸福感公司,公司很大,最近炒得很火的上市什么的。
(11)你对自己的未来有什么规划吗?
要好好做测试,多学习系统的测试知识,使自己成为优秀的测试者。
(12)你对工作地点有要求吗?介意加班吗?
再强调一遍杭州(因为据说阿里比较喜欢杭州的人),加班不要长年累月的就行,因为身体吃不消。
你身体不好吗?
我赶紧说,不是,长年累月的加班,肯定有个累加效应,迟早出问题的。
哦,那到不至于,只是项目紧的时候加班比较多。
(13)然后她笑眯眯的问,你觉得你面试能通过吗?
我也笑笑说:我希望能通过。
行,那你回去等结果吧。
礼貌的互道再见,谢谢您之类的,结束!
终于面世完了,HR姐姐真是很能侃,而且还懂技术,真是虐心啊!终于结束了!
预约的是2014年9月17日下午三点半的面试,一直面到将近晚上七点,赶紧出来吃饭。吃完饭,赶紧回宿舍打开电脑查看面试结果,显示“三面已通过!”,高兴!阿里办事果然神速!后来百度,说三面已通过也不一定保证能给Offer,又不开心了。。。。。
凌晨一点半,手机收到短信:hi,亲爱的同学,恭喜您顺利通过了阿里巴巴集团2015校园招聘面试!现邀请您参加9月18日(周四)下午1点的圆桌沙龙,届时我们将与小伙伴们畅聊阿里文化、工作环境,沟通薪酬等。活动将于9月18日下午1点在中兴和泰酒店准时开始,不要迟到哦~期待您的到来,我们不见不散!
然后就失眠了。。。。。。
总结:其实我个人觉得首先应该从项目准备入手,用你的项目把他往数据结构、算法、C/C++等这些和岗位要求的技能相关并且你也会的方面带。先把项目各种情况考虑清楚,改进的地方、自己负责的东西等等这些准备好了之后,再去补充其他的知识。面试回答问题时不要东拉西扯,面试官很烦没有干货的话,用简洁的话回答重点即可!另外,一定练习纸上写代码的能力,这个和电脑用软件写是不一样的,尤其是在面试官不停打扰你的情况下!
最后预祝大家找到称心如意的工作!