*字节前端提前批一面面经(已约二面,许愿二面)*

字节前端提前批一面面经(已约二面,许愿二面)
1.和面试官互相自我介绍。-5min
2.请说一下你自己做的项目:说了自己做的两个项目(介绍了echarts的使用和深入聊了一下前端跨域问题),说了一下在映客和360实习的工作,以及遇到的问题和自己的解决方法。-25min
3.问一下前端js方面的(面试官问的很简单,我说了很多,算是说的很全面):
(1)js == 和 === 的区别
(2)js splice 相关,参数,是否改变原数组。
(3)js slice 相关,参数,是否改变原数组。
(4)说说 promise
(5)说说 promise.all,用法,什么情况触发回调,举例说明不同情况。
4.基础题就到这,咱们开始算法题吧
(1)js 大数相乘(原理是竖式计算,注意下标对应关系,类似于在纸上运算,从后向前便利),开始是有问题的,后面也没调出来,可能是因为开始我键盘没电了。耽误了一下时间,比较的急,但是面试官夸我思路好,错误在js上,质疑我写了多少行代码,我说学前端一年大概不到两万行js代码,面试官说那你下一个算法题用python(最开始是学习了python,刷leetcode也是用python比较多)。

  function multiply(num1, num2){
        if(isNaN(num1) || isNaN(num2)) return ''
        num1=String(num1)
        num2=String(num2)
        let len1 = num1.length,
            len2 = num2.length
        let res=[]
        for(let i = len1 - 1; i >= 0; i--){
          for(let j = len2 - 1; j >= 0; j--){
            let index1 = i + j,
                index2 = i + j + 1
            let mul = num1[i] * num2[j] + (res[index2] || 0)
            res[index1] = Math.floor(mul / 10) + (res[index1] || 0)
            res[index2] = mul % 10
          }
        }
        var result=res.join('')  
        return result === 0 ? '0' : result.replace(/^0+/,'')
      }
      let t=multiply(31233, 333333)
      console.log(t);  

(2)python 求数组第k大的数
开始写了快排取了 len(arr)-k 个数,面试官说这个时间复杂度是 nlogn,不太满意,让我写时间复杂度为 On 的,思路是设置 mid ,小于 mid 存在 left 数组,大于存在 right 数组,就不需要对两边分别排序。好像还有更好的方法,有待研究,欢迎小伙伴们补充。
有时间会写百度提前批面经,最后,牛课保佑二面过过过!!!

#字节跳动##面经##校招#
全部评论
楼主算法题一般给多少时间
点赞 回复 分享
发布于 2021-07-21 19:03
点赞 回复 分享
发布于 2021-07-19 19:21
请问楼主前端一面都会有算法题吗
点赞 回复 分享
发布于 2021-07-18 22:35

相关推荐

时雨h:人生就像站在岔路口,两个方向都可以先了解了解,就像罗伯特·弗罗斯特诗里说的,“黄色的树林里分出两条路,可惜我不能同时去涉足” ,这两个方向就如同那两条路,每条都有独特的风景与未知。 除了自行探索,也可以看看自己学校往年同专业学长学姐的去向,每一届大致都差不多,这能帮你找到自己的定位。多跟他们交流交流,听听他们在不同选择中的收获与遗憾,那些过来人的经验会成为你前行路上的微光。 做出选择后,固然要坚定自己的选择,勇往直前地走下去,但也别忘了,那条未选择的路也始终在那里,它或许代表着另一种可能,另一种人生轨迹。偶尔回望,它能让你更加明白自己当下选择的价值,也能让你在前行的路上,多一份思考与从容。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
28
分享

创作者周榜

更多
牛客网
牛客企业服务