前几天参加了2017饿了么大前端的面试,分享一下个人的经验。
在官方微博上看到的加了面试的交流群,官方说面试只有两轮。
首先是饿了么的前辈在群里说作出啥啥的有优先面试的资格或者直接过的可能,于是我便采取了这种方式,我看到的“任务”有饿了么React的复刻、饿了么Vue的复刻、饿了么最新版购物车的逻辑实现。我选择了最后一个。
甩一个自己实现的饿了么购物车 sellApp (主要逻辑的实现readme里写了,逻辑参考的是饿了么安卓版v7.8)
下面说说面试吧。
电话面试,两个面试官,有一个后来走了。
Q: (直接撸代码) fn([1, [2, 3], [4, [5, 6]]) => 1 2 3 4 5 6 大概是这个意思
A: 题目不难吧,很直观用递归写。(因为想的比较多,面试官等不及了说把写的先发一下然后说说思路)
// 上一下伪代码吧
function fn(arr) {
// 缓存处理
return function () {
// do something
}
}
Q: 为什么用高阶函数呢,不用也可以吧?
A: 我说js中递归的操作是很消耗性能的,用高阶函数把上一次的值通过闭包缓存下来这样子可以降低递归的性能消耗。
面试官说一上来就写代码确实太难为人了,然后开始问问题。
Q: 说一下你对原型链的理解?
A: js在函数实例话的时候会在内部隐式的添加__proto__(浏览器),而我们在调用方法的时候会通过这个__proto__去逐层查找,如果其原型上没有我们需要的方法,那么就会去上层找,直到Object.prototype。
Q: 那你说一下var b = new a(); b.__proto__ = 什么?
A: a.prototype
Q: 说一下你知道的es5、es6的数组方法并介绍一下(这里我听成了es6的扩展...)
A: from、of...
还有几个问题不记得了...
Q: 给了几个概念挑会的说我记得大概有http2、http缓存、xss、正则、函数式编程、restful...(说是加分项)
A: 提到了xss、函数式编程、正则(前两个确实只是听过知道简单的概念,也坦白和面试官说了)
Q: 手写代码,正则检验版本号,可以查api
过了两天面试官发微信说组长把我拒了,理由是知识深度很好基础很好但是广度不够,这次招的是核弹级别的实习生...
唯一一个一面gg的公司,很尴尬...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。