今天北漂的第5天,来这里以后参加里3次面试了。上周五拿到了一个offer,但是因为对方的hr很不诚信,所以就没去,所以今天继续面试。今天去的是爱xx,从下午3点半开始面试,一直到晚上7点才面试完。整个面试过程用一个词形容就是难,用两个词形容就是难、奇葩。现在有点困了,已经过了晚上12点,简单记录下面试的过程。方便其他小伙伴参考。
笔试题
第一面是是笔试题,笔试题不难,但是有陷阱的,我说下我还记得的几个题。
1.以下程序输出什么
for(let i=0;i<5;i++){
setTimeout(function(){console.log(i)},0)
}
复制代码
2.以下程序输出什么
var arr = [1,2,'1','2','a','a']
arr.filter(function(v,i,a){
return a.indexOf(v) == i
})
复制代码
3.写一个排序算法,快速和冒泡都可以。
4.写一个二叉树算法
5.写一个正则表达式获取6-20个,数字小写字母大写字母的组合
6.写一个类,并且实现继承
7.javascript的基本数据类型是什么,以及如何判断一个变量是对象还是数组,有几种方法
8.以下程序输入什么
let a = 1
function b(){
a = 2
let a;
}
b();
console.log(a)
复制代码
9.[1,2,4,5,2,5],求这个数组的最大值,es5的写法是啥,es6的写法是啥?
笔试题一共13道题,能记住的也就这几道了,我答七七八八吧,然后笔试题被收走了,然后开始了第二面。
第一面
第一面2个面试官,针对我的笔试题问了很多问题,主要是围绕做题的思路和工作内容。这里主要考的是应用,对某个库熟不熟悉啊,对某个api熟不熟悉啊。vue和jq都有问道。
对了,还有个问题。
1.正则表达式的回溯是什么?以及以下程序的匹配结果是啥
var a = 'abc 123'
a.match(/.*(\d+)/)
复制代码
第二面
大概自己的第二面表现还可以吧,然后就迎来了自己的第二面。第二面是真的上难度了,第二面也是2个面试官。
1.闭包是什么?
看到,这个问题我是蛮欣喜的,然后blabal说了很多。结果悲催的第二次笔试题就来了,全部都是面试官手写的。
2.以下程序输出什么?
let a = 1
function f(){
let a = 2;
ff()
}
function ff(){
console.log(a)
}
ff()
复制代码
当时看到这个问题,觉得还行吧,好像不是很难,然后迎来了可怕的变形,变形了5/6个形式,我是彻底晕了。我只能把我现在还记得的给你们写出来。
3.以下内容输出什么
var n = 1
function a(){
var n = 2
return function b(){
console.log(n)
}
}
var c = a()
c()
复制代码
4.以下内容输出什么
var n = 1
function a(){
var n = 2
return function b(){
console.log(n)
}
}
a()()
复制代码
5.把以上的var变成let输出什么
6.以下内容输出什么及为什么
let a = 1
function f(a){
console.log(a)
var a = 2;
}
f(a)
复制代码
7.以下内容输出什么
var a = 1
function a(){
}
typeof a
复制代码
8.简述js程序执行的过程?
这个在《javascript高级程序设计》里有写,我当时只记得这个了,到底程序执行是个怎样的过程,我就直接说了我记不清了。
还有一些其他笔试题,怪我记性不好,实在记不住了,这些问题我都回答的不能说七七八八了,只能说五五六六。好了第一个面试官算是面试完了,然后又迎来的可怕的第二个面试官。这个面试官主要考算法
9.任意两个字符串,比如axxxxbyyyy,axxxbyyyyzyyy,这两个字符串的最大公共子字符串是什么,算法复杂度是啥?
10.有一段固定木头,木头的每一部分都有不同的价钱,比如1,4,8,13,9。求怎样分割这段木头的价值最大?(这道题我压根就没看懂)
还有些内容,算法的题问了很久,但是我想不起来了。
11.简述下Vue渲染模板是的一个过程。
12.虚拟dom是怎么样实现的?
13.怎样设计网站的系统架构?
第三面
第二面面试完了,我已经有些懵了,问的这些问题,都不是我擅长的,工作4年了,我主要都是应用技术,原理的我都看到,但是真的看完就忘了。我也想记住这些东西,无奈因为用不到,每次想记都失败了。
第二面面完后,我以为结束了,我是个什么水平对方应该清楚了,正常的流程应该是让你滚蛋或者是让hr过来跟你谈薪资。我从进爱奇艺以来,只见了hr一面,连聊都没聊,就把我带到座位上开始技术面。奇葩的是我都面试两轮了还没做过自我介绍。我自己感觉要凉凉了,回家种田的想法都有了,没想到面试官跟我说让我等下。听到这个消息我欣喜若狂了,以为马上就有offer了。没想到迎来了苦逼的技术三面。
三面啊,还是技术。
1.generator函数实现的原理是什么?自己手写个generator函数,然后再手写出babel转义的结果。
2.prominse函数的原理是什么?写出promise的polyfill
3.从1到n这n个数字中,找到所有带2的数字。前提是不能把数字转成字符串来处理。
这道题,我我用了for循环,然后判断 (+i). indexOf('2')>-1,然后被鄙视了。
3.手写一个vue实例,body下有一个div,这个div下还有一个子div。要求,body和父div和子div共享一份数据,当鼠标移动到父div上时,父div的数据改变,其他元素数据不变。当点击子div时子div数据改变,其他数据不变。要点是初始时,这3个元素数组是共享的。如果一个改变另一个也跟着改变。
4.用3个词概括下你是个什么样的人?并且要给出案例去证明,
面试官这个问的也非常细,各种质疑你。
三面面试完,我都还没跟hr聊过,自我介绍也没说过呢。这是我经历过的最残酷的面试。中间差不多可以说一刻不停的聊,聊了3个半钟。面试完天黑洞洞的了,外边还下着小雨。感觉自己凉凉了。