快手一面凉经(2021.4.16 一个小时)
只写了一些记得的题目,其他的不太记得了。面试感受就是:快手这边比较看重直接写代码的能力,八股文不是很多。需要直接实践,白板写代码。
还要继续加油,增强自己的代码能力!!!
还要继续加油,增强自己的代码能力!!!
1.自我介绍
2.看代码说结果
console.log(typeof typeof typeof null) 答案是string
3.用事件委托给 li 标签绑定事件,要求点击 li 标签后,输出标签内容。
<ul id="list"> <li>123</li> .... </ul>
面完后写的,供参考:
var list = document.getElementById("list");
// 方法一: 直接用onclick
// list.onclick = function(e) {
// e = e || window.event; //这一行以及下一行是为了兼容IE8以下版本
// var target = e.target || e.srcElement;
// if(target.tagName.toLowerCase() === "li") {
// alert(target.innerHTML);
// }
// }
// 方法二:用addEventListener
list.addEventListener("click", function (e) {
e = e || window.event;
var target = e.target || e.srcElement;
if(target.tagName.toLowerCase() === 'li') {
alert(target.innerHTML);
}
}) 4.看代码说结果:
let a = 1;
function foo() {
console.log(a);
}
function bar(func) {
let a = 2;
func(); // func()是作为参数传递的,有自己本身的作用域,与函数bar()的作用域是分离的
}
bar(foo); 输出 1
需要注意,函数参数作用域和函数体的作用域是分离的:也就是说下面代码中,func()参数的作用域和bar()函数是分离的!!func()只有自己本身作用域和全局作用域,不包含bar()函数的作用域let foo = ‘outer‘; function bar(func) { let foo = ‘inner‘; console.log(func()); // outer } bar(function(){ console.log(foo); });
5.实现布局
<ul> <li> <img src="xxxx" /> <p>xxxxxxxx</p> </li> .... </ul>
要求:
1、两栏布局
2、图片 300px * 200px
3、p需要自适应宽度
4、图片和描述边距15px
6.实现一个能够周期执行某个函数n次的方法
function repeat(fn, count, interval) {
if(count == 0) return;
var timer = setTimeout( () => {
// 我是this:[object global]
console.log("我是this:"+this);
fn.call(this); //让全局对象调用该函数
repeat(fn,count-1 ,interval);
clearTimeout(timer);
}, interval);
}
function fn() {
console.log("我被调用了");
}
repeat(fn, 7, 1000); 7.判断链表是否有环
8.说一下你知道的状态码
9.说一下协商缓存的原理
10.Etag的原理?
11.如果要你设计一个协商缓存机制,你会怎么设计?
12.如何判断服务器的数据是否更新?

