阿里巴巴2018秋招面经之前端岗(1~5面)
五面都面完了,结果还没有出来,今早给大家贡献干货吧。我没写问题的答案,有什么问题可以留言区问我。
内推是在牛客上找到的,所以一定要给牛油们一份回报,楼主还算是个小白,有什么不足欢迎指点:
一面 电话面(1小时)
电话面问题不多,但是十分考验对相关知识熟悉程度,面试官是 P7(不理解这个就去百度吧)
- 以前做过什么项目?使用了什么技术?(balabala...)
- 继续上一个问题,为什么使用 gulp 不用 webpack?
- 你都使用过哪些框架?(就说熟练XXX框架,用过了解XXX框架)
- 继续上一个问题 zepto 和 jquery 是什么关系,有什么联系么?
- 有没有看过框架的源码?(没看完一个框架完整的源码还敢出来混?我只看过 jquery)
- 继续上一个问题,jquery 源码中你对哪个部分印象最深,讲一讲?(我就说了构造函数返回原型链中的 this)
- 最近在实习是吗,实习了多久,在哪实习,实习的工作是什么?
- 实习过程中能不能完成公司给你的工作?工作量如何?
- 实习过程中遇到什么难题,是怎么解决的?
- 函数了解吗?闭包是什么?为什么要用闭包?commonJS 知道不,define 时用闭包做了什么?
- 对象熟悉吗?一般考你对象的话具体会考什么?(居然还可以这么提问)
- 继续上一个问题,你知道原型链是干啥的么,为什么要有原型链?
- 熟悉 this 吗?js 中的 this 和 c++/java 中的 this 有什么区别?
- 继续上一个问题,如果在构造函数中为 this 赋值 1 会发生什么?
- 继续上一个问题,那应该怎么改变 this 的值?
- 学习前端多久了,平时怎么学习前端?
- 未来3-5年有什么规划?(我提到了全栈,于是有了下面一个问题)
- 什么是全栈,你理解的全栈是干嘛的?
- 倾向于走什么技术栈?(我提到了 nodejs 于是又有了下面 一系列的问题)
- nodejs 你了解多少?
- 所有的 ES6 特性你都知道吗?如果遇到一个东西不知道是 ES6 还是 ES5, 你该怎么区分它
- Express 和 koa 有什么关系,有什么区别?
- 为什么选 nodeJS 为什么不喜欢 php 和 python?
- 你对 php 和 python 掌握的怎么样?
- 你还有什么问题想问我?
- 对加班有什么看法?
二面 视频面(1.5小时)
面试一开始面试官给我展示阿里远程会议的各种酷炫功能,随后开始面试。面试官还是 P7
首先是给了好几个代码题,问其中每个 console.log 的输出是什么。这里的代码的确很多,面完全部面试写这个文章的确记不起来了。值得一说的是每个题都有陷阱,十分容易错的地方,我也不例外的掉坑里了,面试官会告诉你错了,然后让你自己思考为什么错?正确的应该是什么?当然还要解释原理。
看完了题目就该自己写了,共享桌面。
- 写一个_new()函数,实现 new 关键字的功能;
写完了,需要解释思路,当然如果有那个地方写错了,一定是要深究的。这里面会包含一些深层次的问题:prototype 和 proto 的关系是什么?
三面 视频面 (40分钟)
二面面试官很愉快的说我通过面试了,去叫了另一个面试官。这次的面试官,应该也是 P7,上来就问问题:
- 自我介绍一下(发现问题点时打断介绍,就开始问问题)
- 你前端是自学的呀,怎么个自学法?
- 你都看过什么书?最近在看什么书?
- 用过什么框架?有没有看过什么框架的代码?
- 你做过什么项目?
- 有没有学过设计模式?
- 说一说观察者模式吧!能不能写出来?(能,那就写)
- 为什么只知道这么几个设计模式?
- 你最大的优点是什么?
- 那你最大的缺点呢?
- 如果有个功能你写的代码有一个 bug , 刚好你同时的代码可以弥补你这个 bug, 但是他的代码有新的 bug 怎么办?
- 如果小组开发的时候对于一个软件的各个功能,每个人都有一定的 bug 怎么办?
- 熟不熟悉 git,你用它做过什么?
- 你大学期间做过最疯狂的事情是什么?
- 熟不熟悉 http? http 和 https 有什么区别?
- 你除了写博客还有什么输出?
- 做代码的时候有没有考虑过安全问题?怎么防止注入?
- 如何防止 XSS 和 CORS? 被攻击了该怎么办?
- 现在你的领导给你了一份工作,要求你一个星期完成,但你看了需求以后估计需要3周才能完成,你该怎么办?
四面 交叉面试 电话(50分钟)
我投的是天猫事业群,交叉面试就是找个别的事业群的面试我,防止作弊。这次是一个 P9 段位的面试官:
- 自我介绍一下
- 为什么学前端?
- 你学过 c++ 是么,问你几个 c++ 的问题(简历里写了以前学过 c++):
- 你学 c++ 到什么程度了?
- 你用过 STL 吗?里面的 Map 类是什么结构的?
- static 关键字怎么用?
- static 变量存储在堆还是栈?
- Qt 中 main 的执行过程是什么样的?
- 最近做过什么项目?使用了什么框架?
- 有没有看过 wordpress 等博客框架的源码?
- 为什么使用 Express 不用 koa?
- gulp 和 webpack 有什么区别,为什么你要用 gulp?
- 知道 XSS 吧,怎么防护?cross-site script
- 你项目中如何进行用户输入过滤的?都过滤了那些内容?(根据回答有了下一个问题)
- 为什么没有过滤<img>标签?
- 知道 CSRF 么,怎么防止 CSRF? cross-site request forgery
- 你前端用了Bootstrap, 知道它的响应式是如何实现的吗?
- 媒体查询的原理是什么?
- 知道流媒体查询吗?
- 那我告诉你什么是流媒体查询(......此处省略100000字),你懂了吗?(我说懂了就有了下一个问题)
- 现在要你实现一个流媒体查询,你怎么做?
- 你现在在实习是么,实习的主要工作是什么?
- 你实习过程中在做一个 app, 如果让你来主导这个项目,你使用什么框架?为什么?
- 学过 es6 是么。知道 promise 么?它用来做什么?
- promise 只有2个状态,成功和失败,怎么让一个函数无论成功和失败都能被调用?
- Promise.all() 是干什么用的,怎么用?
- 怎么判断一个对象是不是数组,尽可能多的说出你知道的方法?
- 怎么把一个类数组对象转为数组?
- 知道本地存储吗,localStorage 是干什么的?
- localStorage 的最大存储空间是多少?如果存超了对怎么样?
- localStorage 是注册在几级域名底下的?
- 说一下 Nodejs 的 event loop 的原理
- Angular 和 vue 的数据绑定是怎么实现的?有什么区别?
- 平时是如何学习 js 的,从哪里获得相关信息?
- mysql 和 mongoDB 有什么区别?
五面 HR面 电话(30分钟)
- 你平时的是怎么学习前端的?
- 你的专业比较偏硬件,为什么不学习硬件了?
- 你为什么要学习前端?
- 你转行学前端和专业的毕业生比能有什么优势?
- 你学习过什么框架,现在在学习什么框架?
- 为什么先开始学习 React 而不是 vue、Angular 或其它框架呢?(不愧是阿里巴巴的 HR,技术面感觉扑面而来)
- 你平时是如何获取前端知识的?
- 你是通过业余时间完全自学的前端,你是如何制定学习计划和学习目标的?
- 你学习的过程中,有没有真正的做过什么东西?
- 除了做这些东西你还有什么输出?
- 有没有经常和前端同行业的人交流,通过什么途径交流?
- 你现在在实习是么,实习工作是什么?
- 那你为什么不想留在现在实习的公司?
- 你在实习期间最大的收获是什么?
- 前端现在更新的这么快,你对前端行业有什么看法?
- 现在给你一个项目,有两个框架可以选择,一个你比较熟悉,另一个是个新框架,大家都没用过,你会如何选择?
- 你家是(xx隐私省略)的,现在在青岛上学,以后让你来北京的话你有什么看法?
- 你除了前端还有没有想从事的行业,不限于技术?
- 你还投了哪些公司,现在招聘进度如何?
写在最后
我觉的整个过程心态实在太重要了。作为一个前端人,阿里巴巴,是我最想去的国内公司,我看重的也不是他薪水如何,完全在于他的技术,这一点 github 可以说明一切。阿里是个十分重视基础的公司,和浮躁的前端大环境形成鲜明的对比。但其实,前端的更新速度如此快,还是基础的东西日久弥新。
我不是第一次投阿里巴巴,所以心态一开始还是挺平和的。电话面也很放松,也适当的开了个玩笑(给面试官黑了一把世界上最好的语言)。但这是我第一次电话面试通过(以往不是被笔试虐了,就是挂在了面试。别问我投过多少次),随后通过二面,三面,hr面,真的会感到越来越紧张,越来越患得患失。平时在公司实习,本来就没有时间准备面试,但偏偏这种心态十分影响复习效率。可能是真的太在乎这个面试结果了,在整个过程(1个月)中都会感觉这是我离梦想中的公司距离最近的一次,绝对要保证万无一失,要表现的很好。这是自己给自己的一种无形压力和紧张情绪,有时连做梦都在面试!!还好我坚持下来了,坚持到最后了。
- 技术型岗位的应聘虽然不需要为每个公司有针对性的编写简历,但是一定要足够了解这个公司,明白公司需要什么,你能为公司带来什么。
- 如果你还年轻,距离找工作还有几年,那你需要一个清晰的规划,学什么知识点,掌握什么技术,这些规划都应该以目标公司的需求为导向。
- 最后留个博客地址,Faremax,也是个博客,内容是一样的。