字节跳动二面

字节跳动二面

知识

  • 面试的是一个小姐姐,很年轻,照着简历问,我简历里写了 项目管理,性能调优
  • 性能调优问了一大堆
    • 缓存(强缓存,协商缓存)
    • 执行代码的效率怎么提升
    • 包的体积怎么减小
    • 浏览器渲染原理(非常重要)
    • 答得依旧很拉跨
  • 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)
        // console.log(curArgs, args)
        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))
// => [1, 2, 3]
 
curried(1, 2)(3);
// => [1, 2, 3]
 console.log(curried(1, 2)(3))
curried(1, 2, 3);
// => [1, 2, 3]
  • 小姐姐说改成箭头函数怎么整?因为箭头函数自己是没有this和arguments的,这个是真没搞过,脑海突然一片空白
//process.stdin.resume();
//process.stdin.setEncoding('ascii');
//
//var input = "";
//
//process.stdin.on('data', function (data) {
//    input += data;
//});
//
//process.stdin.on('end', function () {
//    console.log(input);
//});
console.log('Hello World!');


function curry(fn, curArgs) {
    return (...arguments) => {
        let args = [].slice.apply(arguments)
        // console.log(curArgs, args)
        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))
// => [1, 2, 3]
 
curried(1, 2)(3);
// => [1, 2, 3]
 console.log(curried(1, 2)(3))
curried(1, 2, 3);
// => [1, 2, 3]

总结

  • 提前准备的知识可能会考到
  • 但是面试官是不会仅考察你准备好的东西,她后再这个基础上问你为什么,另外需求这样一改你的方式要怎么适应
  • 所以平时一定要积累,面试真是一个考验底蕴的活
  • 挂了的话,这就是挂经,大家引以为鉴
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值