2016阿里前端开发实习生面试经历

  最终有时间也有机会来写这么一次面经了。

事实上距阿里的近期一次面试也有29天了。这段时间一直在等待通知,最终在昨天下午收到了阿里的贺电,一直悬着的心也能够放下了。如今赶紧把我的经历分享给各位小伙伴。

  一面:

  没有一点点防备,内推的第5天下午正在做实验的我突然收到了阿里一面的电话。当时认为自己状态还能够,于是就直接面了(面试的时候假设状态不好,能够给面试官又一次约时间),尽管是一面但认为考察的非常广泛(有点交叉面的感觉)。从基础,知识广度以及人品等各方面对我进行了询问~

  ---首先是基础

  Q: 我是淘宝的xxx(奔溃,太紧张没有记住面试官的花名),请你先自我介绍一下。

  A: 具体介绍了一下我的个人信息,项目经历,擅长的技术。

  Q: 你对css和js两者哪个掌握的更深入?

  A: js。

  Q: 好,那你讲讲怎样让一个函数调用自身。

  A: 函数内部能够使用其函数名或者argument.callee进行调用。(js高设上有一小节讲得非常具体)

  Q: argument.callee是什么?

  A: 表示当前运行的函数,可是在ES5的严格模式下是不能使用的。(要勇敢地发散问题。这个ES5就是发散出来的,体现自身知识广度)

  Q: 好,我有一个数组,怎样实现它的深拷贝和浅拷贝?

  A: 浅拷贝就是保存引用,能够直接把它赋值给还有一个数组。

深拷贝能够用数组方法实现,比方concat,slice或者for循环遍历数组取出。

  Q: 怎样做一个高效地递归操作呢?

  A: (有点蒙蔽。这个问题回答得略卡) 嗯。首先是要尽量做到尾递归。保证堆栈的复杂度最小。。。

然后。。。还能够用记忆的方式(js语言精粹上面的,突然想到了!) 就是每进行一次递归。都把上一次递归结果缓存到一个数组中。下一次递归能够直接调用这个数组的值,降低寄存器的调用。

  Q: 不错,讲讲事件流吧。

  A: (心里突然释放了非常多) 先说说IE的事件流吧。是採用了事件冒泡机制。而DOM标准事件流则分为三个阶段:事件捕获阶段。处理事件阶段,事件冒泡阶段。通常我们须要写一个函数来兼容两种浏览器的事件。

然后balabala把函数用口头实现了一次。。。

  Q: 那你知道事件托付吗?

  A: 嗯,知道。就是把全部子节点的事件都托付给其父节点进行监听。在函数中能够swtich某个节点。

  Q: 仅此而已吗?

  A: (哈哈,非常想说句不然呢?) 请给我点时间想想~

  A: 键盘事件能够监听它的keyCode...(好吧,好像就这么多了把)

  ---開始发散了

  Q: 刚刚开了下你的个人站点。那个相冊旋转是怎么做的?

  A: 用React写了一个状态机。假设用原生js或者jquery写可能会非常easy,用React的主要是之后考虑打造一个SPA。首先是要写一个AJAX请求后台数据,这段代码写在React的ComponentDidMount中,然后把每一个相冊的旋转所用到的属性当作是state放入父级组件的props中。

  Q: 看来你非常了解React。能讲讲它是什么原理吗?

  A: React是facebook提出一个解决大型应用的框架,主要是利用状态机将属性和状态进行隔离,并用一个组件维护,再将这些组件复合。性能非常快,核心在于虚拟DOM和单向数据流。

  Q: 虚拟DOM?说来听听呢?

  A: 在js中,最消耗性能的事实上是DOM操作,一个DOM操作能够将界面元素重排或者重绘,而虚拟DOM是把元素放到缓存中。这样变化仅仅是在缓存中,性能会很快,这个实现主要依赖于diff算法,然后diff算法..balabala...

  Q: 我看了一下。你这里面一页有上百张图片,载入的有点慢,你有考虑过优化吗?

  A: 嗯,考虑过,可是还没时间去做(如今都还没做= =)。能够把100张图用缩略图,即用小图。大概在2-3K放出来。要详细查看每张图的时候再把原图呈现。

  Q: 那你对整个web的性能有什么了解吗?

  A: 嗯。大概有css精灵图。http缓存。cdn,脚本合并。

