返回

字节跳动前端校招 一二三面+HR面面试经历

前端

字节跳动是国内互联网巨头,也是很多应届毕业生的梦寐以求的企业。今年,我有幸参加了字节跳动前端校招,并经历了一二三面+HR面的面试。下面,我将分享一下我的面试经历,希望能对其他求职者有所帮助。

一面

一面是技术面,面试官是一位非常和善的大佬。他首先问了我一些基本的问题,比如自我介绍、项目经历等。然后,他开始深入考察我的前端知识,包括HTML、CSS、JavaScript等。他还问了一些算法题,比如二分查找、快速排序等。

二面

二面也是技术面,面试官是一位资深工程师。他继续考察了我的前端知识,还问了一些更深入的问题,比如浏览器渲染机制、HTTP协议等。他还问了一些项目中的具体细节,比如我是如何实现某个功能的。

三面

三面是综合面,面试官是一位HR。他主要考察了我的性格、兴趣爱好、职业规划等。他还问了一些关于字节跳动的了解,比如我对字节跳动的企业文化、产品和发展前景的看法。

HR面

HR面是最后一面,面试官是一位HR经理。他主要考察了我的职业规划和薪资要求。他还问了一些关于我家庭、性格等方面的问题。

总结

字节跳动的面试非常严格,每一个问题都会问得很深,很深。但面试官都很和善,不会给太大的压力。只要你准备充分,相信自己,一定能顺利通过面试。

附加:节流函数的实现

在面试中,面试官问到了节流函数的实现。节流函数可以限制函数的执行频率,在一定时间内只执行一次。

节流函数的实现有很多种,其中一种是定时器版。定时器版的节流函数是这样的:

function throttle(func, wait) {
  let timeout;
  return function () {
    let context = this;
    let args = arguments;
    if (!timeout) {
      timeout = setTimeout(() => {
        func.apply(context, args);
        timeout = null;
      }, wait);
    }
  };
}

定时器版的节流函数原理很简单,就是在每次函数执行后,设置一个定时器,在定时器时间内,函数不会再次执行。当定时器时间到了之后,函数才会再次执行。

定时器版的节流函数有一个缺点,就是如果函数在定时器时间内被多次调用,那么这些调用都会被忽略。为了解决这个问题,我们可以使用时间戳版的节流函数。

时间戳版的节流函数是这样的:

function throttle(func, wait) {
  let lastTime = 0;
  return function () {
    let context = this;
    let args = arguments;
    let now = Date.now();
    if (now - lastTime >= wait) {
      func.apply(context, args);
      lastTime = now;
    }
  };
}

时间戳版的节流函数原理是,在每次函数执行后,记录当前时间戳。当函数再次被调用时,如果当前时间戳与上次执行时间戳之差大于等于等待时间,那么函数才会再次执行。否则,函数会被忽略。

时间戳版的节流函数没有定时器版的缺点,它可以保证函数在等待时间内只执行一次。