快手实习一面
整体问的问题不多,但是很深入,感觉主要是考察思维。
- css选择器优先级
- 查询css选择器用哪些网站
- 菜鸟教程 方便
- MDN 权威
- 为什么MDN权威 (额…)
- html、css、js这些静态资源如果保证能够实时地更新到用户客户端中
- http、websocket检测一遍,http性能消耗少,websocket性能消耗高,但是可以保证一定能够实时更新推送。(面试官说实际项目不可能这样用)
- 想到了http缓存,讲了设置
cache-control:no-cache
。面试官感觉还是不是很满意,让我去百度这些官网看看,后面问他这题他说用的是cache-control
,让我去网站看看,后面我去看百度用的就是cache-control:no-cache
,我懵逼了,不知道是我之前描述有问题还是我考虑欠缺让他不满意。。。。
- key的作用,我答了key在patch中的作用,主要是对性能有影响,面试官接着问如何验证key对性能的影响,让我设计一个实验…
对性能的影响答了,但是答的时候有个地方我理解错误,至于如何做实验验证key会对性能有影响…我只能说拿两个长列表测试一下了…。
后面还是key,问实际场景中用key或不用key会有什么影响?又谈到key实际上用或不用好像都不会影响结果。实际上是在引导我答key用和不用对更新DOM区别,这一块知识又漏洞,卒。
既然有async为什么还要有promise,可不可以吧promise去掉。
async依赖于promise,await后面跟着的就是promise,返回的也是promise
面试官在这里还讲了async在vue生命周期函数和
methods
这些地方的工作原理,估计原本是想问,但是看我太菜了就直接讲一遍…最后是一道算法题。
console.log(fib(2)); // 1+1=2
console.log(fib(3)); // 1+2=3
console.log(fib(4)); // 2+3=5
console.log(fib(5)); // 3+5=8
根据结果写函数
function fib(n) {
if (n === 1 || n === 0) {
return 1;
}
return fib(n - 2) + fib(n - 1);
}
面试官说这样递归对性能有影响,我说可以用符号表来减少重复计算。但是面试官说让我用更人性化的方式写出来,我猜到应该是要我用迭代的方式写。但是此时因为前面答得不好,有点心灰意冷+紧张,没有写出来。
后面自己看了一下,三分钟写出来(但是面试的时候确实脑子一片空白。。。。)
function fn(n) {
let p1 = 1;
let p2 = 1;
let c = 1;
for (let i = 1; i < n; i++) {
p1 = p2;
p2 = c;
c = p1 + p2;
}
return c;
}
总结
面试官主要以考察思维为主,感觉他想招的不是做项目的人,而是去研究技术解决项目难题的那种,主要原因还是我太菜了。说实话虽然面试官虽然经常引导,但是每次抛出的问题确实平时很少会思考,所以面试的时候很容易懵逼,当然最主要的原因还是因为我知识学的不全面,而且平时学习的时候思考的较少,这次算是敲响了警钟。