字节前端提前批一面面经(已约二面,许愿二面)
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 数组,就不需要对两边分别排序。好像还有更好的方法,有待研究,欢迎小伙伴们补充。
有时间会写百度提前批面经,最后,牛课保佑二面过过过!!!
全部评论
(3) 回帖