这是去年8月秋招的面试。五期采访结束了,来给大家贡献一下干货吧。问题的答案我没有写,大家有什么问题可以在留言区问我。OnesidePhoneinterview(1hour)电话面试的问题不多,但比较考验对相关知识的熟悉程度。面试官是P7(这个不懂就百度)你之前做过什么项目?使用了什么技术?(balabala...)继续上一个问题,为什么要用gulp而不是webpack?你用过哪些框架?(假设你精通XXX框架,并且用过它来理解XXX框架)继续上一个问题,zepto和jquery是什么关系,有联系吗?你看过框架的源代码吗?(一个框架的完整源码不看就敢出来?我只看jquery)继续上一个问题,jquery源码的哪一部分让你印象最深刻,说说?(刚才说了构造函数在原型链中返回this)你最近是实习生吗,实习多久了,实习生在哪里,实习生的工作是什么?你能在实习期间完成公司交给你的工作吗?工作量如何?实习期间遇到了哪些困难,又是如何解决的?你了解功能吗?什么是闭包?为什么要使用闭包?commonJS知道吗,闭包在define的时候做了什么?题材熟悉吗?一般来说,你的目标会测试什么?(这个问题你还可以问)继续上一个问题,你知道原型链是干什么用的吗?为什么会有原型链?你熟悉这个吗?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类里面的结构是怎样的?如何使用静态关键字?静态变量是存放在堆上还是栈上?Qt中main的执行过程是怎样的?你最近在做什么项目?使用什么框架?你看过wordpress等博客框架的源码吗?为什么使用Express而不是koa?gulp和webpack有什么区别?你为什么使用gulp?知道XSS,怎么防护?跨站点脚本您如何过滤项目中的用户输入?这些内容被过滤了吗?(根据答案有下一题)为什么标签没有被过滤?你了解CSRF,如何预防CSRF?跨站请求伪造你前端用的是Bootstrap,你知道它的响应式是怎么实现的吗?媒体查询的原理是什么?了解流式查询?那我告诉你什么是流式查询(……这里省略了十万字),你明白了吗?(我理解下一个问题)现在你需要实现一个流媒体查询,你是怎么做到的?你现在是实习生吗?实习生的主要工作是什么?您在实习期间正在开发一款应用程序。如果你要领导这个项目,你会使用什么框架?为什么?你学过es6吗?你知道承诺吗?它是干什么用的?Promise只有两种状态,成功和失败。一个函数怎么调用,不管成功还是失败?Promise.all()是做什么用的?如何判断一个对象是不是数组,方法你知道多少就说多少?如何将类数组对象转换为数组?你知道本地存储吗?本地存储有什么作用?localStorage的最大存储空间是多少?如果存储超过限制怎么办?localStorage注册在什么级别的域名下?说说Nodejs的事件循环的原理。Angular和Vue之间的数据绑定是如何实现的?有什么不同?你平时是怎么学习js的,从哪里获取相关资料的?mysql和mongoDB有什么区别?五面HR面电话(30分钟)你平时是怎么学习前端的?你的专业偏向于硬件,为什么不学硬件呢?你为什么想学前端?与转行学前端专业的毕业生相比,你有什么优势?你学过什么框架,现在在学什么框架?为什么先开始学习React而不是vue、Angular或其他框架?(不愧是阿里的HR,技术面感觉力不从心)你平时都是怎么获取前端知识的?你正处于业余时间完全自学的前端,你是如何制定学习计划和学习目标的?你在学习期间真的做了什么吗?除了做这些事情,你还有什么产出?你在前端经常和同行业的人交流吗,通过什么渠道?你现在是实习生吗?什么是实习工作?那你为什么不想留在你现在实习的公司呢?实习期间最大的收获是什么?现在前端更新这么快,你怎么看前端这个行业?现在给你一个项目,有两种框架可以选择,一种是你比较熟悉的,一种是新的框架,以前没有人用过,你会怎么选择?你的家人来自(xx隐私??略),现在在青岛读书。如果让你以后来北京,你怎么看?除了前端行业,你是否想从事其他行业,不局限于技术?还投资了哪些公司,现在招聘进度如何?最后,我觉得整个过程的心态真的很重要。作为前端人,阿里巴巴是我最想去的国内公司。我看重的不是他的薪水,而是他的技术。GitHub可以解释一切。阿里是一家非常重视基础的公司,这与浮躁的前端环境形成了鲜明的对比。但其实前端的更新速度就是这么快,基本的东西都是随着时间更新的。我不是第一次投阿里巴巴了,所以一开始我还挺淡定的。电话里也很轻松,适当开了个玩笑(面试官被黑了世界上最好的语言)。不过这是我第一次通过电话面试(以前都是被笔试虐,或者面试被挂,别问我投了多少次),然后通过了二、三、hr面试。我真的越来越紧张,越来越患得患失。在公司实习的时候一般都没有时间去准备面试,但是这种心态非常影响审稿效率。可能是我真的很在乎这次面试的结果。整个过程中(一个月),我觉得这是我离梦想的公司最近的一次。我必须绝对确保没有任何问题并表现出色。这是我给自己施加的一种无形的压力和紧张,有时甚至梦想着去面试!!还好我坚持了下来,坚持到了最后。技术职位的应聘者虽然不需要针对每个公司都写具体的简历,但是一定要对公司有足够的了解,了解公司需要什么,知道自己能给公司带来什么。如果你还年轻,离找到工作还有几年的时间,那你就需要一个清晰的规划,学习哪些知识点,掌握哪些技术。这些计划应以目标公司的需求为导向。
