• JavaScript面试题
  • 1. 原始类型有哪几种?null 是对象吗?
  • 2. 对象(Object)类型
  • 3. typeof vs instanceof
  • 4. 类型转换
  • 5. this
  • 6. == vs ===
  • 7. 闭包
  • 8. 深浅拷贝
  • 9. 原型
  • 10. JS 异步编程及常考面试题
  • 10.1 并发(concurrency)和并行(parallelism)区别
  • 10.2 回调函数(Callback)
  • 10.3 Generator
  • 10.4 Promise
  • 10.5 async 及 await
  • 10.6 常用定时器函数
  • 11. Event Loop(事件循环)
  • 11.1 进程与线程
  • 11.2 堆和栈的概念
  • 11.3 浏览器中的 Event Loop
  • 11.4 Node 中的 Event Loop
  • 11.5 浏览器js与node事件循环的区别
  • 12. new
  • 13. instanceof 的原理
  • 14. 0.1 + 0.2 != 0.3
  • 一、词法结构
  • 1.1 ajax请求webservice接口及Unicode转义
  • 1.2 javascript中的保留字
  • 二、类型、值和变量
  • 2.1 javascript中的数据类型有哪些?
  • 2.2 Javascript中所支持的数字函数
  • 2.3 二进制浮点数和四舍五入错误
  • 2.4 日期计算函数
  • 2.5 字符串常用的方法
  • 2.6 布尔值的转化
  • 2.7 null和undefined
  • 2.8 比较两个数组
  • 2.9 JavaScript类型转换
  • 2.10 变量声明
  • 2.11 变量作用域
  • 2.11.1 变量作用域优先级
  • 2.11.2 函数作用域和声明提前
  • 2.11.3 作用域链
  • 三、表达式和运算符
  • 3.1 JavaScript运算符
  • 3.2 运算符优先级
  • 3.3 == 和 ===
  • 3.4 in运算符
  • 3.5 instanceof运算符
  • 3.6 eval()
  • 3.7 三元运算符
  • 3.8 typeof运算符
  • 3.9 delete运算符
  • 四、语句
  • 4.1 枚举对象的属性和属性值
  • 4.2 跳转语句
  • 4.2.1 break与contiinue
  • 4.2.2 return语句
  • 4.2.3 throw语句
  • 4.2.4 try/catch/finally语句 问题一:try/catch/finally语句
  • 4.3 with、debugger和use strict
  • 4.4 for循环
  • 五、对象
  • 5.1 对象基础
  • 5.2 对象直接量与new创建对象
  • 5.3 原型与原型链
  • 5.4 Object.create()
  • 5.5 属性的查询和设置
  • 5.6 删除属性
  • 5.7 检测属性
  • 5.8 枚举属性
  • 5.9 属性getter和setter
  • 5.9.1 存取器属性实例一
  • 5.9.2 存取器属性实例二
  • 5.9.3 存取器属性实例三
  • 5.10 属性的特性
  • 5.10.1 如何实现属性特性的查询和设置操作
  • 5.10.2 修改不允许创建后修改的属性
  • 5.10.3 复制属性的特性
  • 5.11 对象的三个属性
  • 5.11.1 原型属性
  • 5.11.2 类属性
  • 5.11.3 可扩展性
  • 5.12 序列化对象
  • 5.13 对象方法
  • 六、数组
  • 6.1 JS数组基础
  • 6.2 创建数组
  • 6.3 数组元素的读和写
  • 6.4 稀疏数组
  • 6.5 数组长度
  • 6.6 数组元素的添加和删除
  • 6.7 数组遍历
  • 6.8 多维数组
  • 6.9 数组方法
  • 6.10 数组类型
  • 6.11 类数组对象
  • 6.12 作为数组的字符串
  • 七、函数
  • 7.1 函数定义
  • 7.2 函数调用
  • 7.2.1 函数调用
  • 7.2.2 方法调用
  • 7.2.3 构造函数调用
  • 7.2.4 间接调用
  • 7.3 函数的实参和形参
  • 7.3.1 可选形参
  • 7.3.2 可变长的实参列表:实参对象
  • 7.3.3 将对象的属性用做实参
  • 7.3.4 实参类型
  • 7.4 作为值的函数
  • 7.5 作为命名空间的函数
  • 7.6 闭包
  • 7.7 函数的属性、方法和构造函数
  • 7.7.1 length属性
  • 7.7.2 prototype 属性
  • 7.7.3 call()方法和apply()方法
  • 7.7.4 bind()方法
  • 7.7.5 toString()方法
  • 7.7.6 Function()构造函数
  • 7.7.7 可调用的对象
  • 7.8 函数式编程
  • 7.8.1 使用函数处理数组
  • 7.8.2 高阶函数
  • 7.8.3 不完全函数
  • 7.8.4 记忆
  • 八、类和模板
  • 8.1 类和原型
  • 8.2 类和构造函数
  • 8.2.1 构造函数和类的标识
  • 8.2.2 constructor 属性
  • 8.3 JS中Java式的类继承
  • 8.4 类的扩充
  • 8.5 类和类型
  • 8.5.1 instanceof 运算符
  • 8.5.2 constructor属性
  • 8.5.3 构造函数的名称
  • 8.5.4 鸭式辩型
  • 8.6 JS中的面向对象
  • 8.6.1 集合类
  • 8.6.2 枚举类型
  • 8.6.3 标准转换方法
  • 8.6.4 比较方法
  • 8.6.5 方法借用
  • 8.6.6 私有状态
  • 8.6.7 构造函数的重载和工厂方法
  • 8.7 子类
  • 8.7.1 定义子类
  • 8.7.2 构造函数和方法链
  • 8.7.3 组合 VS 子类
  • 8.7.4 类的层次结构和抽象类
  • 8.8 ES5中的类
  • 8.8.1 让属性不可枚举
  • 8.8.2 定义不可变的类
  • 8.8.3 封装对象状态
  • 8.8.4 防止类的扩展
  • 8.8.5 子类和ES5
  • 8.8.6 属性描述符
  • 8.9 模块
  • 8.9.1 用做命名空间的对象
  • 8.9.2 作为私有命名空间的函数
  • 九、正则表达式
  • 9.1 正则表达式的定义
  • 9.1.1 直接量字符
  • 9.1.2 字符类
  • 9.1.3 重复
  • 9.1.4 选择、分组和引用
  • 9.1.5 指定匹配位置
  • 9.1.6 修饰符
  • 9.2 用于模式匹配的String方法
  • 9.3 RegExp对象
  • 9.3.1 RegExp的属性
  • 9.3.2 RegExp的方法
  • 十、JavaScript的子集和扩展
  • 10.1 JS的子集
  • 10.1.1 精华
  • 10.1.2 子集的安全性
  • 10.2 常量和局部变量
  • 10.3 解构赋值
  • 10.4 迭代
  • 10.4.1 for/each循环
  • 10.4.2 迭代器
  • 10.4.3 生成器
  • 10.4.4 数组推导
  • 10.4.5 生成器表达式 问题一 生成器表达式?
  • 10.5 函数简写
  • 10.6 多catch从句
  • Vue面试题
  • 一、vue-cli依赖的 Node.js 环境安装
  • 二、vue-cli 工程技术集合介绍
  • 三、vue-cli 工程目录结构介绍
  • 四、vue.js 核心知识点高频试题一
  • 4.1 对于Vue是一套渐进式框架的理解
  • 4.2 请说出vue几种常用的指令
  • 4.3 请问 v-if 和 v-show 有什么区别?
  • 4.4 vue常用的修饰符
  • 4.5 v-on可以监听多个方法吗?
  • 4.6 vue中 key 值的作用
  • 4.7 vue-cli工程升级vue版本
  • 4.8 vue事件中如何使用event对象?
  • 4.9 $nextTick的使用
  • 4.10 Vue 组件中 data 为什么必须是函数
  • 4.11 v-for 与 v-if 的优先级
  • 五、vue.js 核心知识点高频试题二
  • 5.1 vue中子组件调用父组件的方法
  • 5.2 vue中 keep-alive 组件的作用
  • 5.3 vue中编写可复用的组件
  • 5.4 vue生命周期有关的试题
  • 5.5 vue如何监听键盘事件中的按键?
  • 5.6 vue更新数组时触发视图更新的方法
  • 5.7 vue中对于对象的更改检测
  • 5.8 解决非工程化项目初始化页面闪动问题
  • 5.9 v-for产生的列表,实现active的切换
  • 5.10 v-model语法糖的使用
  • 六、vue.js 核心知识点高频试题三
  • 6.1 十个常用的自定义过滤器
  • 6.2 vue等单页面应用及其优缺点
  • 6.3 vue的计算属性
  • 6.4 vue提供的几种脚手架模板
  • 6.5 vue父组件向子组件通过props传递数据
  • 6.6 vue-cli开发环境使用全局常量
  • 6.7 vue-cli生产环境使用全局常量
  • 6.8 vue弹窗后如何禁止滚动条滚动?
  • 6.9 计算属性的缓存和方法调用的区别
  • 6.10 vue-cli中自定义指令的使用
  • 6.11 父组件异步获取动态数据传递给子组件
  • 6.12 mixin优缺点
  • 6.13 组合式和选项式API的优缺点
  • 6.14 vue2与vue3的区别
  • 七、vue-router 路由高频考题
  • 7.1 vue-router响应 路由参数 的变化
  • 7.2 完整的 vue-router 导航解析流程
  • 7.3 vue-router有哪几种导航钩子( 导航守卫 )?
  • 7.4 vue-router的几种实例方法以及参数传递
  • 7.5 vue-router的动态路由匹配以及使用
  • 7.6 vue-router如何定义嵌套路由?
  • 7.7 router-link组件及其属性
  • 7.8 vue-router实现路由懒加载( 动态加载路由 )
  • 7.9 vue-router路由的两种模式
  • 八、vuex 状态管理高频试题
  • 8.1 什么是vuex?
  • 8.2 使用vuex的核心概念
  • 8.3 vuex在vue-cli中的应用
  • 8.4 如何在组件中去使用vuex的值和方法?
  • 8.5 在vuex中使用异步修改
  • 九、axios、fetch、ajax等请求高频试题
  • 9.1 Promise对象是什么
  • 9.2 axios、fetch与ajax有什么区别?
  • 9.3 JS的同源策略和跨域问题
  • 9.4 如何解决跨域问题?
  • 9.5 vue-cli中使用JSON数据模拟
  • 9.6 axios有哪些特点?
  • 十、前端 UI 样式高频试题
  • 10.1 组件样式属性 scoped 问题及解决方法
  • 10.2 vue常用的UI组件库
  • 10.3 vue组件适配移动端【经典】
  • 10.4 移动端适配常用媒体查询源码
  • 10.5 垂直居中对齐
  • 10.6 vue-cli中如何使用背景图片?
  • 10.7 使用表单禁用时移动端样式问题
  • 10.8 多种类型文本超出隐藏问题
  • 10.9 vue-cli工程引入全局less变量
  • 十一、vue中常用功能实现与详解
  • 11.1 vue中如何实现tab切换功能?
  • 11.2 利用<keep-alive></keep-alive>标签实现某个组件缓存功能
  • 11. 3 vue中实现切换页面时为左滑出效果
  • 11.4 vue无痕刷新
  • 11.5 多种情景的数组去重
  • 11.6 vue保留滚动条位置
  • 11.7 vue组件中使用定时器
  • 11.8 组件slot使用示例
  • 11.9 使用递归组件实现级联选择器
  • 11.10 使用递归组件实现树形控件
  • 11.11 几种常见的自定义指令详解
  • 11.11.1 实现一个表单自动聚焦的自定义指令
  • 11.11.2 实现一个可从外部关闭的下拉菜单
  • 11.11.3 实现一个实时时间转换指令v-time
  • 11.12 两种类型的循环单选选择、取消功能
  • 十二、vue各种情况的组件间通信
  • 12.1 关于vue组件间通信问题的回答
  • 12.2 万金油:vue中央事件总线的使用
  • 12.3 props:最基础的父子组件间传递数据
  • 12.4 v-model语法糖:子组件向父组件传递数据
  • 12.5 .sync 修饰符:进行父子组件间相互传递数据
  • 12.6 $attrs属性:父孙组件间传递数据
  • 12.7 $on属性:子组件调用父组件方法
  • 12.8 $listeners属性:孙组件调用父组件的方法
  • 12.9 $refs属性:
  • 12.10 $parent属性:
  • 12.11 $children属性:
  • 十三、混合开发:vue工程与app交互
  • 十四、vue开发命令的执行过程【拓展】
  • 十五、vue-cli工程打包后.js文件详解
  • 15.1 vue打包命令是什么?
  • 15.2 vue打包后会生成哪些文件?
  • 15.3 配置 vue 打包生成文件的路径
  • 15.4 vue如何优化首屏加载速度?
  • 十六、MVVM设计模式高频试题
  • 16.1 MVC、MVP与MVVM模式
  • 16.2 MVC、MVP与MVVM的区别
  • 16.3 常见的实现MVVM几种方式
  • 16.4 Object.defineProperty()方法
  • 十七、实现一个自己的MVVM
  • 17.1 准备知识
  • 17.1.1 ES6中类和定义
  • 17.1.2 JS中的文档碎片
  • 17.1.3 解构赋值
  • 17.1.4 Array.from与Array.reduce
  • 17.1.5 递归的使用
  • 17.1.6 Obj.keys()与Obj.defineProperty
  • 17.1.7 发布-订阅模式
  • 17.2 效果示例
  • 17.3 思路分析
  • 17.4 项目地址
  • 十八、vue-cli中的配置详解
  • 18.1 webpack的特点
  • 十九、源码剖析
  • 19.1 剖析 Vue 内部运行机制
  • 19.1.1 Vue.js 全局运行机制
  • 19.1.2 响应式系统的基本原理
  • 19.1.3 响应式系统的依赖收集追踪原理
  • 19.1.4 实现 Virtual DOM 下的一个 VNode 节点
  • 19.1.5 template 模板是怎样通过 Compile 编译的
  • 19.1.6 数据状态更新时的差异 diff 及 patch 机制
  • 19.1.7 批量异步更新策略及 nextTick 原理
  • 19.1.8 proxy代理过程
  • 19.2 剖析 vue-router 内部运行机制
  • 19.2.1 重要函数思维图解
  • 19.3 剖析 vuex 内部运行机制
  • 19.3.1 准备知识
  • 1. Vue.mixin
  • 2. Vue.use
  • 19.3.2 插件安装
  • 19.3.3 Store
  • 19.3.4 使用源码
  • 19.4 剖析 axios 内部运行机制
  • 二十、发布一个 npm 资源包
  • 二十一、vue的服务器端渲染
  • 二十二:资料分享
  • React面试题
  • React高频面试题
  • 1.React设计思想
  • 2.Hooks的作用&原理
  • 3.Vue和React数据驱动原理区别
  • 4.React虚拟DOM Diff算法
  • 5.React 的生命周期方法有哪些?
  • 6.React 中的 useState() 是什么?
  • 7.什么是纯函数?
  • 8.useMem和useCallback的区别
  • 9.useEffect和useLayoutEffect区别
  • 10.useState与useRef主要区别
  • 11.什么时JSX?
  • 12.状态管理&组件通信方式有哪些?
  • 13.React-Router工作原理
  • 14.setState是同步还是异步的
  • 15.什么是高阶组件(HOC)?
  • 16.防止子组件不必要的重新渲染
  • 17.React 组件性能优化
  • 18.为什么React要Fiber架构,而Vue没有
  • 19.React Fiber可中断更新机制原理
  • 20.Fiber架构原理
  • 21.React中的setState批量更新的过程是什么?
  • 22.简述为什么 useState 要使⽤数组⽽不是对象 ?
  • 23.简述 React key 是⼲嘛⽤的 为什么要加?
  • 24.请简述当调用setState时,React render 是如何工作的?
  • 25.哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么?
  • 26.React 并发模式是如何执行的?
  • 27.React setState 调⽤之后发⽣了什么?是同步还是异步?
  • Webpack面试题
  • 1. 减少 Webpack 打包时间
  • 2. 减少 Webpack 打包后的文件体积
  • 一、Webpack基础介绍
  • 1.1 模块化
  • 1.2 构建的作用及常见功能
  • 1.3 常见的构建工具及其优缺点
  • 1.4 webpack
  • 1.5 Loader
  • 1.6 Plugin
  • 1.7 DevServer
  • 1.8 webpack的核心概念
  • 二、Webpack配置
  • 2.1 Entry
  • 2.2 Output
  • 2.2.1 filename配置
  • 2.2.2 chunkFilename配置
  • 2.2.3 path配置
  • 2.2.4 publicPath配置
  • 2.2.5 crossOriginLoading配置
  • 2.2.6 libraryTarget 和 library配置
  • 2.2.7 var (默认)配置
  • 2.2.8 commonjs配置
  • 2.2.9 commonjs2配置
  • 2.2.10 this配置
  • 2.2.11 window配置
  • 2.2.12 global配置
  • 2.2.13 libraryExport配置
  • 2.3 Module
  • 2.3.1 Loader配置
  • 2.3.2 noParse配置
  • 2.3.3 parser配置
  • 2.4 Resolve
  • 2.4.1 alias配置
  • 2.4.2 mainFields配置
  • 2.4.3 extensions配置
  • 2.4.4 modules配置
  • 2.4.5 descriptionFiles配置
  • 2.4.6 enforceExtension配置
  • 2.4.7 enforceModuleExtension配置
  • 2.5 Plugin
  • 2.6 DevServer
  • 2.6.1 hot配置
  • 2.6.2 inline配置
  • 2.6.3 historyApiFallback配置
  • 2.6.4 contentBase配置
  • 2.6.5 headers配置
  • 2.6.6 host配置
  • 2.6.7 port配置
  • 2.6.8 allowedHosts配置
  • 2.6.9 disableHostCheck配置
  • 2.6.10 https配置
  • 2.6.11 clientLogLevel配置
  • 2.6.12 compress配置
  • 2.6.13 open配置
  • 2.7 其他配置
  • 2.7.1 Target配置
  • 2.7.2 Devtool配置
  • 2.7.3 Watch 和 WatchOptions
  • 2.7.4 Externals配置
  • 2.7.5 ResolveLoader配置
  • 2.8 如何整体配置结构
  • 2.9 判断如何配置 Webpack
  • 三、Webpack实战
  • 3.1 如何接入ES6
  • 3.2 如何接入SCSS
  • 3.3 React的使用
  • 3.4 Vue的使用
  • 3.5 使用 Angular2 框架
  • 3.6 为单页应用生成 HTML
  • 3.7 离线应用
  • 3.7.1 使用 Service Workers 实现离线缓存
  • 3.7.2 接入 Webpack
  • 3.8 检查代码
  • 四、Webpack优化
  • 4.1 缩小文件搜索范围
  • 4.1.1 优化 loader 配置
  • 4.1.2 优化 resolve.modules 配置
  • 4.1.3 优化 resolve.mainFields 配置
  • 4.1.4 优化 resolve.alias 配置
  • 4.1.5 优化 resolve.extensions 配置
  • 4.2 构建动态链接库
  • 4.2.1 接入 Webpack
  • 4.2.2 如何实现构建动态链接库
  • 4.3 如何把任务分解给多个子进程去并发的执行
  • 4.4 多进程压缩代码
  • 4.5 使用自动刷新
  • 4.6 热模块替换
  • 4.6.1 优化模块热替换
  • 4.7 区分环境
  • 4.7.1 实现原理
  • 4.8 CDN加速
  • 4.8.1 用 Webpack 实现 CDN 的接入
  • 4.9 Tree Shaking优化
  • 4.9.1 接入 Tree Shaking
  • 4.10 提取公共代码
  • 4.10.1 如何通过 Webpack 提取公共代码
  • 4.11 按需加载
  • 4.11.1 用 Webpack 实现按需加载
  • 4.11.2 实例强化(按需加载与 ReactRouter)
  • 4.12 优化代码在运行时的效率
  • 4.12.1 接入 Webpack
  • 4.13 开启 Scope Hoisting
  • 4.13.1 接入webpack
  • 4.14 输出分析
  • 五 . Webpack原理
  • 5.1 流程概括
  • 5.2 流程细节
  • 5.3 详细原理
  • 5.4 打包流程
  • 六、Vite原理
  • 1.webpack与vite打包差异
  • 七、高频面试题
  • 1.Vue-loader 是什么?
  • 2.webpack精选面试题
  • 3.Tree shaking实现原理
  • 4.什么是Scope hoisting
  • 5.HMR热更新原理
  • Nodejs面试题
  • 1.Nodejs是单线程还是多线程?
  • 2.为什么Nodejs单线程却能够支持高并发?
  • 3.Nodejs事件循环机制
  • 4.Nodejs中libuv库的作用是什么?
  • 5.请简述一下node的多进程架构
  • Http协议面试题
  • 重点:输入 URL 到页面渲染的整个流程
  • 一、网络基础
  • 1.1 TCP/IP协议族
  • 1.1.1 什么是TCP/IP协议族
  • 1.1.2 TCP/IP协议族按层次划分了哪几次?
  • 1.1.3 HTTP请求时,TCP/IP通信传输流
  • 1.2 网络层:IP协议
  • 1.3 传输层:TCP协议、UDP协议
  • 1.3.1 TCP协议位于哪一层
  • 1.3.2 TCP头部有哪些重要字段?
  • 1.3.3 TCP协议的三次握手
  • 1.3.4 为什么 TCP 建立连接需要三次握手?
  • 1.3.5 UDP 与 TCP 的区别是什么?
  • 1.3.6 ARQ协议
  • 1.3.7 滑动窗口协议
  • 1.3.8 拥塞处理
  • 1.4 应用层:DNS服务
  • 1.5 URL和URI
  • 1.5.1 URI
  • 1.5.2 绝对URI的格式
  • 1.6 RFC
  • 二、Http协议
  • 2.1 HTTP请求报文组成
  • 2.2 HTTP协议的状态
  • 2.3 告知服务器意图的HTTP方法
  • 2.4 TCP的持久连接
  • 2.5 使用Cookie的状态管理
  • 三、HTTP报文内的HTTP信息
  • 3.1 HTTP报文类型和结构
  • 四、HTTP状态码
  • 五、与HTTP协作的 Web 服务器
  • 5.1 通信数据转发程序:代理
  • 5.2 通信数据转发程序:网关
  • 5.3 通信数据转发程序:隧道
  • 六、HTTP首部
  • 6.1 HTTP首部字段类型
  • 6.2 通用首部字段
  • 6.3 请求首部字段
  • 6.4 响应首部字段
  • 6.5 实体首部字段
  • 6.6 非HTTP/1.1 首部字段
  • 6.7 为Cookie服务的首部字段
  • 6.8 其他首部字段
  • 七、HTTPS
  • 7.1 HTTP的缺点
  • 7.2 HTTP与HTTPS
  • 7.3 HTTPS的加密方式
  • 7.4 HTTPS的通信步骤
  • 7.5 HTTPS的缺点
  • 八、基于HTTP的功能追加协议
  • 8.1 SPDY协议
  • 8.2 webSocket协议
  • 8.3 HTTP/2.0
  • Web安全面试题
  • 1.XSS原理及防范
  • 2.CSRF原理及防范
  • 3.如何保证你的HTTP cookies安全不受XSS攻击
  • 浏览器相关面试题
  • 1.浏览器渲染html流程
  • 2.浏览器是多进程还是单进程?
  • 3.DOM Tree 与 CSSOM
  • 4.哪些CSS属性会触发硬件加速?
  • 5.硬件加速有什么副作用?如何优化?
  • 微前端&设计模式
  • 1.什么是微前端
  • 2.沙箱(sandbox)技术
  • 3.qiankun沙箱机制
  • 4.微前端框架对比