2021前端工程师面试分享

Posted Qianliwind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021前端工程师面试分享相关的知识,希望对你有一定的参考价值。

目录

军哥面试经验分享(FE方向)

一、简历

二、面试

三、技术要点

javascript

css

html&浏览器

性能

工程化

框架

算法

网络基础

大前端

设计架构

其他

四、附加

职业规划

如何学习提升


军哥面试经验分享(FE方向)

一、简历

1.简历上描述的技术/内容/项目确保自己是真的熟悉/掌握,看看每个技能是不是自己真的掌握了,能说出个1.2.3;每个项目是否自己能说清楚,一些细节是否了解,有哪些复盘点,是否有改进空间

2.简历上描述的应该是与目标岗位直接/间接相关的,其他的比较优秀的点可以一笔带过,不需要花大篇幅介绍这些与目标岗位不符的能力

3.面试官简历评估时也会看跳槽频率,像1年1跳这种会被评为不稳定,这时除非学历/经历特别出色的,其他基本就不通过了。所以必要时,可以将长期的工作经历合并,拉长到合理范围,但最近的一份,因为可以查到社保,不要弄虚作假。

二、面试

1.面试除了技能/项目知识外,状态也很重要;接到面试电话说明简历评估通过了,时间可以你自己定,如果没准备好,可以把时间拉长些,给自己一些准备时间;要求当场面试的可以礼貌拒绝然后定一个合适的时间

2.对不同工作年限的同学会有不同的要求,校招主要看潜力,所以基础(计算机、网络)和算法会考得比较多;1~3年除了潜力外还看经验是否与业务匹配,项目经验;3~5年看是否有独挡一面的能力,需要在技术上有较好的深度,在做事情方面有自己的一套;大于5年的除了深度外对广度也有要求,且需要有跨端和架构设计的能力,对于管理岗位也会看带团队的能力

3.面试时遇到不会的不用慌,每个人的知识面不一样,碰到不会的很正常,但可以积极思考,首先坦诚表示没有了解过相关知识,然后以现有的知识体系思考下这个问题,说明思路,合理猜测结果

4.面试时遇到不会的不用慌,每个人的知识面不一样,碰到不会的很正常,但可以积极思考,首先坦诚表示没有了解过相关知识,然后以现有的知识体系思考下这个问题,说明思路,合理猜测结果

5.有时会有面试官会刻意施加压力,这时不在于问题回答的是否正确,而在于是否能在这些压力下仍然能够理性思考,面对面试官的每个问题,可以尝试想下面试官问这个问题的背后目的是什么

三、技术要点

  1. javascript

原型链(点击这里查看)

继承

作用域

闭包

变量提升

this的指向

立即执行函数

instanceof原理

bind的实现

apply和call

柯里化

v8垃圾回收机制

浮点数精度

new操作符

事件循环机制

promise原理

generator原理

  1. css

BFC

position

flex布局

css优先级

CSS选择器

盒子模型

双飞冀/圣杯布局

CSS3新特性

CSS样式隔离

CSS性能优化

层叠上下文

div居中

浮动

  1. html&浏览器

行内元素、块级元素

跨标签页通信

history和hash两种路由

DOM树

事件模型

缓存策略

浏览器架构

内存泄露

浏览器工作原理

  1. 性能

白屏

前端性能优化指标RAIL

重排和重绘

前端性能优化手段

大量图片加载优化

描述下浏览器从输入网址到页面展现的整个过程

动画性能

渲染合成层

  1. 工程化

模块化机制

tree shaking

uglify原理

babel原理

webpack工作流程

webpack插件机制

webpack loader机制

前端微服务

  1. 框架

react

合成事件

virtual dom

setState过程

fiber

高阶组件

错误处理

性能优化

redux

redux核心原则

redux核心逻辑

vue

数据绑定原理

computed和watch

slot

next tick原理

keep alive

  1. 算法

斐波那契数列

合并二维有序数组成一维有序数组

链表:反转链表

链表:链表有环

堆栈队列:判断括号字符串是否有效

返回数组中第k个最大元素

找出数组中和为sum的n个数

贪心:具有给定数值的最小字符串

二叉树:最大深度

二叉树:层次遍历

剪枝:判断数独是否有效

二分查找:求解平方根

字典树:实现一个字典树

爬楼梯问题

最短距离

LRU缓存

翻转二叉树

  1. 网络基础

http2.0

http3.0

websocket

七层网络模型

https

http

tcp

udp

  1. 大前端

模块机制

require原理

事件循环

cluster原理

流机制

pipe原理

守护进程

进程通信

异常处理

  1. 设计架构

常用设计模式

重构

MVVM

MVC

MVP

  1. 其他

最近看的书

平常的学习途径

你比较擅长哪一块,不足的地方在哪里

四、附加

  1. 职业规划

资深WEB前端工程师

这个方向算是一个WEB前端最基本的选择了,在这个方向下,只要足够耐心、厚积薄发,成功的概率是非常高的。同时,这是一条最单纯的路,我们更多的是花费精力在技术的钻研上,而不是办公室政治等其它琐事。

资深WEB架构师

既兼顾了工作的单纯性、又能够减少实际Coding的工作量能腾出更多时间钻研技术。。由于我们拥有最为广泛的WEB相关知识沉淀,使得我们更加容易成为一名架构师。这个职业发展方向不如第一种来得平滑,主要是作为一名架构师不得不学习:后端技术、DBA、Platform等内容,而这种学习通常需要实际操刀做项目,不是自己在家里写两个Demo就好的,这就势必会遭遇一段时间的阵痛期。虽然不是很平滑,但是,对于一个大局观好、悟性好、知识面广的前端工程师,我推荐你们努把力,走一条光荣的架构师之路吧

