前端面试高频题库整理
场景题
- 怎么在前端页面中添加水印?
- 如何封装一个请求,让其多次调用的时候,实际只发起一个请求时返回同一份结果?
- Web 网页如何禁止别人移除水印?
- React 中怎么实现下拉菜单场景,要求点击区域外能关闭下拉组件?
- React 如何实现 Vue 中 keep-alive 的功能?
- 如何监控前端页面的崩溃?
- 如何搭建一套灰度系统?
- 如何在前端团队快速落地代码规范?
- 前端如何实现即时通讯?
- 用户访问页面白屏了,原因是啥,如何排查?
- 如何给自己团队的大型前端项目设计单元测试?
- 如何做一个前端项目工程的自动化部署,有哪些规范和流程设计?
- 你参与过哪些前端基建方面的建设?
- 假如让你负责一个商城系统的开发,现在需要统计商品的点击量,你有什么样的设计与...?
- 前端怎么做错误监控?
- Token 过期后,页面如何实现无感刷新?
- 如何解决页面请求接口大规模并发问题?
- Web 应用中如何对静态资源加载失败的场景做降级处理?
- 什么是单点登录,以及如何进行实现?
- SPA 首屏加载速度慢的怎么解决?
- 站点一键换肤的实现方式有哪些?
- 实现 table header 吸顶,有哪些实现方式?
- 怎么实现扫码登录?
- 如果用户说 web 应用感觉很反应慢或者卡顿,该如何排查?
- 如何设计一套统计全站请求耗时的工具?
- 你是怎么理解前端架构的?
- 怎么分析页面加载慢的原因?
- 为什么在技术选型中选择了 webpack?
- 如果想在小程序中嵌入 markdown 的文档,你有什么思路?
- 前端如何实现截图?
- 如何标准化处理线上用户反馈的问题?
- px 如何转为 rem?
- 浏览器有同源策略,但是为何 CDN 请求资源的时候不会有跨域限制?
- Cookie 可以实现不同域共享吗?
- Axios 是否可以取消请求?
- 前端如何实现折叠面板效果?
- DOM 里面,如何判定 a 元素是否是 b 元素的子元素?
- 判断一个对象是否为空,包含了其原型链上是否有自定义数据或者方法。该如何判定?
- Is 如何判空?「空」包含了:空数组、空对象、空字符串、0、undefined、null、空 map、空 set 都属于为空的数据。
- CSS 实现翻牌效果。
- Flex:1 代表什么?
- 一般是怎么做代码重构的?
- 如何清理源码里面没有被应用的代码,主要是 JS、TS、CSS 代码?
- 前端应用如何做国际化?
- 应用如何做应用灰度发布?
- 微前端为何通常在微前端应用隔离,不选择 iframe 方案?
- Qiankun 是如何做 JS 隔离的?
- 微前端架构一般是如何做 JavaScript 隔离?
- React 循环渲染中为什么推荐不用 index 做 key?
- React 如何避免使用 context 的时候,引起整个挂载节点树的重新渲染?
- 当 QPS 达到峰值时,该如何处理?
- JS 超过 Number 最大值的数怎么处理?
- 使用同一个链接,如何实现 PC 打开是 web 应用、手机打开是一个 H5 应用?【腾讯二面】
- 如何保证用户的使用体验?【字节一面】
- 如何解决页面请求接口大规模并发问题?【必会】
- 设计一套全站请求耗时统计工具?
- 大文件上传了解多少?【百度一面】
- H5 如何解决移动端适配问题?【美团一面】
- 站点一键换肤的实现方式有哪些?【美团一面】
- 如何实现网页加载进度条?【百度一面】
- 常见图片懒加载方式有哪些?【京东一面】
- Cookie 构成部分有哪些?【百度一面】
- 扫码登录实现方式?【腾讯一面】
- DNS 协议了解多少?【字节一面】
- 函数式编程了解多少?【京东一面】
- 前端水印了解多少?【腾讯一面】
- 什么是领域模型?【必会】
- 一直在 window 上面挂东西是否有什么风险?【百度一面】
- 深度 SEO 优化的方式有哪些,从技术层面来说?
- 小程序为什么会有两个线程?【腾讯一面】
- Web 应用中如何对静态资源加载失败的场景做降级处理?
- HTML 中前缀为 data-开头的元素属性是什么?
- 移动端如何实现上拉加载,下拉刷新?【字节一面】
- 如何判断 DOM 元素是否在可视区域?【字节一面】
- 前端如何用 canvas 来做电影院选票功能?【美团一面】
- 如何通过设置失效时间清除本地存储的数据?【腾讯二面】
- 如果不使用脚手架,如果用 webpack 构建一个自己的 react 应用?
- 用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数?
- Packagejson 里面 sideEffects 列性的作用是啥?【必会】
- Script 标签上有那些属性,分别作用是啥?【必会】
- 为什么 SPA 应用都会提供一个 hash 路由,好处是什么?
- React 如何进行路由变化监听?【字节一面】
- 单点登录是是什么,具体流程是什么?【腾讯一面】
- Web 网页如何禁止别人移除水印?【百度一面】
- 用户访问页面白屏了,原因是啥,如何排查?
- 代码实现:S 中如何实现大对象深度对比?
- 如何理解数据驱动视图,有哪些核心要素?【腾讯二面】
- Vue-cli 都做了哪些事儿,有哪些功能?
- JS 执行 100 万个任务,如何保证浏览器不卡顿?【百度一面】
- JS 放在 head 里和放在 body 里有什么区别?
- Eslint 代码检查的过程是啥?【必会】
- 虚拟滚动加载原理是什么,用 JS 代码简单实现一个虚拟滚动加加载?
- React-router 和原生路由区别?
- HTML 的行内元素和块级元素的区别?【京东一面】
- 介绍一下 requestIdleCallback API?
- DocumentFragment API 是什么,有哪些使用场景?【必会】
- Git pull 和 git fetch 有啥区别?
- 前端如何做页面主题色切换?【腾讯一面】
- 前端视角 - 如何保证系统稳定性?【字节一面】
- 如何统计长任务时间、长任务执行次数?【腾讯二面】
- V8 里面的 JT 是什么?【京东一面】
- 用 Js 写一个 cookies 解析函数,输出结果为一个对象?
- Vue 中 Scoped Styles 是如何实现样式隔离的,原理是啥?
- 样式隔离方式有哪些?【字节一面】
- 在 JS 中,如何解决递归导致栈溢出问题?
- 站点如何防止爬虫?【百度一面】
- TS 项目中,如何使用 nodemodules 里面定义的全局类型包到自己项目 src 下面使用?【百度二面】
- 不同标签页或窗口间的主动推送消息机制的方式有哪些?(不借助服务端)
- React 在 react 项目开发过程中,是否可以不用 react router 使用浏览器原生 history 路由来组织页面路由?
- 在表单校验场景中,如何实现页面视口滚动到报错的位置?
- 如何一次性渲染十万条数据还能保证页面不卡顿?【百度二面】
- Webpack 打包时 hash 码是如何生成的?【必会】
- 如何从 0 到 1 搭建前端基建?【京东一面】
- 你在开发过程中,使用过哪些 TS 的特性或者能力?【美团一面】
- 浏览器对队头阻塞有什么优化?【百度一面】
- Webpack 项目中通过 script 标签引入资源,在项目中如何处理?
- 应用上线后,怎么通知用户刷新当前页面?【腾讯一面】
- Eslint 代码检查的过程是啥?
- HTTP 是一个无状态的协议,那么 Web 应用要怎么保持用户的登录态呢?
- 如何检测网页空闲状态(一定时间内无操作)?【百度二面】
- 为什么 Vite 速度比 Webpack 快?
- 列表分页,快速翻页下的竞态问题?【百度二面】
- JS 执行 100 万个任务,如何保证浏览器不卡顿?
- Git 仓库迁移应该怎么操作?
- 如何禁止别人调试自己的前端页面代码?【字节二面】
- Web 系统里面,如何对图片进行优化?【必会】
- OAuth2.0 是什么登录方式?
- 单点登录是如何实现的?
- 常见的登录鉴权方式有哪些?
- 需要在跨域请求中携带另外一个域名下的 Cookie 该如何操作?
- Vite 和 Webpack 在热更新上有啥区别?
- 封装一个请求超时,发起重试的代码?
- 前端如何设置请求超时时间 timeout?【必会】
- Nodejs 如何充分利用多核 CPU?【字节二面】
- 后端一次性返回树形结构数据,数据量非常大前端该如何处理?
- 你认为组件封装的一些基本准则是什么?
- 页面加载速度提升 (性能优化) 应该从哪些方向来思考?
- 前端日志埋点 SDK 设计思路?
- Token 进行身份验证了解多少?【腾讯一面】
- 在前端应用如何进行权限设计?【字节二面】
- 低代码平台一般底层是如何设计的?
- 低代码平台一般底层协议是怎么设计的?
- Webpack 有哪些优化项目的手段?
- IndexedDB 存储空间大小是如何约束的?
- 浏览器的存储有哪些?【腾讯一面】
- Webpack 如何打包运行时 chunk,且在项目工程中如何去加载这个运行时 chunk?
- 为何现在市面上做表格渲染可视化技术的,大多数都是 canvas,而很少用 svg 的?
- 在你的项目中,使用过哪些 webpack plugin,说一下他们的作用?
- 在你的项目中,使用过哪些 webpack loader,说一下他们的作用?
- React 如何避免不必要的渲染?【美团一面】
- 全局样式命名冲突和样式覆盖问题怎么解决?
- React 如何实现专场动画?
- React 层面上,能做的性能优化有哪些?
- Vue 中为何不要把 v-if 和 v-for 同时用在同一个元素上,原理是什么?
- 将静态资源缓存在本地的方式有哪些?
- SPA 首屏加载速度慢的怎么解决?
- Axios 是如何区分是 nodejs 环境还是浏览器环境的?
- 如何拦截 web 应用的请求?
JavaScript 面试题
- 相比于 npm 和 yarn,pnpm 的优势是什么?
- 如果使用 Math.random() 计算中奖概率会有什么问题吗?
- 怎么使用 js 实现拖拽功能?
- 举例说明你对尾递归的理解,以及有哪些应用场景?
- 说说你对 Iterator, Generator 和 Async/Await 的理解?
- 说说你对模块化方案的理解,比如 CommonJS、AMD、CMD、ES Module...
- 前端跨页面通信,你知道哪些方法?
- JavaScript 脚本延迟加载的方式有哪些?
- 怎么理解 ES6 中 Generator 的?使用场景有哪些?
- 导致页面加载白屏时间长的原因有哪些,怎么进行优化?
- 微前端中的应用隔离是什么,一般是怎么实现的?
- JavaScript 对象的底层数据结构是什么?
- 浏览器和 Node 中的事件循环有什么区别?
- 版本号排序?
- 哪些原因会导致 js 里 this 指向混乱?
- 怎么实现大型文件上传?
- 说说你的 ES6-ES12 的了解?
- Promise 的 finally 怎么实现的?
- 怎么使用 js 动态生成海报?
- 异步编程有哪些实现方式?
React.js 面试题
- Fiber 架构的工作原理?
- React Reconciler 为何要采用 fiber 架构?
- useState 是如何实现的?
- React Fiber 是什么?
- 简单介绍下 React 中的 diff 算法?
- 如何让 useEffect 支持 async/await?
- React 中怎么实现状态自动保存 (KeepAlive)?
- ReactFiber 是如何实现更新过程可控?
- React 中懒加载的实现原理是什么?
- React 有哪些性能优化的方法?
- 不同版本的 React 都做过哪些优化?
- React18 新特性?
- 说说你对 ReactHook 的闭包陷阱的理解,有哪些解决方案?
- React 中,怎么给 children 添加额外的属性?
- Fiber 为什么是 React 性能的一个飞跃?
- React 是否支持给标签设置自定义的属性,比如给 video 标签设置 webkit-playsinline?
- 说说 React render 阶段的执行过程?
- React 中,fiber 是如何实现时间切片的?
- React 中为什么不直接使用 requestIdleCallback?
- 说说 React commit 阶段的执行过程?
Vue.js 面试题
- Vue 模板是如何编译的?
- Vue3 相比较于 vue2,在编译阶段有哪些改进?
- 说说 Vue 页面渲染流程?
- Vue 项目中,你做过哪些性能优化?
- 如果使用 Vue3.0 实现一个 Modal,你会怎么进行设计?
- Vue3.0 里为什么要用 ProxyAPI 替代 defineProperty API?
- Vue 有了数据响应式,为何还要 diff?
- 说说 vue3 中的响应式设计原理?
- 说说 Vue 中 CSS scoped 的原理?
- Vue3 的响应式库是独立出来的,如果单独使用是什么样的效果?
- 手写 vue 的双向绑定?
- 什么是虚拟 DOM?如何实现一个虚拟 DOM?说说你的思路?
- SSR 是什么?Vue 中怎么实现?
- 说下 Vite 的原理?
- Vue2.0 为什么不能检查数组的变化,该怎么解决?
- React 和 Vue 在技术层面有哪些区别?
- 说说 vue 中,key 的原理?
- 谈谈 Vue 事件机制,并手写$on、$off、$emit、$once?
- Vue 文件中,在 v-for 时给每项元素绑定事件需要用事件代理吗,为什么?
- Vue 中,created 和 mounted 两个钩子之间调用时间差值受什么影响?
TypeScript 面试题
- 如何检查 TypeScript 中的 null 和 undefined?
- 如何将 unknown 类型指定为一个更具体的类型?
- Typescript 中什么是类类型接口?
- 说说你对 typescript 的理解?与 javascript 的区别?
- 什么是 TypeScript Declare 关键字?
- In 运算符作用是什么?
- 纯 TS 项目工程中,如何使用 alias path?
- 使用 TS 实现一个判断传入参数是否是数组类型的方法?
- TypeScript 中的 getter/setter 是什么?你如何使用它们?
- Unknown 是什么类型?
- Never 是什么类型,详细讲一下?
- Extends 条件类型怎么定义?
- 如何在 TypeScript 中实现继承?
- 说一说 TypeScript 中的类及其特性?
- 请实现下面的 sleep 方法?
- TypeScript 中的方法重写是什么?
- Tsconfig.json 文件有什么用?
- Typescript 中 never 和 void 的区别?
- Typescript 中的 is 关键字有什么用?
- TypeScript 中的类是什么?你如何定义它们?
Webpack 面试题
- Webpack 中 module、chunk、bundle 的区别是什么?
- 说说你对前端工程化的理解?
- Webpack loader 和 plugin 实现原理?
- 为什么 webpack 可以通过文件打包,让浏览器可以支持 CommonJs 规范?
- Webpack tree-shaking 在什么情况下会失效?
- 微前端中的路由加载流程是怎么样的?
- 说下 Vite 的原理?
- 说说 webpack 的构建流程?
- 说说你对 Source Map 的了解?
- ES6 代码转成 ES5 代码的实现思路是什么?
- Webpack 的 module、bundle、chunk 分别指的是什么?
- 浏览器是否支持 CommonJs 规范?
- Webpack treeShaking 机制的原理是什么?
- Package.json 里面 sideEffects 属性的作用是什么?
- 什么情况下会导致 webpack treeShaking 失效?
- 为什么 SPA 应用都会提供一个 hash 路由,好处是什么?
- Webpack 分包的方式有哪些?
- Babel 的工作流程是怎么样的?
- Npm script 了解多少?
- 前后端分离是什么?
性能优化 面试题
- 怎么统计页面的性能指标?
- 导致页面加载白屏时间长的原因有哪些,怎么进行优化?
- Service Worker 是如何缓存 http 请求资源的?
- 如何优化 DOM 树解析过程?
- DNS 预解析是什么?怎么实现?
- 虚拟 DOM 一定更快吗?
- 如果某个页面有几百个函数需要执行,可以怎么优化页面的性能?
- React.memo() 和 useMemo() 的用法是什么,有哪些区别?
- SPA 首屏加载速度慢的怎么解决?
- 在 React 中可以做哪些性能优化?
- 前端性能优化指标有哪些?怎么进行性能检测?
- 怎么进行站点内的图片性能优化?
- 什么是内存泄漏?什么原因会导致呢?
- 浏览器为什么要请求并发数限制?
- CSS 加载会造成阻塞吗?
- 以用户为中心的前端性能指标有哪些?
- 有些框架不用虚拟 dom,但是他们的性能也不错是为什么?
- 谈谈对 window.requestAnimationFrame 的理解?
- 页面加载的过程中,JS 文件是不是一定会阻塞 DOM 和 CSSOM 的构建?
- 衡量页面性能的指标有哪些?

