字节前端校招一二三四技术面,已offer

大家好,我是小庄,一个专心于互联网技术的深漂打工人。

金三银四在今年变成了铜三铁四,很多小伙伴在群里吐槽春招面试机会很少,很多公司都不招人。互联网的“寒冬”,努力提升技术实力才是硬道理!

如下,这位大佬在校招中,通过了字节跳动校招的一二三四技术面,最终拿到了字节跳动的sp offer,下面直接上面经!

字节跳动面经

(通过)一面,1h:

1、为什么第二次访问项目白屏的时间会缩短,引出http缓存;是通过什么方式来找到本地缓存文件的?
2、css、js解析顺序与相互阻塞;引出defer、async
3、cdn缓存原理;引出http强制缓存cache-control:public
4、Linux  找到名称nginx并杀掉的方法;讲一下守护进程
5、死锁的理解
6、socket   websocket的理解
7、http  400    502的含义
8、http 2.0的新特性?引出多路复用的流程及二进制分帧、头部压缩hpack的原理
9、内存泄露的场景及如何解决?引出内存泄漏的排查工具 chrome tools
10、点击事件的几个阶段?preventDe***t是否会阻止冒泡
11、instanceof的原理
12、0.1  +  0.2  === 0.3,解释原因;引出二进制浮点数对于小数的处理
13、const  a = {},是否可以改变对象属性值?如果属性值不能改变怎么做?
14、变量提升的理解?
15、异步任务js是怎么处理的?引出了event loop的流程及宏任务与微任务的介绍
16、如何判断一个元素是否在视口范围?
17、css  postion fixed  absolute的区别;他们是怎么定位的,有参考对象吗?
18、<ul><li></li></ul>
19、vue   data为什么不能是个对象;引出为什么不能是箭头函数?
20、dom diff的原理及时间复杂度

21、手写:通过多叉树的广度优先遍历,找到值为xxx的节点

22、手写:数字的千分位转化,如:123123234.123 -> 123,123,234.123

(通过)二面,4.14,60min:

1、自我介绍
2、判断数组的方法?说一下instanceof的原理?
3、说一下下面结果输出什么?
var length = 10;
function fn() { return this.length+1;
}
var obj = {
    length: 5,
    test1: function() {
        return fn();
    }
};
obj.test2=fn;
//下面代码输出是什么
console.log(obj.test1())
console.log(fn()===obj.test2())

4、手写寄生组合式继承
5、 实现一个repeat方法

// 需要实现的函数
function repeat (func, times, wait) {},


// 使下面调用代码能正常工作
const repeatFunc = repeat(console.log, 4, 3000);
repeatFunc("hello world");//会输出4次 hello world, 每次间隔3秒

6、用链表实现约瑟夫环算法

假设有n个人,标号为1到n。
 从第一个人开始计数,到第k个人则出列,随后从第k+1个人重新计数,到第k再出列....。
 直至剩下最后一个人。问最后剩下的人的编号?

7、说一下以下题的思路

标题:输入电话号码时自动推荐出下一位合法的数字集 
描述信息:
公司有10万名员工,每名员工都有一个座机号码。现在要在网页上实现一个“自动补位推荐” 的功能,问如何实现?


解释:
“自动补位推荐” 功能:有一个输入框,用户每输入一个数字,立马推荐出下一位合法的数字集合。
比如只有 5789234、5623786、5633678三个电话号码,当第一位输入5时,立马推荐下一位有效数字集合[ 7, 6 ],
如果第二位输入6时,下一位有效数字集合为[2,3]....

8、说一下实现一个SPA应用统计pv的SDK的思路
9、说一下扫码登录的实现流程
10、说一下为什么不能客户端生成二维码ID?
11、 数字转换为千分位有哪几种方式?都说一下是如何实现的

(通过)三面,1h:

1、项目特点介绍
2、讲一下项目是如何进行优化的?
3、手写一个compose的方法

a(b(c(d('xxxx'))))


const func = compose(a, b, c, d)
func('xxx')

4、说一下vue组件的通信的实现方式?eventbus的设计模式是什么?

5、场景题:手写一个组件,组件实现内列表之间的状态管理

6、对于前端之外的技术你还有哪些感兴趣的?

7、如何对兼容性代码进行处理?
8、脚手架的代码被修改后,别的使用到这个脚手架的项目也需要进行更新,那么这时候怎么处理会比较好?
9、你是如何去规范别人写的代码的?eslint的表现是怎么样的?如何保证别人提交到github的代码是正确的?
10、grunt、gulp了解吗,他们和webpack有什么区别?之间的优势和差别是在哪?
11、如果让你实现一个脚手架,你应该需要考虑什么点?
12、你是强制要求模块化划分吗,还是说有什么标准?

(通过)四面,0.5hour

1、简单的自我介绍
2、项目特点详细介绍,从页面、架构设计分析
3、一个多商铺商城的完整介绍(从用户、产品的角度去分析介绍),C端、商家B端、平台端
4、 介绍一下你在前公司的定位,职责,干的事情
5、介绍前公司的项目报价、客单价、人天、项目成员分配
6、 说一下最常用的组件、设计风格、为什么这么设计

(通过)HR面,0.5hour

因为我在大学期间有过创业经历,所以主要是问我创业以及各方面综合素质的问题。

Offer

一星期后谈薪下offer,评级sp。


(完)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值