最近也在准备面试,就把前端面试中常考的知识点梳理了出来,为了复习起来更方便,更有针对性,也但愿可以帮到寒冬面试的一些朋友。本文包括 CSS,JS,ES6,浏览器,服务端与网络,VUE,HTTP,webpack 和 算法 十个部分。若是按照本文的思路来准备面试,您定会有所收获。
css
一、怎么实现三栏布局?前端
2. 垂直居中vue
我的以为问这个的挺多webpack
line-height: height
absolute + transform
居中为何要使用 transform(为何不使用marginLeft / Top),这是一道重绘重排的问题。flex + align-items: center
我会对 flex 容器以及 flex 项目的每一个 css 属性都了解一遍,而且写了一些小 demo。absolute + top:0 bottom:0
三、盒模型ios
4. css单位css3
5. css选择器git
6. 层叠上下文es6
7. 常见页面布局?响应式布局?web
八、BFC面试
9. css预处理器
通常回答 变量 / 嵌套 / 自动前缀 / 条件语句 / 循环语句
10. css3新特性
animation和transiton的相关属性,animate和translate
display哪些取值
十一、相邻的两个inline-block节点为何会出现间隔,该如何解决
十二、meta viewport 移动端适配
1三、CSS实现宽度自适应100%,宽高16:9的比例的矩形
1四、rem 布局的优缺点
1五、画三角形
1六、1px 边框问题
一、数据类型的分类和判断
二、原型、原型链、继承、构造函数、实例
三、有几种方式能够实现继承,用原型实现继承有什么缺点,解决办法
四、做用域、做用域链、闭包
五、arguments 对象
六、Ajax的原生写法
七、对象深拷贝、浅拷贝
八、图片懒加载、预加载
九、实现页面加载进度条
十、this关键字
十一、函数式编程
十二、手动实现parseInt
1三、为何会有同源策略
1四、怎么判断两个对象是否相等
1五、事件模型(事件委托、代理,如何让事件先冒泡后捕获)
1六、window 的 onload 事件和 domcontentloaded
1七、for...in 迭代和 for...of 有什么区别
1八、函数柯里化
1九、call apply区别,原生实现bind
call,apply,bind 三者用法和区别:角度可为参数、绑定规则(显示绑定和强绑定),运行效率、运行状况。
2一、async/await
2二、当即执行函数和使用场景
2三、设计模式(要求说出如何实现,应用,优缺点)/单例模式实现
2四、iframe的缺点有哪些
2五、数组问题
数组去重,数组经常使用方法,查找数组重复项,扁平化数组,按数组中各项和特定值差值排序
2六、BOM属性对象方法
2七、服务端渲染
2八、垃圾回收机制
2九、eventloop,进程和线程,任务队列
30、如何快速让字符串变成已千为精度的数字
一、let、const 声明
二、解构赋值
三、声明类与继承:class、extend
四、Promise 的使用与实现(原理)
五、generator(异步编程、yield、next()、await 、async)
六、箭头函数 this 指向问题、拓展运算符
七、module
八、map 和 set 怎么用,如何实现一个数组去重,map数据结构有什么优势?
九、ES6 怎么编译成 ES5,css-loader 原理,过程
十、ES6 转成 ES5 的常见例子
使用 es5 实现 es6 的 class
一、输入url到展现页面过程发生了什么?
二、重绘与回流
重绘(repaint): 当元素样式的改变不影响布局时,浏览器将使用重绘对元素进行更新,此时因为只须要UI层面的从新像素绘制,所以 损耗较少
回流(reflow): 当元素的尺寸、结构或触发某些属性时,浏览器会从新渲染页面,称为回流。此时,浏览器须要从新通过计算,计算后还须要从新页面布局,所以是较重的操做。会触发回流的操做:
* 页面初次渲染
* 浏览器窗口大小改变
* 元素尺寸、位置、内容发生改变
* 元素字体大小变化
* 添加或者删除可见的 dom 元素
* 激活 CSS 伪类(例如::hover)
* 查询某些属性或调用某些方法
* clientWidth、clientHeight、clientTop、clientLeft
* offsetWidth、offsetHeight、offsetTop、offsetLeft
* scrollWidth、scrollHeight、scrollTop、scrollLeft
* getComputedStyle()
* getBoundingClientRect()
* scrollTo()
回流一定触发重绘,重绘不必定触发回流。重绘的开销较小,回流的代价较高。
三、防抖与节流
四、cookies、session、sessionStorage、localStorage
五、浏览器内核
一、常见状态码
二、缓存
200 From cache 和 200 ok
400,401,403状态码分别表明什么
浏览器缓存
三、cookie, session, token
四、前端持久化的方式、区别
五、DNS是怎么解析的
六、cdn
七、计算机网络的相关协议
八、http/https/http2.0
九、get post区别
十、ajax、 axios库
十一、tcp三次握手,四次挥手流程
十二、跨域
1三、前端安全XSS、CSRF
1四、websocket
1五、Http请求中的keep-alive有了解吗
1六、网络分层
1七、即时通讯,除了Ajax和websocket
1八、模块化,commonJS,es6,cmd,amd
一、vue解决了什么问题
二、MVVM的理解
三、如何实现一个自定义组件,不一样组件之间如何通讯的?
四、nextTick
五、生命周期
六、虚拟dom的原理
七、双向绑定的原理?数据劫持?
八、组件通讯
父->子
子->父
非父子组件
九、Proxy 相比于 defineProperty 的优点
十、watch computed区别
十一、virtual dom 原理实现
十二、vue-router(hash, HTML5 新增的 pushState
单页应用,如何实现其路由功能---路由原理
vue-router如何作用户登陆权限等
你在项目中怎么实现路由的嵌套
1三、vuex的理解
前端性能优化
页面DOM节点太多,会出现什么问题?如何优化?
如何作性能监测
SEO和语义化
这个没被问过
微信小程序
微信小程序和h5差别,若是有开发weex的经验,可能会加上weex
git rebase
vs git merge
回答时候没有答出不少,这是后面总结,深入发现平常作总结的必要性,一直以为本身是了解的,等到总结时候才发现有一些 point 仍是不清楚的。
基本都被问同源策略以及引伸到跨域来,通常我会说 CORS 以及 jsonp,CORS 会从简单请求跟非简单请求区分开,再讲 options 请求的意义。
请求行 + 头部信息 + 空白行 + body
有被问到说空白行的意义,我一直觉得就是纯粹来标识 headers 的结束,可是面试官说不止这个功能,我后面看了HTTP 权威指南
也没有找到,Stack Overflow
也没找到。。。但愿有人知道能够跟我说一下。不过有多是我听错了题目,毕竟是电话面试。
通常会问二者的差异,以及引伸到 sessionStorage, localStorage, cookie 区别
通常我会答连接的大部分步骤,按照理解来,这里面我被问到的点有:
我是经过看 这篇文章 对安全有更多了解的,推荐一下。
一、打包原理
二、打包插件
三、webpack热更新原理
四、优化构建速度
算法通常考得不难,不过基本每一次面试都会考到,常考的算法有:
一、排序算法
二、字符串中找出最长最多重复的子串
三、动态规划,参见背包问题
四、层次遍历二叉树
五、加油站问题(贪心算法)
六、二分法
七、单链表反转
八、取1000个数字里面的质数
九、找出数组中和为给定值的两个元素,如:[1, 2, 3, 4, 5]中找出和为6的两个元素。
十、线性顺序存储结构和链式存储结构有什么区别?以及优缺点