字节跳动
企业应用
一面
- 面试官还是挺和蔼的,貌似在自己的出租房里,全程大概40分钟,首先自我介绍,重点考察基础
- 冒泡排序工作过程,算法复杂度多少,总共需要多少次交换,为什么是n平方
- 斐波拉契数列求第n项,我用了递归,问有没有什么优化(
- 版本号的数组排序
- http协议状态码有了解吗?
- 401和403知道吗?如果一个管理员为了一个资源设置了访问权限,当普通用户通过认证之后访问,你觉得应该返回那个状态码
- 301和302知道吗?
- 304知道吗?怎样让一个资源使用强缓存,通过什么方法设置?
- 307知道吗?
- 请求头中的Host字段有什么用,浏览器不是已经有了url吗?为什么还要host
- Content-Type字段了解吗?用了干什么的?响应中有没有这个字段?
- js中如何判断一个变量是不是数组?
- typeof行不行?construct查找是什么原理?
- 能不能通过判断这个变量有没有reduce方法,来判断有没有数组?
- reduce方法了解过吗?
- Promise相关的2个代码的执行结果
二面
- 面试官先自我介绍了一下,然后我自我介绍,全程50分钟
- 你为什么选择前端呢?(
- 看到你项目当中写了http2,能说一下http2和http1.1的区别吗?
- http2协议用的多吗?有关注过大厂的网站都是基于http2的吗?
- 那你觉得用http2有什么不好的地方,相比http1.1
- https的tls握手过程说一下
- nginx如果需要配置http2具体要怎么做呢?
- http中的cache-control有哪些字段,分别代表什么意思,以及应用场景
- 下面开始写代码
function FinalFalt(arrVal) {
var result = [];
function MyFlat(arr) {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
MyFlat(arr[i]);
} else {
result.push(arr[i]);
}
}
}
MyFlat(arrVal);
return result;
}
var arr = [1, [1, [2]]];
FinalFalt(arr);
console.log(FinalFalt(arr));
- 页面上有一个按钮,点击一下然后有倒计时的效果,从10,9,8,7....倒计时
- 如果点击一下需要暂停又该怎么做
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="clock">点击</button>
<p id="content"></p>
<script>
var ele = document.getElementById('clock');
ele.addEventListener('click', clickWrapper);
var el = document.getElementById('content');
var isClick = false;
var timerId;
function clickWrapper() {
// 我一开始把var timerId 放到了这个地方,没用,后来提到了外面就可以了,面试官问为什么,提到外面这个clickWrapper函数就是一个闭包函数
var cur = 10;
isClick = !isClick;
console.log(isClick);
if (isClick) {
execFuc();
} else {
stopFuc();
}
function execFuc() {
timerId = setInterval(() => { el.innerHTML = `${cur--}` }, 1000);
}
function stopFuc() {
clearInterval(timerId);
}
}
</script>
</body>
</html>
- 如代码中的注释部分,面试官问,为什么提到外面就好了,如果var换成let还有效吗?为什么?
- 严格模式有了解吗?有什么特点?
- webworker了解过吗?
- 大量的计算和http请求这种操作一样吗
- webworker到底是为了解决那种呢?还是说两种都解决了
网友评论