美团优选前端一二面,校招
楼主前天和昨天进行了美团优选的前端的一二面,今天HR面😂,发出来题目给大家看下,记得可能不是很清楚,大家尽量看,有什么不明白的大家可以评论区留言,
尽量为大家解答
一面:1h20min 面试官比较严肃,但是也是人蛮好的一个哥哥😂
1.自我介绍,然后进行了一个项目的简要问答,主要问了一下项目难点
2.手撕代码,
将2个有序数组合并到其中一个数组,并且也是有序数组。
a = [1,3,5]
b = [2,4,6]
最终输出a = [1,2,3,4,5,6]
不使用concat和sort,直接修改原数组。
如果没有思路,可以先返回一个新的数组。然后再优化。
a = [1,3,5]
b = [2,4,6]
最终输出a = [1,2,3,4,5,6]
不使用concat和sort,直接修改原数组。
如果没有思路,可以先返回一个新的数组。然后再优化。
楼主刚开始开了一个新数组arr来作为答案,写完之后,面试官让我重新读题,然后发现了要把两个数组合并到其中一个数组,这样子,
然后就对代码进行了一个修改,我贴出来大家看一下
function merge(arr1, arr2){ let i , j, k; let m = arr1.length, n = arr2.length; let arr = []; for(let x = 0; x < n - 1; x++){ arr.push(0); } arr1 = arr1.concat(arr);//其实上面这个操作没什么必要,大家可以忽略 for(i = m - 1, j = n - 1, k = n + m - 1; k>=0; k--) { if(i >= 0 && (j < 0 || arr1[i] >= arr2[j])) arr1[k] = arr1[i--]; else arr1[k] = arr2[j--]; } return arr1; } let a = [1,3,5]; let b = [2,4,6]; console.log(merge(a, b));
因为楼主不确认JavaScript里数组是否可以直接扩充长度,所以进行了push添加操作,大家可以忽略不计,面试官后面告诉我是可以直接插入的
3.JavaScript基本数据类型,除了基本六种之外,楼主还说了新加的bigint类型,然后面试官追问是可以表达什么数量级,我说2^53-1大的数,继续追问说为什么只能表达这么大的数,那更大就是
Infinity是吗,我说,我的理解应该是这样,然后换了个方向,问,那不用bigint,我们的大数加法可以操作吗? 可以的,可以使用设置进位进行加法
4.typeof undefined 返回什么,返回undefined,,,面:就是undefined类型吗?我:不是,是string类型
typeof null呢
5.null==undefined 和 null === undefined 分别输出什么,然后你们实际开发中用三等还是双等(双等,不是很严谨)
6.怎么判别数组数据类型,instanceof和 tostring.call两种方法,,还有其他的吗,我就了解了这两个
7.箭头函数this的指向原理(这个真的没了解,小声BB)
8.说一下this指向的问题,老生常谈了
9.promise了解多少,说了一下promise用处,然后有一些方法,途中,我说我开发不常用promise,然后面试官一直很好奇我们是怎么请求数据的,然后我也忘记了,面试官一直纠结了好几分钟这件事
,充满了疑惑,面试完我才发现,我们用的是普通回调法😂😂
10.css选择器优先级,!important 内联 id 类 标签 子选择器 后代选择器 伪类
那属性选择器在哪里,,emmm不是很常用,这个我也忘了
11.css postiion属性都有哪些值,这些值是干啥用的
12.css如何开启BFC
13.说个this指向吧
const obj = { test() { const func = () => { console.log(this); }; func(); } }; obj.test();指向obj
14.let,var还有const区别,然后块级作用域和函数作用域的区别
怎么用var和settimeout在for循环每秒输出一个数字0-4;
for(var i = 0; i<5; i++){ (function(i) { setTimeout(function timer(){ console.log(i); }, i*1000) } )(i) }闭包的方法
大概全程就是这么多,面试体验蛮好的,面试官会引导,然后也会跟你讨论问题
反问:您通过这次面试,感觉哪些地方需要加强吗,
需要基础的一个加强,其他的还是ok的
一面结束十分钟就收到了二面通知
二面: 50min
二面面试官是个非常好的大哥,跟我一直讨论问题
1.自我介绍
2.项目介绍,聊一聊你当项目组长的心得
3.为什么走上前端这条路了
4.手撕代码:给定一个矩阵:
[
[1,2,3],
[4,5,6],
[7,8,9]
]
反对角线输出元素,即3,2,6,1,5,9,4,8,7
这个东西的代码因为我写错了,大概思路还ok,我就不给大家贴代码了,leetcode上有这个相似的题目,大家可以找一下
5.说一下未来职业规划吧
6.说一下在处理小组矛盾有什么方法吧
反问:您觉得还有什么需要提高的地方吗?
你再去看看那些设计模式啥的(mvvm给讲错了,尴尬),再去理解一下
然后就结束啦
面完五分钟收到了HR面通知
就是这样,三天美团三个面试就走完了,大家加油嗷