JavaScript 面试题

参考答案请查阅《JavaScript-Notes

JavaScript Interview

  • 如何设计一个 JS SDK,你会从哪几个维度进行考虑?

语法基础

类与对象

  • 以下代码的输出是什么样子的?
class Base {
  constructor(data = {}) {
    Object.assign(this, data);
  }
}

class A extends Base {
  a = null;

  constructor(data = {}) {
    super(data);
  }
}

new A({ a: 1 }); // { a: null }

异步并发

  • Event Loop 的基础概念是否了解?浏览器中的 Event Loop 与 Node.js 中的 Event Loop 有何区别?

  • JavaScript 常见的异步写法,Promise.finally 的实现?

TypeScript

  • 如何在 TypeScript 中设计简单的 IoC & DI 框架?如何实现简单的接口注解以自动生成类 Swagger 文档?

  • 在 TypeScript 中如何定义递归类型,譬如 [1, [2, 3, 4], 5]

  • TypeScript 的 Partial 在底层是如何定义的?如果要实现 DeepPartial,应该如何定义?

  • TypeScript 中如何进行类型断言与类型捕获的?

V8

  • V8 引擎中的对象与数组是如何存储的?为何 JS 的数组每个数据类型都可以不一样?为何 JS 的数组无需提前设置长度,是可变数组?为何数组可以像 Object 一样挂载任意属性?如果浏览器需要进行大规模数组运算,应该选择怎样的存储结构?

TypeScript

  • How to create a Partial-like that requires a single property to be set
type AtLeast<T, K extends keyof T> = Partial<T> & Pick<T, K>;
  • TypeScript 中如何实现类的多继承?
上一页