摘要:
基础输出题 题目1 记住 new Promise 里的参数函数,是同步被执行的,故而先输出 1,2. resolve 后还需要等待进入下一个事件循环。then 把参数函数推入微任务队列,并不直接执行。 输出 4,接着事件循环进入下一轮,输出 3. 题目2 来自网易。给出一个 promise 请问这三 阅读全文
摘要:
写作背景 猛然间发现都需要在牛客网上视频面试了。 好气人呀,一周内面试笔者居然再原型链问题上被连续绊倒两次,然后被判定为 JS 基础薄弱。真的好气人呀,所以笔者研究了一下午的原型链,打算之后再也不会被这个绊倒,其遇到的题目和大家分享。 题目 题目1,来自快手 真的再很多地方出现了,我一搜才发现其他朋 阅读全文
摘要:
问题 面试题:你能说说 flex-shrink 么? 我们所知 flex 语法如下 flex: <flex-grow> <flex-shrink> <flex-basis> 并且可以有一些缩写 flex: 1 # 等效于 flex: 1 0 0 其中 flex-grow 比较好理解,但是 flex- 阅读全文
摘要:
问题 笔者第一反应就懵逼,搞不懂特意放一个 干什么,因为 的原型链属性 prototype 只和 有关系,和 对象本身没啥关系。 面试中笔者猜测 输出结果 最后面试完,特意去输出了下结果 也就是说 A 可以找到 Function.prototype 和 Object.prototype 的属性。而 阅读全文
摘要:
根据 "webpack 官方 v.4.43.0" 的说法是 tree shaking 是一个术语,通常用于描述移除 JavaScript 上下文中的未引用代码(dead code)。它依赖于 ES2015 模块语法的 静态结构 特性,例如 import 和 export。这个术语和概念实际上是由 E 阅读全文
摘要:
问题 工作过程中我们时常会碰到栈溢出的问题,而这经常是由死循环引起的,见下面的代码。 那今日看了李兵老师的 "图解 Google V8 堆和栈:函数调用时如何影响到内存布局的" ,笔者才对栈溢出有了更深的了解。 首先为什么会使用栈的结构来管理函数调用? 这是因为在父函数中调用子函数,执行代码的控制权 阅读全文
摘要:
提问 CommonJS 中的 require/exports 和 ES6 中的 import/export 区别? 回答 CommonJS 模块是运行时加载,ES6 Modules 是编译时加载并输出接口。 CommonJS 输出是值的拷贝;ES6 Modules输出的是值的引用,被输出模块的内部的 阅读全文
摘要:
面试时又被人问起 JS 的 Iterator 迭代器。查阅 "MDN" ,得知 非标准。 Iterator 函数是一个 SpiderMonkey 专有特性,并且会在某一时刻被删除。为将来使用的话,请考虑使用 for...of 循环和 迭代协议。 如果用此 API 那么遍历对象还得想下面这样,手动包上 阅读全文
摘要:
DFA(Deterministic Finite Automaton,即确定有穷自动机。其原理为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。 举例 阅读全文
摘要:
生成一个随机的 ID 有很多种做法,比如说 GUID 和 UUID。但如果想要有序,可以插入数据库中做数字主键,那就有了雪花算法。雪花算法得到的是个比较大的数字,比较大,而 JS 中 Number 类型的最大值 ,那这样运算会溢出。所幸的是网上有很多 BigInt 的类库,现在 ES10 标准就包括 阅读全文