主要是整理一些自己还记得的面试题。很多题目会根据项目内容提问,现在只记得一些比较常规的问题,后面想起来会做一些补充。标注重点的是频繁出现的,也确实很重要的知识点。
css
- 盒子模型:ie与其他浏览器的区别,如何改变盒子模型
- 图形:实现扇形/圆环/梯形/三角形等(建议掌握常见图形实现)
- 定位:position有哪些值并描述作用,z-index使用条件以及优先级
- flex:有哪些属性并描述作用,如何实现栅格/圣杯布局/流式布局等(重点,建议记住所有属性并掌握常见使用场景)
- 布局:垂直居中/九宫格/固定某个自适应某个的方法有哪些(建议每个常见布局多了解几种方法)
- 使用过哪些css3特性
- 动画:animation有哪些属性值及其基本使用,实现一个上抛后下坠的动画,jquery中是如何实现动画的,知道或使用过哪些动画库
- 转换:transform有哪些属性值以及基本使用
js
- 基本数据类型和引用数据类型分别有哪些及其区别
- 原型/原型链是怎么样的,分别使用es5和es6实现继承,继承方法有哪些并各有什么优缺点,你在项目中哪里使用到原型链/继承(重点)
- 有哪些设计模式,你在项目哪里使用到
- 说说闭包和链式调用,你在哪里使用到闭包
- this指向问题(一般会有具体的代码)
- 说说JS的内存机制及垃圾回收机制
- call/apply/bind的作用与区别
- 有哪些遍历数组的方法及其特点
- 实现一个深拷贝的方法
- 函数节流和防抖的实现
- 数组去重的实现方法(建议掌握多种方法,并知晓其特点)
- 数组的排序,乱序,找出中位数(建议掌握多种方法,并知晓其特点)
- 二叉树的三种遍历方法
- 使用es6实现一个工厂模式
- 实现一个观察者模式(重点)
- 实现一个lazyMan(请自行搜索)
- 线性数据结构转换成树形结构
- 求数组中最大和的连续子数组
- 封装一个只能执行一次的函数 once(fnc),后面执行返回undefined
- 如何解决数字运算精度问题,比如0.1+0.2!=0.3
- 使用过哪些es6特性
- let/const/var的区别
- 普通函数和箭头函数的区别
- Promise和async/await的使用及其异同(重点,最好能使用es5实现Promise)
- 运算结果:true == ‘1’, 3 + ‘2’, 3 * ‘2’, a=1;b=a++ 等等
通信协议
- http状态码有哪些及其含义(重点,建议除了404和200再至少记住常见的10个)
- http控制缓存的方法以及区别,什么情况会出现304,你的项目中是如何配置的(重点)
- https与http的区别,https的原理及其局限性,说说http2
- 请求方法有哪些及其区别,请求报头/响应报头有哪些
- 登录注册除了https还有哪些可以增强安全性
- WebSocket是什么及其特点
vue/react
- vue的内置组件有哪些,nextTick有什么用
- vue/react组件生命周期(重点,建议描述完整的过程,并描述各个钩子函数可以做哪些事情,而不仅仅是说出钩子函数)
- vue的双向数据绑定原理(重点,除了监听数据变化,建议再了解一下数据变化后到更新dom的过程,主要是发布-订阅者模式)
- vue的virtual-dom原理及其更新算法
- vue-router路由的两种模式有什么区别
- 在vue中数组的哪些操作方法可以触发vue视图更新,为什么
- vue父子组件之间如何通信
- vuex的基本使用原理,你在哪些项目的哪些地方使用到
- 开发过哪些组件,依据什么理念或方法去设计开发组件
- spa有什么特点,服务端渲染有什么特点
- vue和react有什么区别(如果使用过不止一个框架,那么很可能会问类似的问题)
- 最近react更新了哪些内容(主要是新版本的特性,可以适当跟之前版本对比)
浏览器及其他
- 浏览器输入url到显示出页面内容的过程(重点,建议至少要从建立通信和浏览器解析渲染角度去说)
- Dom 插入/删除/查找/移动操作,分别有哪些方法
- gulp与webpack的区别
- webpack的基础配置有哪些(重点)
- 项目中你在webpack做了哪些优化,项目中你打包成哪些文件,有哪些加快build的优化方法(重点)
- 有哪些优化网站性能的方法,有哪些图片优化方法(重点)
- 一个页面有非常多内容的时候如何优化,比如一个非常长的列表
- 同源策略是什么,跨域有哪些解决方法,jsonp原理是什么(重点)
- 如何实现上报js报错,如何监听js报错
- Hybrid App实现Native与H5交互的方法有哪些,需要注意什么事情,你在项目中是怎么做的
- Hybrid App如何调试,如何定位问题
- Service worker是什么,有什么特点,HTTP缓存与Service worker缓存有什么区别
- 图片上传前怎么实现图片预览,上传中怎么获取进度
- 后台系统怎么设计权限控制
- 遇到过哪些兼容性问题(有时候会针对pc、移动端问)
常规题
- 你做的最满意/最复杂的一个项目是哪个,你遇到最难/最棘手的问题有哪些,是如何解决的
- 最近有在研究什么东西
- 平时的学习计划是怎样的
- 技术上想从哪些方向发展/学习
- 你的职业规划是什么
- 为什么从上家公司离职
总结
上面遇到的问题有些是笔试,有些是交谈问的,也有些都出现过。笔试的时候建议先易后难,尽量不要留白,可以描述一下思路,或者写几个关键点,也比留白好很多,因为面试官未必会针对你没答出来的题目再次进行提问。另外,一些单词要记得如何读写,不然很多时候你知道这个东西,但是你却表达不出来,也是要扣分的。总之要深度理解、举一反三、逻辑清晰、表达流畅。
以上,仅供参考。