字节抖音秋招提前批三面+hr(已拿offer)

2,346 阅读5分钟

本人刚刚大三结束,投递了字节跳动抖音的秋招提前批,三轮技术面+一轮hr面,已经成功拿到意向书,特意把面试过程整理下来分享。

一面(1h)

  • 跨域说一下
    • 可以从跨域的原因和解决跨域的方法说。
    • 1.1 跨域主要是由于浏览器的同源策略,是对跨域响应进行了拦截。
    • 1.2 跨域的解决方法有JSONP、CORS、反向代理等等,具体说一说。
  • 输入URL发生了什么
    • 寻找强缓存 -> 构建请求 -> DNS解析 -> 建立TCP连接 -> 发送HTTP请求 -> 响应(200/304协商缓存) -> 构建DOM树 -> 构建CSSOM树 -> 声称布局树 -> 建图层树 -> 生成绘制列表 -> 生成图块 -> 显示器显示
  • 重绘和回流说一下
    • 重绘、回流的触发条件、过程,可以针对此做的优化策略。
  • new操作符进行的操作
    • 以构造函数.prototype为原型创建空对象,将构造函数的this绑定到建立的空对象并执行,结果是引用数据类型则返回结果否则返回创建的对象。
  • 说一下CommonJS和ES模块化的区别

三道算法题:

  • 版本号排序
// 输入 ['1.1.1.1.1.1', '6', '5.4.3', '2.3.1', '2.3.1.1']
返回从大到小的版本号数组

我的写法是将每一个版本号以.分隔为数组,然后从第一位往后比较。

  • 判断一个链表是否有环
    • 快慢指针即可。
  • 实现一个类的add方法,使得同时的并行请求只有两个,并行请求完成后自动执行下一个任务直到全部执行完。
class Scheduler {
    async add(promiseFunc) {
    }
}

const scheduler = new Scheduler()

const timeout = (time) => {
    return new Promise(r => setTimeout(r, time))
}

const addTask = (time, order) => {
    scheduler.add(() => timeout(time)).then((res) => console.log(res))
}

addTask(1000, 1)
addTask(500, 2)
addTask(300, 3)
addTask(400, 4)

完整实现详解参考:实现Promise并行调度器

  • 使用Koa实现请求-响应的时间监听

二面(1h)

上来就是两道题:

  • ES5实现数组去重,要求时间复杂度是O(n). [1, 2, 2, '1', 'test'] => [1, '1', 'test'] 要求可以区分到1和'1'
    • 我问了是否可以使用额外空间,面试官回答是可以的。那就定义一个hash对象,遍历存入,key值的话需要添加typeof,用来区分1和''1'
  • Promise并行
[promiseGenerator]
promiseGenerator => Promise

dispatch(arr, n) {

}
// 实现dispatch方法

跟上一面的思路差不多

接下来就是跟着简历问项目,项目中自己所做的一些亮点,这个持续的时间比较长。

然后问了一些基础题:

  • HTTPS相相对于HTTP做了些什么?
    • 从SSL+数字签名这两个方面说。
  • HTTP2.0的优化?
    • 头部压缩、多路复用、服务器推送这三个方面详细回答。
  • 说一下为什么HTTP1有队头阻塞的问题
  • HTTP2.0实现了服务器主动PUSH,那么如果服务端文件(html)没有发生改变,那么此时还会主动PUSH,如何解决这个问题?
    • 这个我有点懵,因为面试官对于服务端主动推送问的很深,我不会,他回答是服务端可以主动释放。
  • React看你比较熟悉,说一下?
    • 可以说一下解决的问题、优势、原理。
  • 看过相关的源码没,说一下印象深刻的地方?
  • Virtual DOM的优势
    • 函数式UI编程、跨平台。
  • webpack的原理说一下?
    • 其实就是依赖关系图的构建过程
  • webpack自己实现过loader或plugin吗?
  • webpack loader和plugin的区别?

三面(35min)

三面进行的时间比较短,首先是围绕项目进行的一些提问,这个持续的时间比较长。 然后其他没问,直接给了两道题:

  • 一个非常长的非递减数组,找出一个数出现的次数。比如:[1, 2, 3, 3, 4, ......, 45, 45, 69, ......, 1000]找出80出现的次数

    • 使用二分查找,找出这个数字出现的索引,然后向左向右扩展。
  • 同花顺扑克牌问题 将扑克牌去除大小王,剩余1~13的黑桃、红桃、梅花、方块,1~13黑桃编号1~13,1~13红桃编号14~26,一次类推,求解取出5张牌是同花顺(同一颜色,顺子)

    • 解决方法很简单,先排序,最大与最小和需要是4,然后判断最小或最大是否在指定区间。

三面进行的很简单时间也很短,主要是项目,算法也很简单,不知道为什么~

hr面(40min)

三面完就约了当天进行hr面,不得不说字节的效率,hr面是个可爱的小姐姐~ 主要沟通了一些工作、实习、学校、学习方面的事情吧。

  • 为什么实习离职了,而不是留下来转正?
  • 你觉的你的优势在哪里?
  • 你觉得你的缺点在哪里?
  • 你对薪资待遇有什么要求?
  • 薪资在你心中的地位和分量?
  • 实习期间对于公司的工作时间怎么看的?能接受吗?
  • 对于加班怎么看待的呢?
  • 你未来两三年的职业规划?
  • 你是会学习一些后端、人工智能,还是专注于前端?
  • 平时学习的方式?

大概是有这些问题,当时还有其他问题想不起来了,沟通了四十分钟过程还是挺OK的。

反问环节我问她怎么看待印度最近封杀了抖音海外版的情况,她笑了笑说说明了公司这方面的工作,然后通知我三个工作日offer会到。

如今意向书到了也快有一星期了,也祝愿大家都能拿到心仪的offer~

整理不易,求个点赞关注~