前端口试总结
先说背景,本人2018年7月毕业,客岁十月校招到本年10月一向在做前端开辟事情,年前盘算换事情,就从新梳理下口试考点
总结包括:
JavaScript基础,CSS基础,罕见算法和数据结构,React&Vue框架,计算机网络相干学问,能够有的点很细,有的点很大,参考个人状况举行总结,轻易对学问举行回想,有的枚举出了参考答案,有的则在文末枚举了优异回复
闭包
- 闭包的观点?
- 闭包的作用?
- 运用闭包的注重点?
事宜机制
- 事宜3个阶段 事宜捕捉阶段,处于目的阶段,事宜冒泡阶段
- 默以为事宜冒泡
ES6
- let const class 模块化 等等经常使用ES6学问
- 箭头函数作用,此处能够扩大考核 this指向题目
- set map 相干
原型链
- 4种继续体式格局
- new 道理
深拷贝&浅拷贝
- 数据类型
- 基础数据类型和援用数据类型
跨域
- 同源战略
- CORS
- JSONP
- Iframe + document.domain
平安
- CSRF 跨站要求进击 (道理,保护措施 referer token 验证码,设置cookie的httponly属性,post要求等等
- XSS (同上
HTTP 要领
- 几种要领引见
- axios库
输入URL到页面胜利衬着的进程
- 典范题目 (任何一个步骤都能够引伸来考核
- DNS剖析 (详细的剖析进程
- TCP衔接
- http要求 (状况码考核
- 返回数据 浏览器衬着页面 (页面衬着进程
- 上面这些模块下面逐一例举
DNS剖析进程
- 观点
- 浏览器缓存
- 体系缓存
- 路由器缓存
- 域名提供商
- 顶级域名服务器
- 主域名服务器
浏览器页面衬着
- 加载html构建页面dom树
- 剖析css 构建衬着树
- 衬着树构建完成后,将衬着树绘制到屏幕(回流和重绘
- JS剖析,会壅塞dom树的构建
状况码
- http缓存 304
- 强迫缓存 (expires cache-control
- 对照缓存 ( Etag & if-none-match last-modified & if-modified-since
- 301 302 区分(永久性重定向(带缓存和临时性重定向)
渣滓接纳
- 援用计数
- 标记消灭
TypeScript
- 运用就不说了,总结下优瑕玷
- 增加了代码的可读性和可维护性 编译时毛病提醒
- 包容性 .js 可写为 .ts
- 拥抱ES6, 框架支撑
- 进修本钱高如:类,泛型,接口
函数式编程
- 观点 雷同的输入 永久的到雷同的输出,且没有任何副作用
- 副作用 比方 ajax要求 转变全局变量
- 优瑕玷 1.缓存性 2. 可移植性 3. 并行性 不需要共性内存
- 柯里化的观点,作用( 最好不要答装逼 我还没想到更好的答案
- 我枚举一个知乎答案: 一致接口,封装的每一层都乾乾净净,逻辑表现清晰
IndexedDB
- 特性
- 区分LocalStorage SessionStorage(1.同步 2.存储大小)
WebSocket
- 观点
- 特性
- readyState
排序算法
- 罕见的排序算法 复杂度 稳固性
- 疾速排序 不稳固 空间复杂度O(logn) 均匀时候复杂度O(nlogn) 最差…O(n2)
- 挑选排序 不稳固 空间复杂度O(1) …一切都是O(n2)
- 冒泡排序 稳固
- 堆排序 不稳固 空间复杂度O(1) …一切都是O(nlogn)
- 插进去排序
哈希表
- 数组和链表的特性
- 搜刮插进去和删除的时候复杂度O(1)
二叉树
- 先序遍历
- 中序遍历
- 后序遍历
- 层序内外
- 树高
链表
- 翻转链表
AVL树 二叉查找树
- 特性
- O(logn)
精度丧失题目
- 0.1 + 0.1 != 0.2 (为何
- 计算机内部的信息都是由二进制存储的,然则有些浮点数没法用二进制精准的表示出来
- 小数转整数
- Math.round() 四舍五入
- Math.ceil() Math.floor()
天生随机数
- 引入 Math.random() [0,1) 的随机小数
- parseInt(Math.random()*(m-n)+n) [n, m)
- Math.round(Math.random()*(m-n)+n) [n, m]
数组去重
- var set = new Set([1,1,2,2,3,3,3,3]) var arr = […set]
- indexOf
怎样推断数组是数组
- Array.isArray(arr) ES5的要领
- arr instanceof Array
- arr.__proto__.constructor === Array()
- Object.prototype.toString.call(arr) === ‘[object Array]’ //数据原型和对象原型定义的toString 要领差别
- Object.prototype.toString.call(obj) === ‘[object Object]’ // 如上
- Object.prototype.toString.call(null) === ‘[object Null]’ // 引荐此要领
数组指定个数去重 findDuplicate(num)
- es6 Set Map 相干操纵
反转字符串
JS异步
- 异步处理汗青(Ajax的进化进程)
- Promise,Async/Await 用法 Promise 瑕玷
- Promise API Promise.all & Promise.race
Ajax
- ReadyState (0, 1, 2, 3, 4) 5中状况
- js完成ajax
- 优瑕玷
单/双向数据绑定
- MV** 观点
- vue/react 数据绑定机制
Vue
- 生命周期
- 父子组件通讯
- 双向数据绑定
- vm.$nextTick道理
React
- 生命周期
- Virtual-dom手艺以及改进后的Diff算法
- 对照Vue.js
数组去重 数组扁平化
深拷贝和浅拷贝
Position属性
- 几种属性值
Box-sizing 属性
- content-box border-box
- 盒模子 W3c规范盒模子和IE盒模子
两栏规划 三栏规划
- 罕见自适应规划写法
回流和重绘
- 观点
- 举例
- 怎样防止 eg: DocumentFragment, Absolute
浮动
- 伪元素和伪类
- 消灭浮动罕见3种要领
隐蔽元素
- display none
- visibility hidden 区分
垂直居中规划
- 罕见的垂直居中规划要领
前端机能优化
- 枚举罕见前端机能优化要领
枚举一些优异回复