。。

然后一个一个具体解说。

  

  ---接着是聊生活

  Q: 我看你在学校担任过IBM俱乐部的部长。能够讲讲你做了些什么吗?

  A: 嗯,主要承担一些设计海报,制作站点这些工作吧。

当然还有给14级的同学进行网页知识的培训。

  Q: 我对你的培训非常好奇。能具体谈谈吗?

  A: (怎么会问这个,我開始方了) 然后balabala讲了我是怎样培训的。从w3c到现场授课等等...

  Q: 那你认为你的长处是什么?

  A: 对前端的热爱。对生活的乐观(好官方的回答...)balabala...

  Q: 缺点呢?

  A: 喜欢玩英雄联盟把。偶尔会忘了时间,可是自己还是開始有克制了...(还没说完电话就挂了...原来是通话一小时自己主动断开了)

  ...断线中

  Q: 哈哈,不好意思,我们继续,只是得快点了,再具体讲讲你对新人的培训过程吧。

  A: (好纠结),于是讲了非常多细节。

  Q: 还有什么问题要问我的吗?

  A: (最终该我问了!) 我想了解下淘宝如今所使用的技术~

  Q: 不同业务不同技术嘛。然后具体讲了各个团队的方向...

  A: 想了解下淘宝团队的英语水平。

  Q: 有特别好的,也有一般的,但一般的文档是能读懂的。

  A: (然后内心下定了学好英语的心),嗯,我也没有什么问题了.

  Q: 那好。那等等结果吧~再见。

  

  一面结束,说好的半个小时左右足足聊了75分钟....预计面试官也饿了。

  二面:

  一面结束已经是下午5点30了。吃了个饭回来大概在6点40的时候,又看到了一个杭州的电话打来。不会吧。还有。

  

  Q: 你好。请问你是xxx吗。我是淘宝技术部这边的,想问问你有没有时间。

  A: (接都接了。那就面吧) 你好,如今有空,请问这是第二次面试吗?

  Q: 嗯,占用你半个小时时间。我们開始吧。

  A: (我不信半个小时!)

  

  ---直接从项目入手问

  Q: 看了一下你的几个项目,能告诉我你在遇到问题是怎么解决的吗?

  A: 事实上我之前的开发中遇到的问题不是特别多。问题主要在最后的性能问题上。

自己首先会尝试调优一下自己的代码,然后再去从文件打包上去思考,假设无法自己解决,会去參考下别人的博客或者是社区。

  Q: 那你怎样使用文件打包的?

  A: 刚開始的时候接触grunt。发现利用插件能够非常快的实时压缩合并css,并且仅仅须要写一个Gruntfile.js文件即可了。十分方便,后面又了解到gulp,代码量少写一半。由于它基于流。再到后面学习react的时候,gulp必须使用非常多插件才干转义jsx语法。于是我就在社区中发现了webpack这个工具。并且在github上star了一下,认为这个工具特好用,然后大概讲了下webpack的配置...

  Q: github经经常使用吗?

  A: 也是近段时间開始用起来的。会慢慢熟练起来。

  Q: 我看了看你的个人仓库,里面还有ES6的仓库。怎么是空的呢?

  A: (问到此处好尴尬...) 由于我如今写的ES6的语法还没投入到实际的demo中,有点纸上谈兵,仅仅能写写片段代码运行。

近段时间也正在逐步了解。

  Q: 嗯,看了下好像还有jquery的仓库。那你对jquery的源代码有了解吗?

  A: 大概看过几个模块,然后讲了许久...

  A: 但我认为jquery会慢慢的不适合大型业务。

  Q: 哦。什么意思?

  A: jquery有非常大的性能瓶颈,当DOM操作增多的时候,我们须要考虑用react。

  Q: react?

