【面试】三年渣渣前端面试总结

3,612 阅读5分钟

lz最近刚刚找到工作,一直想找一个机会写下自己的面试总结,所以趁着空闲的时间就把在面试过程中遇到的一些问题给梳理出来。对自己的知识进行查漏补缺,也希望可以帮助到正在找工作的你,话不多说,我们直接看面试

声明:本文只是对知识点进行梳理,lz会在关键地方给出具体链接,不会给出具体答案,具体的答案需要靠自己去搜索去总结,

1.HTML&CSS
  • 语义化标签
  • 冒泡和捕获
  • 三栏布局(浮动、定位、flexBFC)
  • 垂直居中、水平居中(这个至少得说出四种实现方式)
  • 盒模型和如何更改盒模型(box-sizing)(当时面我的面试官说我这两种模型说反了😭)
  • css选择器及优先级
  • BFC
  • position:inherit、static、relative、fixed、absolute
  • z-index
  • transition、animation、transform

面试题
①:如何使用CSS实现鼠标滑过一个元素控制另一个元素的显示与否
②:给你三个嵌套标签,如何实现中间的点击事件先触发,然后最里面一个最后是最外面的触发

2.JavaScript

①举个🌰,在往数组中插入某一项方法有哪些?答:pushshiftslicesplice,这些API的执行速度是怎么样的?这就需要我们知道它们的内部是如何实现的
②求下面代码的值,并画出原型图解释原因

var F = new Function()
var obj = new F()
F.prototype.a = 1
obj.prototype.b = 2
obj.a = ???
obj.b = ???

③介绍几种原型继承以及他们的优缺点,请卸车class extend继承的内部实现,扩展如何实现class内的静态方法
④这一道题开放性很大,需要实现同步异步以及结合闭包嵌套执行

浏览器

面试题
①状态码为304时的数据处理过程?
②HTTP为什么需要三次握手四次挥手

数据结构和算法

  • 链表结构特点
  • 链表的插入删除和双向链表实现以及如何判断闭环
  • 二叉树的递归和非递归实现
  • 求二叉树的高度和宽度(递归和非递归实现)
  • 斐波那契数列第几项以及前几项的和(递归和非递归实现),摸这里
  • 数组去重,此问题可升级为1、数组中对象去重2、数组中对象属性相同值不同去重
  • 无序数组第k大数字(分数据量大小讨论)
  • 目标数字在数组中排第几
  • 求数组中最大的两个值
  • 字符串匹配([](){}这种类型)(面试题见①)
  • 实现一个EventBus包含onemitonceoff
  • 常见的数组操作
  • 只出现一次的数字Ⅰ/Ⅱ/Ⅲ
  • 重建二叉树

①🌰: (1){} 返回 false , (){} 返回 true ,思路:

let obj = {
    '[': -1,
    ']': 1,
    '(': -2,
    ')': 2,
    '{': -3,
    '}': 3,
}
判断执行过程中,只要出现了字符不存在或者字符对应的值大于0就返回 false,否则返回 true

Vue

其他

  1. 性能优化(可以从DOM操作、JS代码书写、webpack懒加载CDN配置资源缓存Hash值、HTTP缓存以及你在项目中优化的任何点都可以说)
  2. Git操作(工作区、暂存区和版本库以及各种状态之间的切换,mergerebase的区别)
  3. webpack(webpack懒加载、CDN配置、资源缓存、Hash值等方面)

工程

推荐

暂时先想这么多吧,以后想到了再更新,大家面试如果在面试中遇到了什么问题可以留言讨论

tips
①:如果面试官提问问题的时候一定不要没在有听懂题意就直接回答问题
②:在面试官提问出问题当你把基础部分都回答过之后,一定要对问题中的一些点进行扩展回答,这是你能拿到offer的充分不必要条件谨记谨记谨记