全程面试体验很好,面试官很nice。
一面:主要是根据我的笔试的错题来展开的。(2道选择题,一道简答题)
1.BFC?怎么触发BFC?有哪些作用?
2.因为我最后一题关于dom操作的题写的不是很好,所以聊了下这个,并且扯到了jquery。
3.问了下缓存的东西,正好前天写了博客总结,就把我知道的都讲了,面试官还算满意。
4.img元素使用margin-top有作用吗?行内元素和块级元素?行内替换和非替换元素?
5.问了些我的经历,对java和node的看法。对目前的前端和以前的jsp的看法。
6.讨论了下公司目前做的业务,公司的技术栈,问了我vue的学习情况,做过哪些项目?写过小程序没?问了下github上的项目。
7.手撕代码1:
给出出栈序列和入栈序列,判断是否正确
比较紧张,没a出来,没办法我是那种愚钝的人,代码不够熟练,无法将自己思路转化为代码,只能把思路讲给面试官听了。
面试官说思路对的,不过建议我不能因为有其他offer就表现的不积极,就算要花很长时间也不要放弃,不会可以问面试官。(虚心接受)
大家刷题不要停,否则就会和我一样,成为惨案。
8.手撕代码2:(这个还好比较简单,写个递归函数就行,主要注意判断不同情况)
将json字符串'{"a": 1, "b": "str", "c":[2, 3], "d":{"e": 4}}' 转化为如下格式: { "a": 1, "b": "str", "c": [ 2, 3 ], "d": { "e": 4 } }
有人问了下这道题的解答,我给下我的答案吧
let obj=JSON.parse('{"a": 1, "b": "str", "c":[2, 3], "d":{"e": 4}}'); let s=""; s+="{\n"+solve(obj,1)+"}"; function solve(obj,tab) {//没有缩进版本的 let tmp=""; if(Array.isArray(obj)){ tab++; for(let i in obj){ tmp+=addEmpty(tab)+i+",\n"; } }else{ for(let i in obj){ tmp+=addEmpty(tab); if(typeof obj[i]!="object"){ if(typeof obj[i]=="string"){ tmp+='\"'+i+'\":\"'+obj[i]+'\"'; }else{ tmp+='\"'+i+'\":'+obj[i]; } }else if(Array.isArray(obj[i])){ tmp+='\"'+i+'\":'+"[\n"+solve(obj[i],tab)+addEmpty(tab)+"]"; }else{ tmp+='\"'+i+'\":'+"{\n"+addEmpty(tab)+solve(obj[i],tab)+addEmpty(tab)+"}"; }; tmp+=",\n";//这里还需要处理下,因为最后一项是没有逗号的,但是我的是每一项有逗号。 } } return tmp; } function addEmpty(tab){ let tmp=""; for(let i=0;i<tab;i++){ tmp+=" "; } return tmp; } console.log(s);
总之整个面试过程体验很好(除了手撕代码题1),基本都像和老师聊天一样,没有什么不敢说的话题,快手确实是一家技术不错的公司。
然后聊了会让我等二面通知,二面完的话,继续更新在此贴,突然有点想去北京了。。。。。
二面:
1.问了我学习各种东西的程度,学习中遇到的困难怎么解决的。
2.问了些JSP的东西。。。。全忘了。。。
3.手撕代码:函数柯里化。。。又写砸了。。。磕磕绊绊总算写完了。。。也是把思路告诉了面试官。。。。
4.聊了一下快手目前的发展。
居然过了。。。(感觉挺幸运的,我觉得我应该算是好看的那种,感谢面试官不杀之恩)。