快手一面凉经(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.如何判断服务器的数据是否更新?