自己创业

其实,自己创业是最好的道路、也是成功率最低的道路,挑战和机遇并存。这里,作为一个前端技术人员,需要将自己的视野更多放在行业的动态、产业链的动态、相关产品领域的动态,把关注细节的优势继续保持,同时,增强自己把控一个产品乃至一个公司命运的能力

转岗管理或其他

由于这条职业道路和WEB前端技术之路关系不大,故而,这里不做过多讨论,但是,无论是否走上这条道路,我觉得对于任何技术之路,更好的大局观、更广泛的视野是良好发展的必备条件,拥有良好的大局观和更广泛的视野别无他法,只能不断的进行知识的横向拓展和积累,同时,多在横向拓展知识的时候进行实践,把知识变成技能。

  1. 如何学习提升

高级技术的掌握

在提升阶段对于知识和技能掌握,我们需要从梳理好的知识架构中选择更深一层次的技术进行学习,选择之前,我们先通过类比或预估的方法,衡量自身学习的难点,以学习难点和自己最不感兴趣的部分为主。这样推荐大家的原因是:这个阶段我们兴趣正浓,已经度过了苦涩的起步阶段,到达了兴奋的提升阶段,我们要用兴趣和兴奋去挑战最困难的部分,在我们信心受挫和兴趣浓厚之中找到平衡。同时,辅以其他的深层次知识一起学习和研究。

产品思想的学习

没有正确的产品思想,很难设计出良好的程序,无论从界面、交互,还是接口、逻辑,不能够理解产品、理解用户需求,我们会给自己造成很大的麻烦,例如:我们千辛万苦用最新技术、最复杂的实现做出的功能,却得不到使用者或领导、同事的认可。为了使我们的工作和学习更加有效率、避免无用功,我们需要不断的学习产品的思想,只有理解了产品的思路,我们才知道用我们的技术去输出什么。

各种框架的学习

框架是我们提高工作效率的优秀手段,对于框架的学习是成长必经之路。我们学习框架的路线通常应该是:使用——》分析——》个性化定制——》模仿编写自己的框架。只有大量的使用,才能明白设计框架者在设计背后的思路,只有了解到设计的思路,才能做正确全面的分析,只有正确全面的分析才能支撑我们去对其裁剪或扩展,只有经过实际分析、修改别人的框架,才有可能写出优秀的、自己的框架。学习通常的路线是:学习、理解、模仿、创造。

富客户端应用的学习

随着带宽和计算机性能的提升,以及WEB2.0的如火如荼,富客户端应用充斥着互联网,如果你不懂得富客户端应用,你就不能称之为一个合格的前端技术人员。可以按照:Flash动画—>Flash编程—>Flex—>Air—>Silverlight动画—>Silverlight编程的步骤学习,先学Flash后学Siverlight的原因,一来Silverlight还不太成熟,二来,实际Silverlight借鉴了很多Flash的思想,最好在学习的时候不要本末倒置。

各种网络协议的学习

WEB

前端技术就是云上的技术,云的协议有N种,我们应该着重学习:TCP/IP,UDP,HTTP,POP3,SMTP这几种协议,在开发WEB前端应用过程中,这些协议是我们的技术的载体,有时候决定了我们的应用是否能实现、有时候决定了我们的应用是否高性能,同时,这些协议还是我们和后端技术交互的重要手段,这些协议就像是密码字典,帮助我们把后端传输过来的密文解释成我们前端技术能够理解的明文。

程序设计

这个阶段我们需要学习OO、UML、设计模式、设计方法……,我们要让技术开发工作变成有目的性、有计划性,并且,这些目的和计划必须有理论的支持,这样,我们设计出来的程序才能够更优秀、我们的开发才更有效率,这样,我们的技术才能有所提升。为什么要学习程序设计呢?主要是,就算我们不用Flash的

ActionScript编写程序的前端逻辑,我们至少要把我们自己的Javascript函数、包的定义规划起来,避免将来自己或他人维护代码的时候出现问题。程序设计能力,在技术人员仍然被看作是程序员的这个年代,是灰常、灰常重要滴。

最终成为一个资深WEB前端工程师,还是成为一个资深WEB架构师,亦或其他,都要具体分析自身的特点和兴趣所在。如果是资深的前端工程师,我觉得更重要的是去作新技术的研究,互联网技术发展速度日新月异,不断学习新技术,否则就被淘汰。此外,我建议在知识的广度、深度方面最好能挑选一个自己最擅长和最感兴趣的一两个领域深入钻研,不要挑太多,多而不精。如果是资深的WEB架构师之路,我建议要深入了解后台技术,这种深入了解一定要伴随着实际的项目开发,基本方法是:按照别人设计的架构实现几个Server—自 己设计并实现几个Server。

以上是关于2021前端工程师面试分享的主要内容,如果未能解决你的问题,请参考以下文章

2021前端工程师面试分享

《前端内参》,有关于JavaScript、编程范式、设计模式、软件开发的艺术等大前端范畴内的知识分享,旨在帮助前端工程师们夯实技术基础以通过一线互联网企业技术面试。

建议收藏!前端工程师一线大厂面试2021总结篇(50个JS常问知识点)

2021下半年前端面试必考知识点梳理.PDF(3小时删)

2021下半年前端面试必考知识点梳理.PDF(3小时删)

关于前端面试的一些心得