字节暑期实习
三面当天晚上收到通知过了,安排周日hr面
三面在同一天,属实是累惨了…
一面
-
聊项目
-
实现一个宽高2:1的div
- 在div中有一张图片,图片布满整个div
-
css权重
<style>
.red p {
color: red;
}
.blue p {
color: blue;
}
</style>
<div class="red">
<div class="blue">
<p>我是什么颜色</p>
</div>
</div>
<div class="blue">
<div class="red">
<p>我是什么颜色</p>
</div>
</div>
- 讲一下JS的原型和原型链,顺便做了道题
var a = function () {
this.b =3;
}
var c = new a();
a.prototype.b = 9;
var b = 7;
a();
console.log(b);
console.log(c.b);
-
React的hook为什么不能写在分支中
-
https与http有什么区别
- TLS握手过程
-
讲一下宏任务与微任务,然后做了道题
async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {
console.log('async2');
}
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0);
async1();
new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
});
console.log('script end');
- 实现sum函数
console.log(sum(2,3)); // 输出5
console.log(sum(2)(3)); // 输出5
我直接写了个柯里化,后面让我写个闭包的版本
看我写了柯里化,问了偏函数和柯里化函数有什么区别?不太懂,扯到函数管道那里去了,面试官说没事,问题不大。
- 爬楼梯,一次可以爬一层或者两层,假设有N层楼梯,总共有多少种爬法。
二面
-
聊项目
-
ES6有什么新特性
- var,let,const的区别
- 箭头函数的特性
-
改变this指向的方法有call, apply, bind. 他们有什么区别?
- bind函数后面能跟参数吗,有什么作用
- 这些方法能改变箭头函数的this指向吗
-
用过哪些数组方法: (forEach, map, reduce, filter, reduceRight… 我用过的都说了一遍)
- forEach函数中改变数组元素,会对原数组造成影响吗?
- map呢?
先说了之前没有想过,然后手写了一下map函数,现场解释了一下。
- JS基础题
var a = { k1: 'v1' };
var b = a;
a.k3 = a = { k2: 'v2' };
console.log(a);
console.log(b);
- 柯里化函数
实现求和:
sum(1)(2)...(x)
以为和一面一样,所以写了个常规的柯里化函数(函数参数固定),后来面试官说,我这个参数是不固定的,然后我就傻了。
后来面试官提示了一下,你可以让
console.log(sum(1)(2)...(x) == 1 + 2 + ... + x)
反映过来可以重写函数的valueOf方法
- 使用reduce实现map方法
三面
-
为什么想要加入开源团队
-
如果顺利的话,什么时候能过来实习
-
过来实习的话,有意向转正吗
-
为了这次面试,准备了多久,刷了多少题
老实说前面聊这些我以为就单纯聊天了,我已经放松了,后面继续做题,神经又突然绷紧了,可能因为这样导致后面回答的也不太好。
-
讲一下JS的数据类型
-
讲一下react fiber架构为了解决什么问题
- 解决异步不可中断
- 怎么解决的 -> 时间分片
-
使用过什么操作系统,用过Linux吗
- 知道一个进程名,在Linux下如何杀死一个进程(不会,面试官说没事,问题不大)
-
算法题1
数字组成的字符串,规律如下:
12345678910111213…
第n位字符是什么?
eg. n = 11, ret = ‘0’
- 算法题2
有序数组原地去重,去重的数字放在前部且有序,重复的数字放在后部保留,不要求顺序。
只能使用常量的空间,返回不重复数字的个数。
[1, 1, 1, 2, 2, 3, 4, 4, 6, 8, 8]
[1, 2, 3, 4, 6, 8, (2, 4, 8, 1, 1)]
即小括号内的数字不要求顺序,但必须保留,return 6。
- 算法题3
versions是一个项目的版本号列表,因多人维护,不规则
var versions=[‘1.45.0’,‘1.5’,‘6’,‘3.3.3.3.3.3.3’]
要求从小到大排序,注意‘1.45’比‘1.5’大
var sorted=[‘1.5’,‘1.45.0’,‘3.3.3.3.3.3’,‘6’]
校友!
tql
老哥,秋招去了哪里?
字节,实习转正了
tql