知识
- 面试的是一个小姐姐,很年轻,照着简历问,我简历里写了 项目管理,性能调优
- 性能调优问了一大堆
- 缓存(强缓存,协商缓存)
- 执行代码的效率怎么提升
- 包的体积怎么减小
- 浏览器渲染原理(非常重要)
- 答得依旧很拉跨
- Vue 相关的
- Vue2 的 Object.definePropoty 的痛点
- Vue3 的 Proxy,Reflect,好处,缺点,参数,使用
- rerender 怎么优化
- 小姐姐说这些问题官方文档其实都是有明确标注的
- 之前项目的亮点,我是没有,然后分享了一个分享了一个解决的难点问题,坎了一大堆,这里耗时比较多,面试官是不会打断你的,你尽量多说一点,因为面试时间有限,你多吹会儿牛逼,面试官可能就会稍问你几个问题。一定要抓住自己的showtime时间。最后,小姐姐说Vue她不太懂,得问一下同事这样解决是不是最优雅的
- 设计一个 storage 库,既要 localStorage 的持久性,又要 cookies 的时效性,这个我完全就是一塌糊涂
其他
- 最近研究的技术(TS+Vue3)
- 小姐姐问了我1个泛型的问题,1个 extends 关键字的问题(这里跟js中的extends 关键字是不同的)
- 第一个问题没答上来
- 第二个问题小姐姐写了一句代码,让我描述这句代码干了什么,比较简单
- 最后反问时间,我就问以后自己的前端应该怎么进阶,小姐姐说要抓住自己业务中的痛点,要了解浏览器的渲染原理,因为前端开发离不开浏览器等等等
- 然后让我等通知
面试题
function curry(fn, curArgs) {
return function(){
let args = [].slice.apply(arguments)
if(curArgs !== undefined) {
args = curArgs.concat(args)
}
if(args.length < fn.length) {
return curry(fn, args)
}
return fn.apply(null, args)
}
}
var abc = function(a, b, c) {
return [a, b, c];
};
var curried = curry(abc);
console.log(curried(1)(2)(3))
curried(1, 2)(3);
console.log(curried(1, 2)(3))
curried(1, 2, 3);
- 小姐姐说改成箭头函数怎么整?因为箭头函数自己是没有this和arguments的,这个是真没搞过,脑海突然一片空白
console.log('Hello World!');
function curry(fn, curArgs) {
return (...arguments) => {
let args = [].slice.apply(arguments)
if(curArgs !== undefined) {
args = curArgs.concat(args)
}
if(args.length < fn.length) {
return curry(fn, args)
}
return fn.apply(null, args)
}
}
var abc = function(a, b, c) {
return [a, b, c];
};
var curried = curry(abc);
console.log(curried(1)(2)(3))
curried(1, 2)(3);
console.log(curried(1, 2)(3))
curried(1, 2, 3);
总结
- 提前准备的知识可能会考到
- 但是面试官是不会仅考察你准备好的东西,她后再这个基础上问你为什么,另外需求这样一改你的方式要怎么适应
- 所以平时一定要积累,面试真是一个考验底蕴的活
- 挂了的话,这就是挂经,大家引以为鉴