面试
收集一些常见的面试题,大部分题目都能在本站找到答案。
# HTML
- 如何理解html语义化?有什么优缺点吗?
- 介绍下表单提交,和formData有什么关系?formData和原生的ajax有什么区别?
- 关于 form 标签的enctype属性你有哪些了解?
- 说说你对属性data-的理解。
- 如何实现应用缓存?说说你对 manifest 的理解
- HTML 文档中 DTD 的意义和作用
- 你怎么理解HTML5?
# CSS
- 介绍下 BFC、 IFC、 GFC 和 FFC 及其应用
- css 重绘和重排有什么区别?哪些css属性会导致重绘和重排?
- rem 和 flex 的区别?
- css 的解析顺序?
- css 如何开启 gpu 加速?
- 分析比较 opacity: 0; visible: hidden; display: none; 优劣和使用场景。
- ::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用?
- 请描述 margin 边界叠加是什么及解决方案
- 什么是FOUC?你是如何避免FOUC的?
- 说说 css 优先级
- rgba()和opacity这两个的透明效果有什么区别?
- 当一个元素被设置为浮动或定位后,它的display值会变成什么?
- 对 flex 布局的了解
- 介绍移动端适配1px方案
- 介绍下position属性,position: sticky是什么
# JS基础
- var、let 和 const 区别的实现原理是什么? 介绍下什么暂时性死区?
- 变量提升和函数提升是什么?
- var的变量提升底层原理是什么?
- 全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?
- 什么是防抖和节流?有什么区别?如何实现?
- 介绍下深度优先遍历和广度优先遍历,如何实现?请分别用深度优先思想和广度优先思想实现一个拷贝函数?
- 介绍下 JS 异步解决方案的发展历程以及优缺点。
- call 和 apply 的区别是什么,哪个性能更好一些?
- 冒泡排序如何实现,时间复杂度是多少,还可以如何改进?
- 快排和冒泡原理?
- js 的继承方案。说说各个继承方案的优缺点。
- 堆和栈的区别?它们具体怎么存储(引用类型的存储)
- 说说 js 内存机制 和 js 垃圾回收机制
- 谈谈对闭包的理解,闭包优缺点,闭包实现,闭包使用场景
- setInterval 需要注意的点?
- 定时器为什么是不精确的?
- setTimeout倒计时为什么会出现误差?如何校准?
- 介绍宏任务和微任务
- 使用 JavaScript Proxy 实现简单的数据绑定
- 介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
- 造成内存泄漏的操作有哪些?
- 在js中怎么捕获异常?应该在哪些场景下采用呢?
- 你知道什么是AST吗?说说你对AST的理解,它的运用场景有哪些?
- cmd和amd有什么区别?
- commonjs和es6模块的区别。如何解决循环引用?
- 严格模式的优缺点,主要表现是什么?
- mvc,mvvm 原理,用 js 实现 mvvm。
- 什么是rest参数,rest参数和arguments有什么区别
- 请描述dom事件的流程,即从触发到结束的整个过程
- 对原型链的理解,画一个经典的原型连接图
- 浏览器渲染触发在EventLoop的哪个阶段,触发机制是怎么样的
- ajax是同步还是异步,怎么样实现同步
- 异步es5、es6、es7分别怎么样解决
- 什么是事件冒泡和事件捕获以及事件委托
- == 和 === 的区别,typeof null的结果是什么
- 同步和异步的执行顺序
- proto 和prototype分别是什么?在什么情况下_proto_ 和prototype的指向是同一个?
- 对 class 理解,用es5 实现class,用原型写一个继承。
- 讲讲promise的实现原理
- promise 构造函数是同步进行还是异步进行?那么 then 方法呢?
- promise 和 async 有什么区别?
- 如何实现 promise.all 和 promise.finally
- 介绍箭头函数和普通函数的区别,箭头函数特点,构造函数可以用new实例化,箭头函数可以吗?
- 如何用 promise 包装 ajax
- const和let的区别,可以改变const定义对象某个属性吗?let 产生的背景
- 前端开发中用到哪些设计模式
- 介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景
# Typescript 相关
- TypeScript 的内置数据类型有哪些?
- Interface 和 type 的区别
- TypeScript 中的 any 类型和 unknown 类型有何不同?
- 什么是类型断言
- 为什么泛型在 TypeScript 中至关重要?它们如何发挥作用?
- 继承在 TypeScript 中如何发挥作用?
- keyof 和 typeof 的使用
# Vue 有关
- v-if 和 v-show 的区别
- v-for 为什么要加上 key,有什么作用?v-for 为什么不能跟 v-if 一起使用。
- v-if、v-show、v-html 的原理是什么,它是如何封装的
- computed 是如何实现的?它和 watch 的区别
- 介绍下 vue 的事件,它是挂载在哪里的?
- vue 在 v-for 时给每项元素绑定事件需要用事件代理吗
- 父子组件生命周期钩子执行顺序是什么?
- 子组件为什么不可以修改父组件传递的 prop?
- 什么是高阶组件?高阶组件和普通组件的区别
- 如何自定义一个 v-model
- 谈一谈 nextTick 原理
- 什么是动态组件和异步组件
- 什么是 MVVM?MVVM 和 MVC 的区别
- vue 中 MVVM 分别代表什么
- 说一下组件化
- 聊聊 Vue 的双向数据绑定,Model 如何改变 View,View 又是如何改变 Model 的
- Vue 的响应式原理中 Object.defienProperty 有什么缺陷?
- data 中为什么要 return 一个函数
- Visual Dom 真的比原生 dom 操作快吗?谈谈你的想法
- React 和 Vue 的 diff 时间复杂度从 O(n^3) 优化到 O(n) ,那么 O(n^3) 和 O(n) 是如何计算出来的?
- vue 渲染大量数据时应该怎么优化?
- vue 如何优化首页的加载速度?vue 首页白屏是什么问题引起的?如何解决呢?
- vue 是如何对数组方法进行变异的?例如 push、pop、splice 等方法
- vue-router 里的
<router-link>
标签和<a>
标签有什么区别? - 路由模式:hash、history 模式的区别?
- 什么是动态路由,如何实现懒加载?
- 为什么 Vuex 的 mutation 和 Redux 的 reducer 中不能做异步操作?
- 双向绑定和 vuex 是否冲突?
- 聊聊 Redux 和 Vuex 的设计思想
- 如何让基于 Vue.js 的应用支持 SEO 优化?
- 用 Vue 实现一个无限滚动的长列表,你会如何实现?
- Vue.js 框架如何实践服务端渲染方案?
# React 有关
- React和vue的区别?
- JSX如何判断条件和渲染列表?
- React事件为什么要bind this?
- React父子组件如何通讯?
- setState为何使用不可变值?
- setState是同步还是异步?
- setState什么时候会合并state?
- React组件生命周期,父子组件生命周期?
- React函数组件和class组件有何区别?
- 什么是React非受控组件?
- 什么场景需要用到React Portals?
- 是否用过React Context?
- React如何异步加载组件?
- React常见性能优化有哪些?
- 什么是React高阶组件?
- 什么是React Render props?
- 组件公共逻辑如何抽离?
- ajax应该放在哪个生命周期?
- 什么是函数式编程?
- 介绍下vdom和diff
- JSX本质是什么?
- react合成事件
- setState和batchState
- 组件渲染过程
- 描述Redux单项数据流
- Redux action 如何处理异步
- 简述Redux中间件原理
# Webpack有关
- 前端为何要进行构建和打包?
- module、chunk、bundle分别什么意思,有何区别?
- loader 和 plugin 的区别
- 常见 loader 和 plugin 有哪些?
- babel 和 webpack 的区别?
- 如何产出一个lib?
- babel-runtime 和 babel-polyfill的区别?
- webpack 如何实现懒加载?
- 为什么 Proxy 不能被 polyfill?
- webpack 常见性能优化手段
- webpack构建流程概述
# 网络类
- 介绍下浏览器跨域
- 怎么去解决跨域问题
- jsonp方案需要服务端怎么配合
- Ajax发生跨域要设置什么(前端)
- 加上CORS之后从发起到请求正式成功的过程
- xsrf跨域攻击的安全性问题怎么防范
- 网站SEO怎么处理
- 介绍下HTTP状态码
- 403、301、302是什么?
- 缓存相关的HTTP请求头
- 介绍HTTPS
- HTTPS怎么建立安全通道
- 网络的五层模型
- HTTP和HTTPS的区别
- HTTPS的加密过程
- 介绍SSL和TLS
- 介绍DNS解析
- 浏览器从输入url到页面加载的全过程
# 场景类
- 介绍下前端加密的常见场景和方法
- 前端安全有关
- 知道什么是图片防盗链吗?防盗链怎么实现呢?
- 前端性能优化
- webpack项目太大了如何优化
- 对用户体验做过什么优化
- 遇到过兼容性问题吗?如何处理
- 前端缓存方案
- 如何优化 spa 首屏加载速度慢问题(白屏)?
- 前端性能统计的指标有哪些?
- 前端持久化的方式
- 长列表怎么优化?
- 图片懒加载如何实现?( vue-lazyloader 实现原理)
- 文件上传如何做断点续传
- 基于 react 设计一个 todolist(组件结构,redux state 数据结构)
- 基于 vue 设计一个 购物车(组件结构,vuex state 数据结构)