转眼间从事 web 前端的工作也快两年了。然而 web 前端纷繁复杂,发展日新月异;计算机的知识更是博大精深。

自己所掌握和了解的知识点也很有限,平时写业务代码时也很少用到,唯有把面试中遇到的问题记录下来,以期将来有用 :)。

DOM 相关

盒模型

盒子由 margin border padding content 4部分组成。box-sizing 为 content-box 的时候 width 为 content 的宽度,border-box 亦然。
padding 会填充上对应的背景颜色,width: 100%时,宽度为所在容器的宽度。

实现常见布局

css 苦手,只能看平时的积累了。简单的三列布局可以用 float 实现。

框架相关

vue 响应式原理

对 vue 来说,响应式的关键为 Object.defineProperty , get 的时候收集依赖项,set 的时候更新依赖项。

网络相关

同源跨域

协议、域名、端口号。常见的允许跨域的有 script link img。

jsonp

jsonp 是很老的技术了,为了解决跨域的问题才出现的。需要传递 callback 的名字才可以正常执行。

tcp

三次握手,四次分手,通过滑动窗口和序号实现重新排序。

js相关

作用域链、原型链、对象、this

理解还是能理解的,不过面试题都有各种神奇的陷阱,随缘😊。

异步模型

  1. macrotask 队列中执行一个 task
  2. microtask 队列中执行所有 task
  3. 线程跳回 1

用 call 或 apply 实现 bind 函数

喜闻乐见的一道面试题。
考察了 this,作用域链,原型链,函数参数等一系列知识

promise

promise resolve 为 microtask。

工程化

性能优化

需要从网络、渲染、js 等各个方面来优化

一些相关的考题

  • 有序数组 merge 去重
  • 实现 throttle 函数
  • sort 方法随机化数组,真的随机吗

编程能力相关

算法题

反转链表 反转二叉树 合并区间

编程思想

设计模式,发布订阅模式