投递渠道: BOSS 直聘
时间线
一面
gap
看代码说结果:
const promise = new Promise((resolve, reject) => { resolve("success1"); reject("error"); resolve("success2"); }); promise .then((res) => { console.log("then", res); }) .catch((err) => { console.log("catch", err); }); // then success1 // Promise 状态改变后就不能再改变,虽然后面的代码还能继续执行.
var name = "World"; (function () { if (typeof name === "undefined") { var name = "Jack"; console.log("Goodbye " + name); } else { console.log("Hello " + name); } })(); // Goodbye Jack // var 变量提升: 只提升定义不提升赋值,并且之提升到所在的作用域的顶部
function f1() { console.time("time span"); } function f2() { console.timeEnd("time span"); } setTimeout(f1, 100); setTimeout(f2, 200); function waitForMs(n) { var now = Date.now(); while (Date.now() - now < n) {} } waitForMs(500); // 在执行 setTimeout(f1, 100) 后会开启一个定时器,并在 100ms 后将 f1 放入宏任务队列, 但是回调函数 f1 并不会立即执行,而是等主线程空闲才会执行. /** * 上述代码的执行过程是: * 1. 执行 setTimeout(f1, 100) * 2. 执行 setTimeout(f2, 200) * 3. 执行 waitForMs(500); * 4. 由于 waitForMs(500) 会阻塞主线程 500ms, 此时 f1 与 f2 已经被放入宏任务队列中会被取出并且立即执行,所以 time span 实际上是执行带来的延迟而非定时器的延迟. */
二面
emmm,其实就是氛围很轻松的闲聊。
结束后 hr 约线下详谈。
hr 姐姐人真的超级好!!!!!!!