20220510 字节-搜索方向前端一面
1.自我介绍
2.计算机网络模型有哪些?
3.具体每一层干什么的,传输的数据是什么,有哪些协议?
4.传输层tcp和udp
5.三次握手四次挥手,为什么是三次握手不能是其他的?
6.进程与线程的区别?
7.栈和堆
8.JS基本数据类型 引用数据类型分别有哪些?
9.基本数据类型之间的转换
10.
var x = +'1'; console.log(typeof x); var y = '1' + 2; console.log(y); //number //12
11.异步操作有了解过吗?
然后发了个简单的跟事件循环(宏任务微任务)的相关的打印输出题目。
12.具体说说事件循环的过程,微任务宏任务有哪些
13.算法口述思路:求一个二叉树的节点个数
14.缓存机制
15.手写居中垂直居中
看我写的时候 用的 id选择器,问了我使用 id 和 class
16.算法:求一个字符串的最长无重复的子串
(这道题总共写了半个多小时还没写出来,只会一个暴力方法[好菜,真的是一个经典的题目])
17.反问
20220512字节搜索方向二面
1.自我介绍
2.学前端多久了
3.简历里有写移动端300ms的延迟问题,问什么会有这个问题?
4.fastclick如何解决这个问题的呢?
5.从你的角度理解webpack干嘛的?
这题感觉自己答得好烂...
6.浏览器加载html的过程?
7.刚才说的paint 阶段是CPU还是GPU完成的?
8.构建 CSSOM 树的时候会阻塞 DOM树的构建吗?
9.如何避免 js 阻止 DOM 树渲染?
10.静态资源一般采取什么缓存策略?
11.之前说的fastclick是防抖还是节流?
12.一般用在防抖的场景还有哪些?
13.手写防抖和节流
14.
<div id="father"> <div id="child"> 123 </div> </div> document.getElementById('father').addEventListener('click', function(event) { console.log('father'); }) document.getElementById('child').addEventListener('click', function(event) { console.log('child'); })
点击'123'的输出
<div id="father"> <a id="child" href="https://toutiao.com"> 123 </a> </div> document.getElementById('father').addEventListener('click', function(event) { console.log('father'); }) document.getElementById('child').addEventListener('click', function(event) { console.log('child'); })
15.手写Promise.none
和Promise.all相反,当所有的promise被拒绝之后,none方法执行完成的决议,如果存在一个promise执行完成的决议,none方法则执行拒绝
16.算法:二叉树遍历
对于给定的二叉树,判断是否存在一条完整路径(从根节点开始,到叶节点结束的连线),其路径上结点的值之和为 target, 输出布尔值
17.智力题:100只老虎和1只羊在一个岛上;
老虎也可以吃草活着,但是更愿意吃羊;
每次只能有一只老虎吃一只羊,而且这只老虎吃完羊之后,就会变成羊,会被别的老虎吃;
假设所有的老虎都是理性的,那100只老虎和1只羊在,这只羊会被吃掉么
哈哈哈这题觉得自己好蠢,面试官提示可以从2只老虎,一只羊情况考虑。【然而我感觉还是没法从2只推到100只】之后每次面试官引导一波都会觉得天哪好牛,之后再自己推好像又脑子不够用
总结:一个找规律的题目
18.反问环节
20220517字节搜索三面
1.自我介绍
2.
if(!("a" in window)) { var a = 1; } alert(a); // undefiend
3.
var name = "222" var a = { name: "111",, say: function(){ console.info(this.name); } } var fun = a.say; fun(); a.say(); var b = { name: "333", say: function(fun) { fun(); } } b.say(a.say); b.say = a.say; b.say();
4.
for(var i = 0; i < 5; i++){ setTimeout(function(){ console.log(i); },1000); }
for(var i = 0; i < 5; i++){ (function(i){ setTimeout(function(){ console.log(i); },1000); })(i); } console.log(i);
5.XMLHttpRequest 怎么使用
6.跨域的实现策略有哪些
7.实现两个大正数相加操作
function bigNumSum(num1: string, num2: string):string {}
8.webpack 的 plugin 和 loader 的区别和原理
9.vue-lazyload 的怎么实现的
10.反问
这个面试官基本上一个点喜欢深挖,而我可能学得不太深,所以应该是凉了。
#字节跳动实习##春招##实习##面经##前端##字节跳动##前端工程师#不得不说字节效率是真快,当天面完当天晚上约二面,当然凉的也快,面完差不多一个小时就收到了感谢信。不过还是自己学习的深度不太够,三面的时候面试官建议我赶紧找个实习,建议大城市,规模也不要太小。