2018年底前端面试总结

主要是整理一些自己还记得的面试题。很多题目会根据项目内容提问,现在只记得一些比较常规的问题,后面想起来会做一些补充。标注重点的是频繁出现的,也确实很重要的知识点。

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、移动端问)

常规题

  • 你做的最满意/最复杂的一个项目是哪个,你遇到最难/最棘手的问题有哪些,是如何解决的
  • 最近有在研究什么东西
  • 平时的学习计划是怎样的
  • 技术上想从哪些方向发展/学习
  • 你的职业规划是什么
  • 为什么从上家公司离职

总结

上面遇到的问题有些是笔试,有些是交谈问的,也有些都出现过。笔试的时候建议先易后难,尽量不要留白,可以描述一下思路,或者写几个关键点,也比留白好很多,因为面试官未必会针对你没答出来的题目再次进行提问。另外,一些单词要记得如何读写,不然很多时候你知道这个东西,但是你却表达不出来,也是要扣分的。总之要深度理解、举一反三、逻辑清晰、表达流畅

以上,仅供参考。

    原文作者:萌小屋
    原文地址: https://segmentfault.com/a/1190000017306442
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