拼多多前端二面
5.16 今天下面主管面,来复盘下
u1s1面试体验是真的不错,
首先是自我介绍性能优化,这里有个点,css内联,以前从来没听过,我了解的比较少这方面,然后面试官就解释说了一些
中间有些女生在那边说话巨吵....我都觉得面试官没听清我说什么,因为我听到的是那边的吵闹声太大声了,面试官看了好几眼那边😂感觉脸色都不好
基本上就是从性能优化里面发散出来的问题
这里就问了挺多的,但是我可能回答的不在点上,他就打断我说别的了,最后说一面肯定问过基础了那就做题吧
这里的性能优化是首屏白屏时间那些,这个了解但是确实不是很清楚,一些计算概念还需要再看看 = =
1.刚开始面试就写了一个动画,我都忘记animation咋写,大概写了一下就过了
2.有一个[1,100]的线段,随机生成10个1-100的线段,求他们映射到这个线段的长度,我把它处理成了合并区间,面试官说思路是对的,暴力解法差不多就这样,但是代码风格要注意😂应该把两步分开写,我说我一般都放在一个函数,写完了再看需不需要优化;
生成上10个线段直接处理成区间合并,leetcode原题那个
3.中文数字转换成阿拉伯数字,没get到点是真的菜,我想的是找他们的单位,然后乘各自的单位,面试官说是可以的,但是其实只有十百千万亿的单位,分成三组就可以了,我当时真的脑子what了,话到嘴边还是没有写出来,面试官说没事,就差不多结束了,其实才45分钟😂,最后还是结束了,然后面试官说其实拼多多没有外界传闻的那样~
//这个我还是觉得挺难的,去查了下有个写的比较好的改了点,只能小于9999 0000 0000 function chineseToNumber(str) { let chineseNumber = { 零: 0, 一: 1, 二: 2, 三: 3, 四: 4, 五: 5, 六: 6, 七: 7, 八: 8, 九: 9} let unitNumber = { 十: { value: 10, secUnit: false }, 百: { value: 100, secUnit: false }, 千: { value: 1000, secUnit: false }, 万: { value: 10000, secUnit: true }, 亿: { value: 100000000, secUnit: true } } if(str.length < 2) { return chineseNumber[str[0]] } //结果,当前字符对应的数,当前四位组对应的数, let res = 0, tempNumber = 0, sectionNumber = 0 let num, tempUnit //当前字符对应的数字,当前字符对应的单位 for(let i = 0; i < str.length; i++) { num = chineseNumber[str[i]] if(typeof num !== 'undefined') { //遇到的是数 tempNumber = num //最后一位数 if(i === str.length - 1) { sectionNumber += tempNumber } }else { //遇到的是单位 tempUnit = unitNumber[str[i]] if (typeof tempUnit == 'undefined') { return false; } let value = tempUnit.value let unit = tempUnit.secUnit if(unit) { //是万以上的单位 sectionNumber = (sectionNumber + tempNumber) * value //更新结果 res += sectionNumber sectionNumber = 0 }else { //是最后四位 sectionNumber += (tempNumber * value) } tempNumber = 0 } } return res + sectionNumber } console.log(chineseToNumber('八十八亿八十八万八千八百八十八'))//8800888888