那你知道angular吗?

  A: 嗯,知道,只是angular如今是2.0的beta版本号。打算等稳定下来再去细致品味。

  Q: 那你知道react和angular分别用在什么样的业务吗?或者说两者的差别。

  A: 自己从性能方面和MVC层面讲了一下...

  

  ---谈谈未来

  Q: 发现你对js的新技术还是非常有研究的。那你认为以后的js会发展成什么样,或者说前端会发展成什么样。

  A: 从14年的D2前端论坛開始就已经非常明白的指出了'大前端'这个概念。由于前端本来就是一个通十行才干精一行的职业。所谓大前端从学习角度上来看一定要保持饥饿感,保持兴奋去适应新技术带来的变化。详细的说,大前端要兼顾变化多端的前端和以node为核心的后端。然后又从前后端分析了一下ajax和http这些东西(蛮拼的!为了把全部知识面暴露给面试官)。

  Q: 想去哪工作呢?

  A: (我被吓到了.)杭州吧,互联网的氛围一级棒!

  Q: 嗯。还有什么问题要问我的吗?

  A: 如今前端行业对ES6的使用是什么情况呢?

  Q: 看整个部门人员的情况吧,说不定的。

  A: 想知道你的花名,哈哈。

  Q: 我叫释然。

  A: 不好意思,没有挺清楚。

  Q: 释然,释然的释,释然的然。

  A: (听着名字就认为牛比) 恩恩,谢谢你。

  

  看了看时间,30分钟!能够,这时间卡的给波满分吧!

  后面去问了问我学姐,才发现释然是她的老大!又去淘宝技术的官网了解了下,确实大神一枚,怎么就没要联系方式呢?!

  

  HR面: 

  一二面在同一天,我想HR也会非常快来吧。就这样每天提心吊胆地过着。看着论坛里的小伙伴有的非常快就HR面了,心里越来越方了。等到3月16号的时候。HR最终打电话过来了,和前两面面试官一样。声音好听得不行,只是这次是个妹子!

可是当时我太困了,就约了晚上。结果晚上也没有打电话过来...之后又是每一天中午打过来。结果发现我都有课,就这样到了18号晚上才有时间= =前前后后约了4次!

  Q: 你好,我是xx(因为是妹子,花名保密) 。

  A: 恩恩,能够開始了。

  Q: 我看你以前创过业。能够跟我讲讲为什么要创业吗?

  A: (我回答的真的非常白痴啊...) 前端是一个各方面都须要有所见解的行业,加之非常想自己对新东西也有一定的好奇。于是就跟着学长和几个朋友一起试试了。

  Q: 讲讲创业中的细节呢?

  A: 大致讲了讲我的工作。怎样打造团队,怎样熬夜...

  Q: 成功了吗?

  A: 失败了。由于...

  Q: 事实上总的来说不是你自己想创业对吧?而是学长找到了你。

  A: (这个问题,能够说三次面试以来最不好回答的) 还是挺想的,主要自己也认为这个项目能够做做。还能够锻炼锻炼这样的高压工作。

  Q: 嗯。我懂。可是你仅仅是学长叫到你才去的是吧?

  A: 嗯。能够这么说吧,但自己还是非常有想法的。

自己也非常想掌握一些市场方面的知识。想做个全才。

  Q: 谈谈你的优缺点呢?

  A: (然后从自己的自信,负责,对新技术的渴求这几点讲述长处) 缺点嘛,可能自己有些浮躁把。由于前端本来就是个快速发展的行业,每年都有成堆的框架出现。可能在没有接触详细业务之前会有所迷失。不知道该学什么。

  ...最后就是对我的一番评价。在肯定了我的学习能力后,基本上都是说我的不足(内心非常崩溃),差点儿相同面了40分钟就结束了。

  说实话面了HR后一点自信都没了= =。首先感觉自己有几个地方回答得不理想,然后就是认为HR姐姐分析地比較到位(感觉跟中学时代的语文老师一样,哈哈),心里特别没底。

但过了段时间后心态调整过来了。又回到了寻常的模式。大概过了快一个月收到了阿里实习生的offer,真的是非常大的一份惊喜。

  从这次面试要肯定自己过往的努力。可是要改进的地方也有非常多。正如HR姐姐提到的做什么事之前多问几个为什么,不管是从技术还是什么角度上出发,都要明白好自己的目标,作为一个开发人员,所应具备的不不过开发技能以及行业视野。

原文地址:https://www.cnblogs.com/yjbjingcha/p/7325196.html