美团前端面试难吗?
先说说吧~哈哈
一方
1.简单的自我介绍和对我的大致了解。。。
一方面,面试官很好。先问了下几个项目和使用的技术,然后大致了解了一下我所知道的,比如webpack的单页多页切换,webpack的按需加载,webpack的一些配置是什么。我问有没有看过vue的源码,我说了一个vue的手表,问我框架大体如何。发现我对框架不是很熟练,安慰我没关系。
2.2 .承诺的原则
这个面试官最让人佩服的一点就是,他不会问你不知道的事情。他一问我promise,发现我用的不多,自然没说什么,换个方式问你~ ~ ~怎么样~
然后让我用原生js写一个回调函数,其实就是问承诺的原理,js写一个。
3 .这指向
这是一个异常漫长而曲折的由面试官写的尖锐问题。可以通过百度js这个来指向面试问题,没有问题。你需要注意的是,它也经过了测试,论证和应用(null)。以后想好了再写。
4 .函数的绑定和科里奥利化
也就是说写一个bind,这是红宝书的一个高级功能(第22章)。
你可以看看。但是你得先了解bind的用法,返回一个可以传递的函数和参数。这里的参数涉及函数的科里蒂化。都是手写代码,最好写的工整一点,因为我接触过一些,面试官让我写完整,明确说要看我的编码水平。
5.==,isNaN,typeof
在问这个问题之前,我问我有多少种数据类型(七种,下图中有加号)。在这里,看你知不知道es6的新型号,symbol。你说符号,自然会问这种类型是干什么用的。
然后我写了几个typeof isNaN = =的问题和输出,这是基本问题。
6.你知道什么http请求头?
关于这一点我可以说很多。我说了几句,就主动聊到了跨域请求头,之前项目用的cors,就和他聊了一会。面试其实就是主动表达自己,把自己知道的说出来,不然几个要求就详细了,最好把人引到自己知道的地方。
7.我问css
求css框并画出来,清除浮动和bfc,两列布局。
8.我说了很多只是为了测试我的防抖
面试结束后,问我想问的问题,我就直接问,有两面性吗?答案是肯定的,还介绍了一段时间的出租车,说后台是node。好像要求是前端也要有背景知识。
双平面的
另一边的人是我学长,但是我被问的很惨。。。。显然问题比某一面深刻多了,都是问java。
1.介绍自己,询问项目情况
我问了很多关于这个项目的问题。当时有一个支付行为项目,问了很多安全问题,很模糊,完全不知道。第一个是失败的。然后问了其他项目,问了websocket。
2.node的EventEmitter是用js实现的。
我写了,但是看得出代码不规范,资深面试官说看起来乱七八糟。但是没关系。我指出了几个问题,让我改正。(后来完善)
3.虚拟dom
其实vue里面有jsx,react的特点之一就是jsx。虚拟dom与代码优化有关。
先说dom的正常操作,在浏览器中分为渲染引擎和js引擎。现在浏览器内核一般都是渲染引擎(生成渲染树),因为js引擎越来越独立(所谓v8引擎?)
但是在js中获取dom元素的时候要经过渲染引擎,所以两个线程之间的数据交换自然会比较慢。因此,减少dom操作应该始终是前端优化的考虑因素。包括获取dom元素变量并存储它们。
Jsx将dom元素转换成存储在内存中的数据结构。Js很快,dom也很快。不过也有不足之处,目前的理解就这么多。
4.路由的原则。
饿不饿,我不知道。。(稍后见!)
5 .节点文件流,java的映射机制(记不太清楚了)?
饿了。。
6.数组方法图和reducer有什么区别?
饥饿的
7.进程和线程的区别
终于有一个我会了。这个明显是想问你js的运行机制。先介绍下一个进程和线程。
浏览器是一个进程。js虽然是单线程,但是浏览器是多线程的,v8引擎也是多线程的,比如渲染线程和请求处理线程。然后说说任务队列,eventloop。没理解深,不敢说下去。
事件循环可以看看这个,链接
8.树遍历
一阶,中阶,末阶。我就知道这么多。显然我想写一个,但是我不会。也很明显面试官心里早就过了我,没多问。
9.求算法
KMP,反正我也不知道。