让前端飞Web前端之路

[译]应该如何准备顶级公司的前端面试

2020-03-10  本文已影响0人  匿于烟火中

在外网看到davidshariff这篇关于前端应该学习的内容,给了我很大的启发,也明确了哪些知识是我们应该着重去学习和关注的。所以花了些时间翻译出来,希望给曾经在前端浩瀚学海里面迷茫找不到方向的人一些参考。文中有翻译不够准确的地方欢迎指正。

在亚马逊和雅虎任职的这几年,我面试了许许多多前端方面的应聘者。在这篇文章中我想分享一些能够帮助大家更好准备面试的关键点。

事先声明,这篇文章的内容不是在前端面试时你可能会被问到的具体的问题清单,而是面试中会涉及到的知识点的原理的一个概括。

面试并不容易,作为应聘者,你必须在45分钟之内好好的展示自己。而作为面试官,如果在这短短时间内去判断一个候选人是否适合这个岗位也很有难度。面试很难帮我们确认候选人跟岗位是完全匹配的,但是通过对面试问题的回答可以对于候选人有个区分度。

即作为应聘者也曾担任过面试官的我,希望能通过这篇文章来展示前端开发当中最为重要的几个方面。

常见误区

最常见的一个问题就是许多候选人准备面试非常纠结于一些很细节化的问题,诸如“什么是盒子模型”或者“js当中==和===的区别”等。当然这些细节问题如果了解当然是很好的,但是这些问题并不能真正反映出应聘者的水平。

相反的,可以预见我们所遇到的面试大多可能更注重手撕代码。面试中经常会要求应聘者实现UI布局,封装组件或者实现一个Lodash或者Underscore.js中封装好的方法。比如:

而说到各种框架,另一个我常见的问题就是应聘者拿最新框架中的方法来解决面试所问的问题。你可能不理解当我在实际工作当中使用的都是jQuery, React, Angular这样的成熟框架,为什么还要自己重复造轮子,而不是在面试中直接用这些框架去回答。
我们要知道,技术、框架和组件库会不断的更新,而更为看重的能力是对于前端开发的底层原理的理解而不是对封装工具的依赖性。如果脱离了轮子你就无法解答问题,那么至少希望候选人能大概了解并能解释所用的工具在运行的时候的原理是什么。

总体来说,我们对大部分的面试的设想还是要更多倾向于实用性编程。

JavaScript

作为候选人了解js和其底层原理是很有必要的。当我们在应聘一些更资深级别的面试的时候往往会考察对于语言了解的深度。至少,以下这几个js的原理必须要理解。

DOM

如何遍历和操作DOM非常重要。但是这对于非常依赖jQuery、angular和react这些框架的开发者来说非常困难。由于框架的使用,在日常工作中,我们很少会直接去进行DOM操作。但是在没有框架的时候,我们需要了解这些方面:

CSS

最基本的我们要知道页面如何布局,如何使用子选择器或者后代选择器来命中元素。以及什么时候应该使用class和id。

HTML

对于实现的布局和相关的属性应该使用哪个HTML标签应该手到擒来。

系统设计

系统设计的面试通常是针对后端开发人员,尤其是涉及到MapReduce、设计分布式键对值存储或者CAP定理以及相关的知识点。尽管对于日常主要做前端开发的工程师来说可以不需要对系统设计等知识有非常深入的了解,但是工作中遇到设计前端应用框架也是很正常的。这些问题通常是比较宽泛的,类似于:“设计一个仿Pinterest的网站”或者“介绍一下如何实现一个购物结算的服务”。我列出了以下几个方面值得大家思考的:

前端方面的系统设计是一个非常大的课题,值得我们更多的关注。后续我会再写一篇博客来详细展开这方面的内容。

Web性能

除了常见的编程实践方案之外,面试官有可能会要求查看你的代码设计及其性能优化点。常见有比如吧css加载放在document上方,js文件放下document代码下方加载。现在web快速发展,因此需要我们对这方面都要有所了解。

数据结构和算法

前端是否要掌握算法和数据结构具有一定的争议,但是对于时间复杂度的概念和常见的时间复杂度如O(n),O(nlogn)有一个基本认识对你来说百利而无一害。单页应用如今非常常见,了解如内存管理等只是对于应用开发非常有帮助。比如,如果你需要创建一个客户端输入检查的应用,了解基本的数据结构和算法会给你很大的帮助。

当然我并不是说你要具备CS学位,但是如今的前端发展迅速,再也不是像以前一样简单的写写页面了,因而需要我们有良好的计算机基础。在网上有许许多多的在线资源可以可以快速学习这些基础只是。

基本的网络知识

对于web网络的技术和规范要有一个基本了解。

总结

成为一个前端工程师需要非常多的知识储备。不要被所需要的知识深度所限制,而是要积极去学习用户们使用的产品背后所有涉及到的各个部分的原理。

除了这篇文章所提到的技术要点,你还有可能需要展示自己的项目经历,介绍遇到的有挑战的场景以及对对不同方案所做的权衡。

当然这篇文章不可能涵盖前端面试的方方面面,我写的肯定有所遗漏。如果遗漏了重要的知识点,欢迎分享你的面试经验,跟我一起优化这篇文章的内容。


原文需墙:Preparing for a Front-End Web Development Interview at Top Tech Companies
作者:davidshariff

上一篇下一篇

猜你喜欢

热点阅读