字节跳动 2021前端春招补录 一面
自我介绍
问是否有做过算法方面的项目:
之前只写过一个迷你编译器的前端,简单的介绍了一下问css
css选择器优先级问题
.lightblue p{ color: lightblue; // 浅蓝 } .darkblue p{ color: darkblue; // 深蓝 }<div class="lightblue"> <div class="darkblue"> <p>我是什么颜色?</p> </div> </div> <div class="darkblue"> <div class="lightblue"> <p>我是什么颜色?</p> </div> </div>CSS 盒子模型,从外到内的属性?
http问题
- 常见的状态码
 - 状态码304表示什么
 - 了解http缓存吗
 - tcp和udp的区别
 
js问题
- 描述一下原型链
 - 做一道js的题,分别输出什么
var a= function () { this.b =3; } var c = new a(); a.protorype.b = 9; var b = 7; a(); console.log(b); console.log(c.b); - 箭头函数语法问题
var func1 = x => x; var func2 = x => {x}; var func3 = x => ({x}); console.log(func1(1)); console.log(func2(1)); console.log(func3(1)); - 谈谈
let,const,var的区别 - js异步问题
1)代码补充asyncGetValue()function asyncAdd(a, b, callback) { doAsyncWork(a, b).then(value => callback(value)); } function asyncGetValue(a, b) { ..... }使之能够实现asyncGetValue(1,2).then(v => console.log(v));
2) 如果是实现asyncGetValues(list),list是一个对象数组,类似于const list = [ {a: 1, b: 2}, {a: 100, b: 200}, {a: 11, b: 21}, {a: 31, b: 41}, {a: 41, b: 51}]; function asyncGetValues(list) { ..... }3)在第三问的基础上实现并发控制,即有一个最大的并发数maxConcurreent 
更新:
- 两个都输出是3
 - 箭头语法题目,分别输出
1 undefined {x:1} - 异步代码实现
1)function asyncGetValue(a,b){ return new Promise(res=>{ asyncAdd(a,b,res) }) }2)使用了Promise.all()return Promise.all(list.map(x=>{return new Promise( res=>asyncAdd(x.a,x.b,res) )}))3)递归,经典的字节面试题,答案可能有些bug更新,本菜鸡写的代码有bug,并发控制题可以参考这篇文章js实现并发控制
return new Promise((res)=>{ let cnt=0; let length=list.length; let ansList=Array(length).fill(false); while(cnt<Math.min(length,maxConcurrent)) next(); const next=()=>{ let current=cnt++; let currentObj=list[current]; addAsync(currentObj.a,currentObj.b,(value)=>{ ansList[current]=value; if(cnt<length) next(); }) if(cnt>=length&&ansList.filter(x=>x===false).length===0) res(ansList) } }) 
巨人网络公司福利 89人发布
查看15道真题和解析
