前端面试题大全
本文转载于:https://jcmpd975ac.feishu.cn/base/appNuDKPaGtimrdkB0JnXmpoktZ?table=tbl1IUBnjs02VgLW&view=vewJHSwJVd
以及一篇掘金上的文章,整理得也很不错:《前端进阶指南》
面试要点解析
知识点 | 类型 | 模块 |
---|---|---|
盒子模型 | css | 前端基础 |
CSS选择器 | css | 前端基础 |
BFC | css | 前端基础 |
position | css | 前端基础 |
flex布局 | css | 前端基础 |
css优先级 | css | 前端基础 |
双飞冀/圣杯布局 | css | 前端基础 |
CSS3新特性 | css | 前端基础 |
CSS样式隔离 | css | 前端基础 |
CSS性能优化 | css | 前端基础 |
层叠上下文 | css | 前端基础 |
div居中 | css | 前端基础 |
浮动 | css | 前端基础 |
行内元素、块级元素 | html&浏览器 | 前端基础 |
跨标签页通信 | html&浏览器 | 前端基础 |
history和hash两种路由 | html&浏览器 | 前端基础 |
DOM树 | html&浏览器 | 前端基础 |
事件模型 | html&浏览器 | 前端基础 |
缓存策略 | html&浏览器 | 前端基础 |
浏览器架构 | html&浏览器 | 前端基础 |
浏览器工作原理 | html&浏览器 | 前端基础 |
内存泄露 | html&浏览器 | 前端基础 |
原型链(点击这里查看) | javascript | 前端基础 |
继承 | javascript | 前端基础 |
作用域 | javascript | 前端基础 |
闭包 | javascript | 前端基础 |
变量提升 | javascript | 前端基础 |
this的指向 | javascript | 前端基础 |
立即执行函数 | javascript | 前端基础 |
instanceof原理 | javascript | 前端基础 |
bind的实现 | javascript | 前端基础 |
apply和call | javascript | 前端基础 |
柯里化 | javascript | 前端基础 |
v8垃圾回收机制 | javascript | 前端基础 |
浮点数精度 | javascript | 前端基础 |
new操作符 | javascript | 前端基础 |
事件循环机制 | javascript | 前端基础 |
promise原理 | javascript | 前端基础 |
generator原理 | javascript | 前端基础 |
模块机制 | Node | 大前端 |
require原理 | Node | 大前端 |
事件循环 | Node | 大前端 |
cluster原理 | Node | 大前端 |
流机制 | Node | 大前端 |
pipe原理 | Node | 大前端 |
守护进程 | Node | 大前端 |
进程通信 | Node | 大前端 |
异常处理 | Node | 大前端 |
合成事件 | React | 框架 |
virtual dom | React | 框架 |
setState过程 | React | 框架 |
fiber | React | 框架 |
高阶组件 | React | 框架 |
错误处理 | React | 框架 |
性能优化 | React | 框架 |
redux核心原则 | Redux | 框架 |
redux核心逻辑 | Redux | 框架 |
数据绑定原理 | Vue | 框架 |
computed和watch | Vue | 框架 |
slot | Vue | 框架 |
next tick原理 | Vue | 框架 |
keep alive | Vue | 框架 |
实现一个trim方法 | 编程题 | 算法 |
实现一个deepClone方法 | 编程题 | 算法 |
实现 add(1)(2)(3) | 编程题 | 算法 |
大数相加 | 编程题 | 算法 |
拍平数组 | 编程题 | 算法 |
实现防抖函数 | 编程题 | 算法 |
实现节流函数 | 编程题 | 算法 |
实现字符串翻转 | 编程题 | 算法 |
数组去重 | 编程题 | 算法 |
实现千位分隔符 | 编程题 | 算法 |
判断是否是回文数 | 编程题 | 算法 |
实现一个模板引擎 | 编程题 | 算法 |
判断一个数是否是素数 | 编程题 | 算法 |
获取n以内所有的素数 | 编程题 | 算法 |
进程和线程 | 操作系统 | 基础 |
进程通信 | 操作系统 | 基础 |
进程调度策略 | 操作系统 | 基础 |
死锁 | 操作系统 | 基础 |
IO多路复用 | 操作系统 | 基础 |
模块化机制 | 工程化 | 前端基础 |
tree shaking | 工程化 | 前端基础 |
uglify原理 | 工程化 | 前端基础 |
babel原理 | 工程化 | 前端基础 |
webpack工作流程 | 工程化 | 前端基础 |
webpack插件机制 | 工程化 | 前端基础 |
webpack loader机制 | 工程化 | 前端基础 |
前端微服务 | 工程化 | 前端基础 |
最近看的书 | 其他 | 其他 |
平常的学习途径 | 其他 | 其他 |
你比较擅长哪一块,不足的地方在哪里 | 其他 | 其他 |
常用设计模式 | 设计架构 | 其他 |
重构 | 设计架构 | 其他 |
MVVM | 设计架构 | 其他 |
MVC | 设计架构 | 其他 |
MVP | 设计架构 | 其他 |
斐波那契数列 | 算法 | 算法 |
合并二维有序数组成一维有序数组 | 算法 | 算法 |
链表:反转链表 | 算法 | 算法 |
链表:链表有环 | 算法 | 算法 |
堆栈队列:判断括号字符串是否有效 | 算法 | 算法 |
返回数组中第k个最大元素 | 算法 | 算法 |
找出数组中和为sum的n个数 | 算法 | 算法 |
贪心:具有给定数值的最小字符串 | 算法 | 算法 |
二叉树:最大深度 | 算法 | 算法 |
二叉树:层次遍历 | 算法 | 算法 |
剪枝:判断数独是否有效 | 算法 | 算法 |
二分查找:求解平方根 | 算法 | 算法 |
字典树:实现一个字典树 | 算法 | 算法 |
爬楼梯问题 | 算法 | 算法 |
最短距离 | 算法 | 算法 |
LRU缓存 | 算法 | 算法 |
翻转二叉树 | 算法 | 算法 |
七层网络模型 | 网络 | 基础 |
http | 网络 | 基础 |
https | 网络 | 基础 |
http2.0 | 网络 | 基础 |
http3.0 | 网络 | 基础 |
websocket | 网络 | 基础 |
tcp | 网络 | 基础 |
udp | 网络 | 基础 |
前端性能优化指标RAIL | 性能 | 前端基础 |
前端性能优化手段 | 性能 | 前端基础 |
重排和重绘 | 性能 | 前端基础 |
白屏 | 性能 | 前端基础 |
大量图片加载优化 | 性能 | 前端基础 |
描述下浏览器从输入网址到页面展现的整个过程 | 性能 | 前端基础 |
动画性能 | 性能 | 前端基础 |
渲染合成层 | 性能 | 前端基础 |
面试手册
关键点 | 单选 |
---|---|
大厂简历筛选有一套机制,有大厂经历或学历好或经验匹配的会比较容易通过筛选,缺少光环的需要有其他东西来证明,比如优秀的项目经历,参与过好的开源项目等 | 简历 |
简历上描述的技术/内容/项目确保自己是真的熟悉/掌握,看看每个技能是不是自己真的掌握了,能说出个1.2.3;每个项目是否自己能说清楚,一些细节是否了解,有哪些复盘点,是否有改进空间 | 简历 |
简历上描述的应该是与目标岗位直接/间接相关的,其他的比较优秀的点可以一笔带过,不需要花大篇幅介绍这些与目标岗位不符的能力 | 简历 |
面试官简历评估时也会看跳槽频率,像1年1跳这种会被评为不稳定,这时除非学历/经历特别出色的,其他基本就不通过了 | 简历 |
面试除了技能/项目知识外,状态也很重要;接到面试电话说明简历评估通过了,时间可以你自己定,如果没准备好,可以把时间拉长些,给自己一些准备时间;要求当场面试的可以礼貌拒绝然后定一个合适的时间 | 面试 |
对不同工作年限的同学会有不同的要求,校招主要看潜力,所以基础(计算机、网络)和算法会考得比较多;1~3年除了潜力外还看经验是否与业务匹配,项目经验;3~5年看是否有独挡一面的能力,需要在技术上有较好的深度,在做事情方面有自己的一套;大于5年的除了深度外对广度也有要求,且需要有跨端和架构设计的能力,对于管理岗位也会看带团队的能力 | 面试 |
面试时遇到不会的不用慌,每个人的知识面不一样,碰到不会的很正常,但可以积极思考,首先坦诚表示没有了解过相关知识,然后以现有的知识体系思考下这个问题,说明思路,合理猜测结果 | 面试 |
有时会有面试官会刻意施加压力,这时不在于问题回答的是否正确,而在于是否能在这些压力下仍然能够理性思考,面对面试官的每个问题,可以尝试想下面试官问这个问题的背后目的是什么 | 面试 |
模拟题
面试题 | 分类 | 知识点 |
---|---|---|
模拟题1 | ||
react setState是同步还是异步 | 模拟题1 | setState过程 |
什么是高阶组件,请举例说明 | 模拟题1 | 高阶组件 |
解释一下原型链 | 模拟题1 | 原型链(点击这里查看) |
instanceof原理 | 模拟题1 | instanceof原理 |
apply和call的作用及区别 | 模拟题1 | apply和call |
position有哪些值,作用分别是什么 | 模拟题1 | position |
说下你对DOM树的理解 | 模拟题1 | DOM树 |
重排和重绘是什么,有什么区别 | 模拟题1 | 重排和重绘 |
https加密过程是怎样的 | 模拟题1 | https |
实现 add(1)(2)(3) | 模拟题1 | 实现 add(1)(2)(3) |
react为什么需要合成事件 | 模拟题2 | 合成事件 |
为什么有时react两次setState,只执行一次 | 模拟题2 | setState过程 |
redux有哪些原则 | 模拟题2 | redux核心原则 |
es5实现继承 | 模拟题2 | 继承 |
实现一个promise | 模拟题2 | promise原理 |
CSS选择器有哪些 | 模拟题2 | CSS选择器 |
说下事件模型 | 模拟题2 | 事件模型 |
如何减少白屏的时间 | 模拟题2 | 白屏 |
3次握手过程 | 模拟题2 | tcp |
判断链表是否有环 | 模拟题2 | 链表:链表有环 |
react合成事件是什么,和原生事件的区别 | 模拟题3 | 合成事件 |
react如何处理异常 | 模拟题3 | 异常处理 |
闭包的作用和原理 | 模拟题3 | 闭包 |
0.1+0.2为什么不等于0.3 | 模拟题3 | 浮点数精度 |
什么是BFC,BFC有什么作用,如何形成BFC | 模拟题3 | BFC |
浏览器缓存策略是怎样的 | 模拟题3 | 缓存策略 |
你知道的前端性能优化手段有哪些 | 模拟题3 | 前端性能优化手段 |
前端模块化机制有哪些 | 模拟题3 | 模块化机制 |
http2.0做了哪些改进 | 模拟题3 | http,http2.0 |
求解平方根 | 模拟题3 | 二分查找:求解平方根 |
react为什么需要fiber | 模拟题4 | fiber |
redux中间件机制 | 模拟题4 | redux核心逻辑 |
bind的实现 | 模拟题4 | bind的实现 |
说下generator原理 | 模拟题4 | generator原理 |
flex布局有什么好处 | 模拟题4 | flex布局 |
如何定位内存泄露 | 模拟题4 | 内存泄露 |
渲染合成层是什么 | 模拟题4 | 渲染合成层 |
babel是什么,怎么做到的 | 模拟题4 | babel原理 |
http2.0有哪些不足,http3.0是什么 | 模拟题4 | http3.0,http2.0 |
实现一个发布订阅模式 | 模拟题4 | 常用设计模式 |
vue的数据绑定机制是如何实现的 | 模拟题5 | 数据绑定原理 |
vue next tick实现原理 | 模拟题5 | next tick原理 |
谈谈变量提升 | 模拟题5 | 变量提升 |
new操作符具体做了什么 | 模拟题5 | new操作符 |
介绍下盒子模型 | 模拟题5 | 盒子模型 |
有哪些方式可以使div居中 | 模拟题5 | div居中 |
有听过前端性能优化指标RAIL吗 | 模拟题5 | 前端性能优化指标RAIL |
进程和线程的区别 | 模拟题5 | 进程和线程 |
tcp滑动窗口是什么 | 模拟题5 | tcp |
实现一个斐波那契数列 | 模拟题5 | 斐波那契数列 |
vue的computed和watch的区别 | 模拟题6 | computed和watch |
说下vue的keep alive | 模拟题6 | keep alive |
什么是立即执行函数 | 模拟题6 | 立即执行函数 |
谈下事件循环机制 | 模拟题6 | 事件循环机制 |
css优先级是怎么计算的 | 模拟题6 | css优先级 |
CSS相关的性能优化 | 模拟题6 | CSS性能优化 |
谈下webpack loader机制 | 模拟题6 | webpack loader机制 |
进程通信方式有哪些 | 模拟题6 | 进程通信 |
爬楼梯问题 | 模拟题6 | 爬楼梯问题 |
实现一个trim方法 | 模拟题6 | 实现一个trim方法 |
react fiber有哪些优点,怎样做到的 | 模拟题7 | fiber |
谈谈你对作用域的理解 | 模拟题7 | 作用域 |
双飞冀/圣杯布局 | 模拟题7 | 双飞冀/圣杯布局 |
浮动元素会造成什么影响,如何清除浮动 | 模拟题7 | 浮动 |
网站首页有大量的图片,加载很慢,如何去优化呢? | 模拟题7 | 大量图片加载优化 |
描述下浏览器从输入网址到页面展现的整个过程 | 模拟题7 | 描述下浏览器从输入网址到页面展现的整个过程 |
uglify原理的是什么 | 模拟题7 | uglify原理 |
tcp重试机制 | 模拟题7 | tcp |
层次遍历二叉树 | 模拟题7 | 二叉树:层次遍历,二叉树:最大深度 |
实现节流函数 | 模拟题7 | 实现节流函数 |
react有哪些性能优化的点 | 模拟题8 | 性能优化 |
v8垃圾回收机制 | 模拟题8 | v8垃圾回收机制 |
CSS样式隔离手段 | 模拟题8 | CSS样式隔离 |
行内元素、块级元素有哪些,区别是什么 | 模拟题8 | 行内元素、块级元素 |
聊下你知道的浏览器架构 | 模拟题8 | 浏览器架构 |
是否有写过webpack插件 | 模拟题8 | webpack插件机制 |
websocket建立过程 | 模拟题8 | websocket |
合并二维有序数组成一维有序数组 | 模拟题8 | 合并二维有序数组成一维有序数组 |
实现防抖函数 | 模拟题8 | 实现防抖函数 |
最近看了什么书,有什么心得 | 模拟题8 | 最近看的书 |
CSS3有哪些新特性 | 模拟题9 | CSS3新特性 |
层叠上下文是什么 | 模拟题9 | 层叠上下文 |
history和hash两种路由方式的最大区别是什么? | 模拟题9 | history和hash两种路由 |
动画性能如何优化 | 模拟题9 | 动画性能 |
tree shaking是什么,有什么作用,原理是什么 | 模拟题9 | tree shaking |
webpack工作流程是怎样的 | 模拟题9 | webpack工作流程 |
什么场景下会用策略模式 | 模拟题9 | 常用设计模式 |
找出数组中和为sum的n个数 | 模拟题9 | 找出数组中和为sum的n个数 |
判断括号字符串是否有效 | 模拟题9 | 堆栈队列:判断括号字符串是否有效 |
平常的学习途径 | 模拟题9 | 平常的学习途径 |
node模块机制是怎样的 | 模拟题十 | 模块机制 |
node require具体实现是什么 | 模拟题十 | require原理 |
node事件循环与浏览器的哪些不一样 | 模拟题十 | 事件循环,事件循环机制 |
cluster原理是怎样的 | 模拟题十 | cluster原理 |
pipe原理是怎样的 | 模拟题十 | pipe原理 |
node的异常处理方式 | 模拟题十 | 异常处理 |
适配器和外观模式的区别 | 模拟题十 | 常用设计模式 |
重构的手段有哪些 | 模拟题十 | 重构 |
数组去重 | 模拟题十 | 数组去重 |
你比较擅长哪一块,不足的地方在哪里 | 模拟题十 | 你比较擅长哪一块,不足的地方在哪里 |
跨标签页通信的方式有哪些 | 跨标签页通信 | |
前端微服务是用来解决什么问题的 | 前端微服务 | |
udp和tcp的区别 | tcp,udp | |
node内置了哪些流,是怎么工作的 | 流机制 | |
守护进程是什么,为什么需要它 | 守护进程 | |
node进程通信有哪些方式 | 进程通信 | |
MVVM、MVC、MVP分别用于什么场景,区别是什么 | MVVM,MVC,MVP | |
拍平多维数组 | 拍平数组 | |
实现一个模板引擎 | 实现一个模板引擎 |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!