[1.XSS原理及防范](1.XSS%E5%8E%9F%E7%90%86%E5%8F%8A%E9%98%B2%E8%8C%83.md)
[2.CSRF原理及防范](2.CSRF%E5%8E%9F%E7%90%86%E5%8F%8A%E9%98%B2%E8%8C%83.md)
[3.如何保证你的HTTP cookies安全不受XSS攻击](3.%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81%E4%BD%A0%E7%9A%84HTTPcookies%E5%AE%89%E5%85%A8%E4%B8%8D%E5%8F%97XSS%E6%94%BB%E5%87%BB.md)
- 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
- 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 父组件异步获取动态数据传递给子组件
- 七、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面试题(完善中)
- 一、基础概念
- 1.什么是虚拟DOM
- 2.Dom-Diff是如何实现?
- 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 流程细节
- 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.浏览器是多进程还是单进程?
- 让你的简历与众不同
- 1.如何写好一份让面试官喜欢的简历?