我是团队的一个老校招面试官,这几年陆陆续续虐过很多校招学生,遇到过很优秀聊得很开心的,遇到过让我直皱眉头的,遇到过很懂套路的,也遇到过不善表达的。讲真,面试前我还常感到紧张,我怕一个好苗子由于个人笨问题没获得充分挖掘而错过。前端
因而我常常在想:什么才是好问题,前端校招该考察些什么?web
现又是一年校招季,想和你们分享下个人心得。面试
声明:算法
校招面试和社招面试会有什么不一样?我用一张图说明:编程
校招面试应侧重潜力考察。在前端这条路上,学习能力看你可否走得快,学习欲望看你可否走得远。设计模式
那校招时前端知识就不重要了?跨域
也很重要。只是说实话,当你工做后学校学到的知识可能都用不上了,由于工做场景跟你自学场景关注点不一样。举个例子,你在学校作前端开发,通常是单打独斗,但工做以后你就常常要跟别人合做开发,此时统一代码规范、代码要怎么组织才能减小耦合适合多人协做,就要列入考虑中。又好比,你本身作前端可能会想着怎么用新技术怎么作更酷炫,而工做业务中则关注怎么处理兼容性,怎么监控并减小脚本错误保持项目稳定等等。更别提你在学校中怎么学到如海量用户场景的开发经验?浏览器
因此对于校招生,相比不完善的前端知识积累,咱们更关注潜力。前端基础是你得到面试机会的资本,而从前端知识掌握状况折射出来的潜力特质,才是你脱颖而出的亮点。缓存
怎么考察这些虚的能力?下文将作展开。安全
而做为校招生的你,要思考的是怎么把本身的学习能力和学习欲望证实出来,这比简历上你写了多少行React代码有份量的多。特别是面试大公司。
这个就百花齐放了,我本身在不断面试中总结出一套面试流程:
基本上这样一套下来,面试者的总体水平也就很清楚了。不一样公司团队的一面流程不一样,但上面几点都是很通用的考察点。
通常咱们会面试超过一个小时,这样才能作到全面了解,也是一种负责。若是实在太差,提早结束。
接下来我会重点说说前端基础和项目经历,我会考察些什么。
你们常说前端开发易学难精,由于前端开发涉及的知识项实在不少,下面这张经典的图应该很多人看过:
那校招学生该掌握哪些知识呢?因为我在公司里面负责讲授《Web开发基础概论》这门课,慢慢的我总结了前端开发的六项基础知识:HTML、CSS、JavaScript、移动Web开发、调试、HTTP网络知识。
这六项是我以为校招学生的必备知识,面试时我会一一问到。若是你在这些前端基础上都表现很差,那你就只能在学习能力上特别突出才行了。
HTML
前端编程语言基础。我会考察:
CSS
前端编程语言基础。像CSS Expression这种古董不作考察,IE六、IE7这种被时代抛弃的浏览器考察怎么兼容它们有啥意义。我会考察:
JavaScript
前端最重要编程语言。这一块相信你们很轻松能够找到不少面试题,或者必背JS知识列表。这一块我会考察 原生JavaScript知识,它是一切框架插件的基础。我依然会问
等前端基础知识,不过我会从单点逐渐深刻不断拓展或者结合具体案例,看你是否真正的理解掌握。若是表现不错我有时还会问浏览器的解析渲染原理,做为一个加分项吧(DOM树、渲染树、重排重绘、分层渲染、为何DOM操做过多会影响性能等)。
移动Web开发
我说如今移动Web开发是前端开发领域的热点,应该没人反驳吧?现现在移动应用层出不穷,移动Web开发知识变得愈加重要。若是你不懂移动Web开发知识,真的是落后于时代。我会考察:
调试
开发中总免不了有bug,页面运行环境总比想象中复杂,此时可否经过调试找到问题缘由自主解决,很是重要。我会考察:
HTTP
若是你连抓包知识都不会你谈何调试?若是你连304的含义都不知道,你都想不通代码修改后为何页面仍是老样子?前端开发原本就要跟网络打交道。这一块我会考察:
上面就是前端六项基础知识。实际面试的时候我也会问一些综合问题,好比:
这些基本上就是我考察前端基础知识会问的问题。
可能有人会:咦咦咦,XSS、CSRF这些web安全相关的呢?面试社招生我会问,可是校招学生又有几个真的有遇到这样的场景,考察除了考背诵又有多大意义?
有人会:咦咦咦,怎么不说跨域呢?同理,跨域在业务项目中前端和cgi域名分离或跨业务调用会用到,可是不必要求在校学生都要遇到过这样的场景吧?
咦咦咦,那React、Vue这些总该问了吧,我这些都掌握得很是6呢?确实,我发现近两年有些面试者React这些掌握得很好,提及来一套一套的,但他们原生JavaScript真的掌握扎实了吗?我一直坚信,只要原生JavaScript知识掌握扎实,学习一个框架是很快的,并且无论之后流行框架怎么变化,你都内心不虚。因此React、Vue这些是加分的,不是必备的。
我常在面试前花20分钟,打开面试者简历上写的Github、博客去看看。因此你若是只是意思一下写在简历上而实际上都没怎么打理,那你还不如不写。我会根据面试者Github、博客的内容作些针对性的提问。前面环节你能够说你恰好不懂某块知识,但你本身写的你总该掌握吧?我总能够问深刻了吧?
面试时我也会根据简历上的项目经历,询问面试者具体的项目细节。你是否是只会按图索骥简单用用框架?你是否是打了一箱酱油而后在项目中顺便挂个名?这些我会不断考察出来,若是是,扣分。而后我会对你项目中用到的技术栈作深刻考察,你本身作项目用到的知识,你总该掌握了吧?我总能够问深刻了吧?
项目经历除了考察知识,我也会考察通用素质。因此我常问一些开放问题:哪一个项目是你以为最满意的,为何?你有没有遇到过某个大难题,最后是怎么解决?这时候你就应该把握机会把你比较突出的能力表现出来,好比坚持不懈攻克难题、好比……算了,说多了你就学会套路了。
团队协做能力也是项目经历中能够体现出来的,面试官可能在你的陈述过程对你默默作出评价:这我的看来不太合群,趁早把他淘汰好了。
上面就是我对校招面试流程和该考察什么问题的理解,也是我几年面试经验的沉淀吧。这一小节我回答些你们可能有的疑惑:
前端校招要不要考察算法?
印象中不少公司团队都有问算法问题,好比怎么实现快排,咱们团队别的面试官有时也会问。我的以为考算法还不如考察前端基础知识,算法在前端领域用的真没有其余开发领域多,我作了几年业务开发也真没用到复杂算法。校招时问算法,更可能是在考核你大学专业知识的掌握程度,你的学习能力如何。因此我基本不问,考前端基础知识一样能够看出学习能力。除非你的前端基础真的比较差,我才会考察算法。
有人可能会说,之后作复杂系统作高性能框架这些都要求算法水平高啊。是的,我认可,但这不是前端校招生如今必须掌握的能力。他们只要学习能力强,还怕之后无法把算法知识补上来?
前端校招要不要考察设计模式?
公司一位同事写了一本《JavaScript设计模式与开发实践》,豆瓣9.1,挺不错的书。学好设计模式,对你写出结构更清晰,维护更方便的项目代码是颇有帮助的。校招时能够考察,不过直接问你会哪些设计模式就有点过了,由于有时候咱们实际已经用了某个设计模式的思路组织代码,咱们只是不知道它的名称,那不就中招了?考术语是很偷懒的作法,更好的作法是给出一个实际场景问题,看对方可否用设计模式的思路解决。
校招学生应该偏技术深度仍是技术广度?
当年我参加百度校招,百度的一个总监说:“在学校应该以知识广度为主,工做后应该选择某个技术方向深挖,当你某一天到了瓶颈,那你又是时候广度发展了。”深觉得然。
因此我会更喜欢具备广度知识的学生。举个例子,上面提到的一个综合问题:用户从输入url到最终页面展现,这个过程当中发生了什么?有些学生计算机网络课程学的不错,能从HTTP请求组包、网络模型、DNS解析、创建链接这些方面跟我讲深里面的细节,这是深度知识,也是不错的。不过我更喜欢听到这样的答案:
用户输入url,到浏览器缓存机制检查,到HTTP请求包结构,到DNS解析,到链接创建,到服务器端处理(如动态页面处理、静态页面返回,CDN相关知识),到浏览器收到HTML内容怎么解析,到怎么并行加载串行执行CSS、JS,到怎么构造渲染树渲染页面,到怎么根据请求头把内容缓存到浏览器端。若是此时你还能补充HTTPS、同构直出、Service Worker之类,那就更好。
这就是知识的广度,将知识组织成一个总体的架构。即便你回答的时候对一些细节讲不清楚,我也以为比只知道单点并讲深的同窗得分高。
关于套路
照我所知,有些大学计算机社团有着优良的传统:师兄师姐总结出完善的前端面试知识常问问题必备知识。而后师弟师妹就能够按图索骥,背背背或学学学。
我是作了一段时间的一面面试官才看到这样的清单,当时都呆了。因而后来我开始反套路了:若是一个校招面试者对我问的前端基础知识回答溜得飞起不打一个停顿,我就会开始根据一个知识点,深刻一层问问,或者再深刻一层,压力面,问到对方回答不出。此时究竟是真正掌握这个知识仍是单纯靠背,就能看出来了。或者直接就从场景切入,而不是直接问请介绍前端缓存这样的问题。
固然了,套路不是很差。我以为,能真正掌握知识 > 靠背诵掌握知识 > 连基础知识都回答很差。你连这些知识都懒得记,那我也懒得放你过。
啰嗦了这么多,我写这篇文章究竟是想干吗?
难道是为了蹭热点?那是,如今是校招季嘛。
是为了告诉你们面试官怎么出题,让你们学会一些对付面试官的套路?呵呵,那我要和你说,咱们已经有意识地反套路了,若是你说你懂得某一个知识,却被发现只是很是基础的掠过,给咱们感受是更差的。
写这篇文章仍是想让你们趁还有些时间,对照着整理本身的知识体系,查漏补缺,有针对性的学习前端知识。
写这篇文章仍是想让你们体会下面试官视角,对面试怎么进行有个心理准备,减小由于紧张之类的因素致使没有正常发挥。
写这篇文章也想跟其余校招面试官一块儿交流观点。我以为不必把这些当作秘密捂住,重要的不是问题,而是面试者能给出什么样的答案。
最后你能够祈祷:面试腾讯的时候不要遇到我。
----
若是你也是一名面试官,很但愿你也把你的心得分享出来,和你们一块儿交流~ (附掘金秋招征文连接)