前端面试题大全
本文转载于: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 协议 ,转载请注明出处!