被告知简历经过评审以后的三天后收到一个来自上海的电话,我怀着半信半疑的心态接通了电话(惧怕是办信用卡的)。对面是个小哥哥,简单介绍了下本身是阿里的,询问我有没有时间,作个简单地电话初面,看看是否合适在发起后续流程进行正式面试。当时正在上班的我一口答应,而且快速冲到了走廊。出来的我就感受有点后悔,由于门外那叫一个冷,我没有穿上我一千块的保暖大衣,又很差意思说回去工位穿衣服,因此全程都在哆嗦中度过。css
一开始让我作了个简单的自我介绍,问我如今在哪里工做,为何要离职,目前手头上跟的什么项目什么的。而后让我挑一个最近正在作的项目,聊聊技术栈。我找了一个我负责构建的项目,而后从项目背景、人员分配、技术栈提及,巴拉巴拉说了大概四五分钟。紧接着小哥哥问我为何选择这个技术栈,我又巴拉巴拉说完后就说感受我挺合适,给我发起正式面试流程。我一听,那个激动巴不得立马发起流程!而后小哥哥问我有什么问题要问他的,因为外面实在太冷了,因此我就问了一个问题,能介绍下您所在部门的业务吗?这一问可不得了,面试小哥哥从本身的部门,再到前景,再到工做内容给我介绍的明明白白,说北京有岗位,可是会先去杭州工做半年到一年时间,最后说会在一周内联系我进行面试。因为太冷了,我就没有再问问题,就这么愉快地结束了!前端
这一步没什么问题,只要放开了和面试官聊就好了,把你想知道的都问清楚,把他想知道的尽可能都告诉他,先给对方一个好的印象,至少让别人感受你是积极向上的而不是死气沉沉混机会的。node
因为一面告诉面试官我和他不在同一座城市,并且目前在职没法去现场面试,他很爽快地答应了能够进行视频面试。大概过了三天的时间,又收到来自这位小哥哥的电话,具体是想和我安排面试时间,我问了下晚上是否能够,小哥哥爽快答应,此时我已经了解到阿里晚上也是正常工做时间,这和我目前同样。咱们相互约定了时间,互换心声,相约不见不散!到了约定时间我会想起小哥哥说会给我进行视频面试,我一来懵逼,既然是视频面试莫非是QQ视频、微信视频?还在疑惑的我被手机铃声打断,我一看仍是熟悉的号码,仍是熟悉的感受,果真是那位可爱的小哥哥。小哥哥问我准备好了没,准备开始面试了!纳尼?小哥哥居然是个人面试官,我一直觉得他是HR小哥哥呢,还没待我询问清楚,他说会发一条连接到个人邮箱。多是安排的人比较多,一时间找不到个人邮箱了,就说你先来个自我介绍,此时的我心灰意冷,不是才认识的嘛,都已经这么熟悉了还须要自我介绍?是否是早已经忘记人家了?当我还在伤心的时候,我发现时间已通过了三秒钟了,因而我开始从新介绍我本身,此次的自我介绍相比以前的要更加详细,主要是我的的基本状况、工做能力和将来规划三个方面讲的,自我介绍完后小哥哥说到挺有想法的小伙子,我给你发了连接到邮箱里面,你去看看。说时迟那时快,我用了两秒钟就等进了邮箱打开了连接,个人英俊容貌立马出如今电脑屏幕上,我也看到了面试小哥哥!哇,简直和我同样英俊、潇洒。管不了那么多了,我已经准备好面试了。react
忽然个人头像缩小了,屏幕上面出现了熟悉的文本框,是的,你没猜错,现场编码!第一道题是考察正则匹配的,这道题不难,可是须要考虑边界状况,由于过于简单因此题目没有就不贴出来了。面试
大概花了一分钟搞定,而后满意地告诉小哥哥作好了。他看了个人结果后立马出了第二道题:ajax
具体题目因为时间太长没有记太清楚,是一道操做数组的题目,暂时就以当下最火的数组去重为例吧,该题重点考察对js数组的掌握,不能使用ES6语法。算法
拿到这道题我以为很简单,因而就开始了正常的排序,去重。下面是个人第一次尝试数组
function merge(arr) {
if (!Array.isArray(arr) || arr.length == 0) return [];
arr.sort();
var ret = [arr[0]];
for (var i = 0, j = i + 1; j < arr.length; j++) {
if (arr[i] != arr[j]) {
ret.push(arr[j]);
i = j;
}
}
return ret;
}
复制代码
小哥哥说能够调试,我打开了控制台,以最快的速度粘贴了个人代码后发现结果不对呀,怎么搞的?才发现是由于顺序改变了,不能进行排序。再次个人第二次尝试浏览器
function merge(arr) {
if (!Array.isArray(arr) || arr.length == 0) return [];
var ret = {};
for (var i = 0; i < arr.length; i++) {
ret[arr[i]] = i;
}
return Object.keys(ret);
}
复制代码
我发现这样确实能够去重,奈何顺序也跟着改变了,这该如何是好呢?这时小哥哥发话了,这道题很难吗?我立马回了句不难,我不该该排序的,而后他说根本不须要排序可使用ES6的语法。纳尼?这道题不是考察算法而是考察ES6语法,打死我我也不信,这明明是算法...就在这零点零一秒的时间里,个人任督二脉忽然被打通,我没在抱怨了,而是以最快地速度进行了个人第三次尝试bash
function merge(arr) {
if (!Array.isArray(arr) || arr.length == 0) return [];
var ret = [];
for (var i = 0; i < arr.length; i++) {
// 或者 ret.indexOf(arr[i] == -1)
if (arr.indexOf(arr[i]) == i) {
ret.push(arr[i]);
}
}
return ret;
}
复制代码
还没写完,小哥哥就同步到个人想法了,顺利过关!顺便一提,其实去重还能够用一句代码搞定:
[...new Set(arr)]; // 不符题意
// or
Array.from(new Set(arr)); // 不符题意
// 感谢评论区大佬的指点,小弟想到了一句话解决的方案,包括filter,此处给出另一种变态方案,请笑纳
(arr + ',').replace(/(\d+,)\1+/ig, '$1').split(',').slice(0, -1);
复制代码
这里是对ES6自带API的考察,而后顺势给我同步出第三道题
实现函数的柯里化
仍是熟悉的配方,因而开始了个人尝试套路
function composeFunctions() {
var args = Array.prototype.slice.apply(arguments);
var _func = function() {
if (arguments.length === 0) {
return func.apply(this, args);
}
Array.prototype.push.apply(args, arguments);
return _func;
}
return _func;
}
复制代码
以上是个人第一次尝试,当时我由于传错了参数,也就是最后Array.prototype.push.apply那句传错了参数调试死活出不来,我感受个人思路没错呀,为何结果不对呢,正打算打开debug工具调试,小哥哥开口说话了,问我这个题目很难吗?我固然说不难了,这辈子都不会以为难的。而后他开始帮我分析,他说这个题怎么能返回一个函数呢?我...emm?我说对,不该该返回函数,此时估计小哥哥意识到把我带偏了,因而赶紧说道是返回一个函数哈,我...emm(被支配的恐惧感让我留下了没有技术的泪水)?此时我已没法用言语表达个人尴尬之情。他问我那问题出在哪里?我说我感受写的没问题,可是死活出不来,而后我看他在阅读个人代码,而后说了句好的,咱们直接开始面试吧!原本有四个题,我以为你作三个就能够了!
前戏大概花了十五分钟左右,而后直奔主题。
第一个问题是老生常谈的居中问题,如何用css来实现水平垂直居中。我用了六种实现方案,其中最后一种是基于vertical-align配合文字基准线来实现的,有兴趣的小伙伴能够自行找下该方案。
第二个问题是Promise的用法以及实现原理。
第三个问题是前端存储方式,以及它们之间的优缺点。
第四个问题是移动端页面适配解决方案,个人回答是淘宝的flexible.js来作屏幕适配,而后面试官询问了它的实现原理,以及浏览器中几种长度单位(rem、em、px)的特色和区别,很惋惜这块我答得不是很好,没有彻底理清物理像素和逻辑像素的区别,面试官小哥哥也告诉我了解一个框架的实现原理比用一个框架更有意思,不是么?
第五个问题是React、Vue之间的区别和实现原理,另外问了下React中Fibber是什么?我只知道Fibber是调度,能够提高react渲染的效率,然鹅不太清楚具体的实现原理。
第六个问题是JS的Event Loop。
第七个问题是三次握手和四次挥手。
最后问了我最近最有成就感的项目,并介绍下项目的技术方案,哪些地方让你特有成就感,还有遇到的困难是什么,如何解决的?
最最后面试官对我进行了一个评价,说我知道的还挺多就是表达不是很流畅,让我从此要多注意,我连声达到好好好!紧接着就说先聊到这里,有什么问题须要了解的吗?我问了两个问题,第一个是他们对人才的定义,想要招个什么样的人?小哥哥微微一笑,说道这个问题太大了,立马反问给我,让我给人才下个定义,其实我就是想知道我今天的表现如何因此才提了这个问题,因此我就巴拉巴拉说了个人人才观,随后他也像我阐述了他的观点。紧接着我就问第二个问题,面试结果何时能知道?他说最迟一周,后来我发现这是全部面试官的一个套路,只要问道确定就会说一周以内给结果。最后就愉快地结束了今天的面试,整体来讲仍是比较轻松的。
一面面完大概过了四天左右收到了来自杭州的电话,告诉我一面经过了约个时间进行二面,而且和二面面试官互加了微信。后来我才发现,二面面试官就是当初某boss上面跟我聊天的大佬,技术专家级别!我怀着忐忑的心情等待接受二面的摧残,由于二面是部门负责人面。
面试终究仍是来了,看到来自杭州的电话火烧眉毛地接通,据说话的口音感受面试官很奈斯,瞬间就没有了压力。首先让我作了下自我介绍,接着就开始正式的面试环节。
自我介绍中粗略地介绍了我目前作的业务,面试官让我挑一个最熟悉的跟他聊聊,具体从技术方案、遇到的问题、解决状况来阐述。前十来分钟基本上就是按照个人项目来进行的,一切都很顺利。紧接着问了几个ts相关的问题,就说今天的面试先这样,问我有没有问题要问!我一脸懵逼,由于整个面试过程都很顺利聊得也很开心,忽然结束是否是自我感受良好,他人感受很差呢?虽然有一系列疑问,可是我只问了一个问题,就是当天在公司干活时遇到的一个问题,他先是笑了一下而后问了下我是如何解决的,我巴拉巴拉说完后,他提出本身的看法。说很是欣赏个人处事方法,第一次被面试官夸赞的感受简直受宠若惊!而后告诉我若是是他他会如何解决,大佬果真是大佬,我默默地叹息道!随后就结束了二面。
二面结束后又是漫长的等待,等了十来天时间还没联系我,我以为应该是跪了吧。因为我加有一面、二面的面试官,因此就试探性地问了下二面面试官个人状况,他说你经过了,不过boss最近比较忙没有时间面试,因此就拖了这么久,再耐心等等!知道结果的我受宠若惊,决心要好好准备。
距离二面结束两周后终于有一个杭州的电话打进来,果真是阿里的HR,跟我约了周末进行视频终面。并告诉我boss很忙必定不要失约。
终面的前一晚HR小姐姐打来电话说须要调整面试时间,由于boss临时有个会议,因而向后延了五天时间。
面试的时间是工做日,我请了假回到家中,虽然说前两面都很顺利,可是第三面仍是很紧张。三面使用的是阿里的内部会议系统,到达指定时间后我链接上去没有任何回应,打电话给HR小姐姐始终占线,瞬间内心感到更加紧张,五分钟后对方接了进来。我看到一共有两我的,一个是传说中的boss(男),另一个(女)没有猜到是什么岗位。简单地询问后就直扑主题。
首先让我作个自我介绍,介绍完后问我在京东作什么?我当时脑子是懵逼的,我就说我在作什么,作什么?两句话介绍完后,boss接着问,你所说的XXX产品是个啥?真是一波未平一波又起,个人脑子已经一片空白了,简单地介绍了产品后,boss抬头看了下我说,我没有问题了,又看了下另外一位面试官问到,你还有什么问题吗?另一位面试官就问我离职的缘由是什么?我说想去更好的平台工做。紧接着说个人求职意向是北京,可是他们是在杭州,我说HR告诉我北京有岗,面试官答到要先来杭州工做半年到一年才能去北京,我说没有问题!而后就问我还有什么问题吗?
我提了三个问题,第一个仍然是想知道他们对人才的定义,获得的答案是问题太大了,换个问题吧。第二个问题是前端的发展路线,从ajax到node,再到数据驱动,下一个会是什么呢?在一旁看手机的boss抬头看了看我说道,很差意思我不是搞前端的,你换个问题!我说出了个人第三个问题:结果何时能出来?获得的答复是一周内,而后就说今天先这样,后面有消息会有电话通知。一脸懵逼进来,一脸懵逼出去,就这样结束了三面。
因为是请假因此面完后直奔公司继续工做,刚坐下就收到了来自阿里巴巴的邮件通知,觉得顺利经过,结果一看个人简历直接被推到了蚂蚁金服!说明CBU流程已经结束,个人简历获得了释放,也就意味了面试跪了。非常失落,因而截了个图发给了个人一面面试官,他说帮我问问boss怎么回事。很快告诉我未经过的缘由是项目的复杂度有点问题。并不断安慰我说很正常,面试经过率很低,让我不要灰心,面试是很看运气的。另外告诉我一面和二面面试官都以为好惋惜,可是没有办法。让我试试其余的部门,再次感谢很是可爱的面试官小哥哥,全程对个人帮助!虽然非常失落,可是面试以后的总结仍是必不可少的。
相比其余的企业,我发现这次面试阿里过程当中被问到的问题还不算很难,阿里更看重的是基础,而不只仅停留在会使用的阶段。因此平时要多看看优秀开源项目,多看看基础的内容,多了解底层的实现原理。
对于boss面问到的问题,我总结了一下其实这两个问题都很大。首先第一个问题,你在作什么?其实潜台词就是问你都作了什么项目,此时正确的作法是介绍本身参与的项目、所在项目的角色,而后详细讲解你参与项目的技术方案,开发过程当中遇到的问题以及如何去解决这些问题,将主动权彻底交给你,你能够自由发挥把面试官带到你的思路中。其实面试官更关心的是你解决问题的过程,而不是像我同样两句话搞定。第二个问题就是要详细介绍本身的产品,产品和其余竞品的优点在哪里?以及你贡献的内容和目前取得了什么样的成就等等。这种开放性的问题说好答也好答,说很差答也很差答,彻底看本身的语言组织能力。
阿里一直以来都是我心中想去的公司,在中国的互联网公司中也是名列前茅。因此不是随随便便就能进入的,要想成功进入阿里除了过硬的技术基础外,还须要有良好的表达能力、处事能力等软实力。一次失败不算什么,认真总结,在下一次遇到一样的问题而不至于用一样错误的方法去处理才是最重要的。就和农药里面的程咬金同样,反正你打不死我,不服就来打我呀!