字节一面复盘

笔试

笔试一共四题
第一题考的是组件的封装,因为我使用的是vue所以我用vue进行实现。大致内容就是实现一个图片长宽比是固定的宽度自适应,及下面文本内容占两行多余部分…(抖音的界面)
第二题则是找出两个数组互斥的元素
第三题是考的递归(树形结构),行政区划找指定id的name(考虑时间复杂度优化)
第四题的是分析题,分析的是今日头条的一个页面,主要讲述技术实现及自己的看法。

一面

由于我一年工作经验不到且面的是外包,所以问题可能不是很难。主要问的题目也没有特别大的难度,都是一般面试会问的闭包啊,原型链之类的。然后vue的话问的也不多,因为他们用的技术栈是react。面试官就问了一下vuex的一些东西包括vuex的实现原理,不过我是真的没有看过源码,所以就直接回答的是使用及持久化,大概说了一下自己的猜测,当然也直接和面试官说了自己没有读源码,然后面试官还问了关于项目中的难度,我大概说了四个,由于是后台管理系统所以没有接触到特别难的点,于是勉强说了四个认为花时间想的及在开发中遇到的element的BUG的问题,面试官说前两个还算是一些难点,第一个是百度地图使用路径的时候图标的更换,第二个是iframe使用时需要进行和页面有互动操作。但是我只说了百度地图图标更换,因为iframe使用的时候也是找的不太记得了。然后面试官就问了一些百度地图的实现原理,我说我不太清楚,但是提到了webGL,不过真的没有看过啊,然后可视化一面提到了echarts。echarts通过canvas或svg实现。但是也没有说原理,自己也没有太看。说了一下自己平时是看着文档使用echarts。然后面试官就开始了手写题面试。由于技术栈也不一样,而且题目也答的不是很好,我认为是凉了,没想到一面居然过了。
第一题是闭包相关的

 for(var i = 0 ; i < 3 ; i++){
      setTimeout(()=>{
        console.log(i);
      })
    }

问打印什么?变成let打印什么?如何让他打印0,1,2。

第二题是原型链相关的

    let F = function(){}
    Object.prototype.a = function(){
      console.log('a');
    }

    Function.prototype.b = function(){
      console.log('b');
    }

    let f = new F()

    f.a()
    f.b()

    F.a()
    F.b()

控制台结果是啥

第三题是简单一点的算法,合并数组(3分钟)
[1,6],[2,3,4,5] => [1,2,3,4,5,6]
我第一种方法用的srot加展开运算符。但是面试官说你考虑一下sort底层实现,那这个题的时间复杂度是多少。
于是我就用指针写了一下,最后时间复杂度为O(n)

第四题是函数科里化,实现求和f(1)(2)(3,4)(5,6,7)(8,9)(10).valueOf()输出为55

function add(){
  let sum = 0;
  [...arguments].forEach(item=>sum+=item)
  const test = function(){
    [...arguments].forEach(item=>sum+=item)
    return test
  }

  test.valueOf = () => {
    return sum
  }
  
  return test
}

console.log(add(1,2)(3,4)(5,6)(7,8)(9,10).valueOf());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值