Skip to content

字节跳动 - 国际电商

一面

  • 浏览器事件循环机制
  • 看代码输出
js
async function async1() {
  console.log("async1 start");
  await async2();
  console.log("async2 end");
}

async function async2() {
  console.log("async2");
}

console.log("start");
async1();
setTimeout(() => {
  console.log("timeout1");
});
new Promise((resovle) => {
  console.log("promise1");
  setTimeout(resolve);
}).then(() => console.log("promise2"));
Promise.resolve().then(() => console.log("promise3"));
console.log("end");
  • 介绍 this 关键字的指向问题
  • 看代码输出
js
var name = "foo";
var a = {
  name: "a",
  sayName: () => {
    console.log(this.name);
  },
};
a.sayName();
  • 如果需要改变 this 指向到一个对象 b 怎么做
js
// solution1
var name = "foo";
var b = {
  name: "b",
  a() {
    return {
      name: "a",
      sayName: () => {
        console.log(this.name);
      },
    };
  },
};
b.a().sayName();

// solution2

var name = "foo";
function a() {
  return {
    name: "a",
    sayName: () => {
      console.log(this.name);
    },
  };
}

var b = { name: "b" };
a.apply(b).sayName();
  • 讲一下 call、bind、apply
  • 闭包
  • JS 中的函数参数传递方式
  • Vue 实现响应式的原理
  • Object.dineProperty 和 Proxy 的区别
  • 介绍项目
  • 如何做技术选型
  • HTTPS 如何进行握手
  • 讲一下 HTTPS 的证书
  • Vue 的 Diff 算法
  • 讲一下 Vue 中 Key 的作用 - 注意的点
  • 算法:输出一个数组中最大的连续子数组

二面

  • 项目拷打 30min

三面

  • 项目
  • 性能优化
  • Vue 的核心设计思路
  • Vue 和 React 区别
  • Vue 对开发的帮助的是什么
  • JS 的原型链
  • 宏任务和微任务的区别
  • JS 能表达的最大整数
  • 如何存浮点型
  • 设计模式
  • 网络状态码
  • 快速排序的思路及缺点
  • 算法:实现超大数的加法
  • 算法:求一个字符串里最长的对称子字符串

第二次三面

虽然通过了,但是面试官认为我不是很契合他们组,所以又加面了另一个组。

  • 项目拷问,难点,划分模块的思路
  • Svelte 对比 Vue React 的优缺点
  • 为什么采用 Svelte
  • TCP 和 UDP
  • 为什么 TCP 可靠
  • 仔细讲一下 滑动窗口
  • LEFT JOIN RIGHT JOIN
  • 数据库索引及使用场景
  • == 和 ===
  • 做一个算法题,给定一个树,是否存在路径等于之指定的值,如
js
1;
23;
4567;
//存在路径4 2 1 3等于8
// 思路就是用一个set存储走左节点路径的值,和用一个set存储走右节点路径的值,后序遍历,检查是否存在路径等于指定值

备案号:闽ICP备2024028309号-1