前端面试总结

167 阅读4分钟

前短时间出去面了很多家公司,包括大厂小厂,有的公司一开始就会从使用的技术框架是否匹配来决定要不要给面试机会(当然学历很高有大厂经历自身也很优秀的人会有另外的标准),所以觉得平时不管工作中大家用的是vue还是react又或是只有小程序,最好对于其他框架有一些了解并有实际的开发经验。有的时候又或者是技术面通过但是仍没拿到offer的话,可能是因为项目经历等等和岗位需求不匹配,一定要调整好心态继续出发。以下是我遇到的觉得比较重要的知识点:

1. vue

  1. vue双向绑定原理、diff算法
  2. Key的作用,v-for使用的原理是什么

key就是给每个节点打标记,v-for涉及到数组的push、pop、shift等操作,vue针对数组的方法做了一些扩展(可以看下源码加深理解)

  1. data可以直接写成对象吗
  2. vue的生命周期
  3. vuex原理,mutationaction的区别

mutation是同步的,action是异步的

  1. 怎么实现一个eventbus
  2. vue-router原理,路由有几种模式,区别是什么
  3. 怎么注册全局组件
  4. vue有什么缺点

从vue3的优化改变入手,和react相比不足的点

具体答案点击这里:Vue知识点

2. react

因为我经常用的技术栈是vue,所以面试官问我react的内容比较少

  1. 生命周期
  2. vue区别
  3. Hooks

3. webpack

  1. 有自己手动配过吗,怎么优化

优化可以从体积优化和编译速度优化入手展开

  1. 热更新原理

涉及到webSocket

  1. webpack执行过程是怎样的

(什么时候调用loader,什么时候调用plugin)

  1. sourcemap作用

映射错误信息

4. JS

  1. 数据类型有哪些?
  2. 有哪些方法判断是否为数组
  3. ES6用过哪些?
  4. 手写实现promise方法,以及promise的用法,Promise.allpromise.race用法
  5. 手写实现flat扁平化方法
  6. 请实现一个 add 函数,满足以下功能
add(1);             // 1
add(1)(2);      // 3
add(1)(2)(3);// 6
add(1)(2, 3); // 6
add(1, 2)(3); // 6
add(1, 2, 3); // 6
  1. 箭头函数和普通函数的区别
  2. const定义的对象,可以改变对象中的属性吗
  3. 怎么获取dom元素的位置,无限滚动的触发点是什么
  4. 怎么封装一个左右滑动的图片展示slider插件
  5. 事件循环

这个知识点很重要!很重要!很重要!

部分答案点击这里:前端手写原理代码

5. CSS

  1. 层叠上下文
  2. position定位,position:relative是相对于谁定位,position:absolute又是相对于谁定位
  3. 左边固定,右边自适应
  4. 怎么画1px的线

具体答案点这里:CSS知识点

6. 算法

  1. 手写冒泡排序,快速排序
  2. 怎么判断链表有环

7.网络及安全

  1. https和http的区别,http2、http3出现的原因是什么,它们的好处是什么,解决了什么问题
  2. 有几种跨域方法
  3. 缓存方法有哪些
  4. 输入url后发生了什么

8.性能优化

这个问题出现的概率接近100%,一定要对这方面的知识重点掌握

可以从缓存、图片大小、css写法、避免重排回流、防抖节流、预加载懒加载、webpack编译等方面入手

总结:

  1. 工作中一定要经常总结项目中遇到的问题、成长以及一些知识的理解。不管是对于业务还是技术,要多去思考为什么是什么,避免成为没得感情只会coding的工具人
  2. 对于知识点一定要搞明白它为什么是这样,一般用在什么情况下
  3. 多去看看其他人写的文章项目,找到自己的不足并努力去完善
  4. 要学会善用工具解决问题,避免重复造轮子
  5. 努力成为造轮子给别人用的那个人,增强不可替代性
  6. 对于想去外企的人,语言很重要,平常要多去练习交流