仅以此帖子记录自己的面试过程(2018.8.24)
先介绍本人情况:本科普通二本,研究生学校是985。非科班,19年毕业的应届毕业生。
自研一下开始自学前端,但那时候还主要学习java、数据结构那些,对前端不重视,然后研二上学期参加了学校的编程比赛,和同学一起写了个简单的app,获得第一名。不得不说,虽然这个只是校级奖,但是极大的激发了自己对前端的学习热情。虽然前端知识浅薄,但是本人胆子算是大的,看到群里有人问有没有接外包项目的,我立马毛遂自荐了,自己拉帮结伙,组织了小团队,开始了自己的第一个外包项目,做完这个项目,就基本决定我毕业工作就考虑前端了。
###一、thoughtworks提前批(8月初)
研一参加过这个公司的openday活动,公司氛围特别好,感觉是一个比较讲究理念的公司,就是他们的敏捷开发。
1、7月底进入内推流程,公司会发一份homework,要求在三天之内完成并上交。不得不说这样的作业真特别适合我,没压力的环境下,我往往能把事情做的更好。其实就是注意编程细节,代码规范,说明,测试等等。题目难度不大,就要想办法出彩。
2、提交题目过后的几天就接到面试电话了,当时第一个没接到,面试小姐姐又打了第二个,不得不说十分感谢。还记得当时星期四下午,要求星期六早上面试。然后就是一阵紧张,加紧复习了。提前看了波面经,知道会要求对自己的代码做一些优化,所以自己提前设想了会出什么题目,并实现出来。千万不要觉得这样是做无用功,虽然我没压中,但是看了复试题目的那瞬间,我心里还是挺开心的,觉得不难,该怎么做思路也很清晰。
3、唉,可以人生第一次面试,第一次当着别人的面敲代码,那股紧张感无法言表,自己平时敲代码不喜欢提示,所以提示功能都是关了的。导致代码敲错了,自己没注意,最后程序并没有运行成功。但是题目整理实现思路还是一目了然。
4、代码面面了半个小时,十分钟做简单的题目说明,实现思路,剩下二十分钟敲代码。代码运行没出来,我一直以为还有项目面的,问项目问基础这些,可是,面试官自己让我退出了,我天真的以为还有个技术面在之后。联系了hr小姐姐,说接下来hr面。
hr面是两个小姐姐一起,人都非常nice,感觉表现积极阳光点就可以了,对他们公司有一定的了解更好,显示你的用心。大概面了30分钟。然后hr小姐姐告诉我,我的面试结束了。
5、由于我没有被问项目那些,一直以为是凉凉的。但是一个星期之后,收到面试通过的消息,还是非常开心的。
###二、多益游戏(8.23)
这是最早投的一个公司,本来以为已经凉了,结果后面又接到电话,只能说,它的问题现在回忆起来,只记得都很常规,记忆性的,思考性不强,然后是技术问题夹杂hr方面的问题,哈哈哈,才20分钟的视频面试!!!不说也罢。
###三、美团提前批(8.24)
美团是自己比较想去的公司,觉得相对而言有希望的,但是收到面试电话的那天,我是很心虚的,觉得没准备好,于是我把时间拖后了一个星期,十分感谢hr小姐姐啊。今天面试我很悲催啊,找面试地点各种错乱,唉,最后提前10分钟过去面试,联系不上hr小姐姐,不知道谁面试我,于是我就自己去问美团的工作人员,是个超级好的小哥哥了,帮我问了人,然后让我在休息区等待。
1、一面,是个男面试官,人很随和
- 自我介绍
- 自己平时看了什么书(我说了数据结构,所以接下来岗开始的问题都是数据结构)
- 手写链表实现(我刚写Node的构造函数,面试官就问,为什么要用函数呢?对象不行吗?由于我本人是做事谨慎的性格,所以我就回答,平时看到的实现都是采用函数的,对象按说也是可以的,面试官就说,就是可以的。。。这里其实我就有点怕了,导致接下来手写链表这一关表现的不好,但是实现思路这些都是说了的)
- 在链表中查找某个结点,手写代码
- 在链表中删除节点(我说了常规思路,面试官又问,要是现在我只给你删除的那个节点,不知道其他信息呢?这个没答出来很后悔,根据他的提示,自己应该想到的,其实就是把删除节点的下一个节点的值赋给删除节点,然后删除它的下一个节点来实现目的。)
由于开头让我感觉很糟糕,所以我觉得我接下来肯定凉了,对面试反而没有压力了,就抱着平常心,知道说知道,不知道就说出猜测,反正面试一定不要一直不说话,毕竟,面试官一直带不动你,就真的没救了。接下来,可能自己放松的原因,就真的享受面试带来的好处了,就感觉在与大神聊天,带着你学习。
- 逻辑与和按位与的区别
- 数字转化为二进制(手写代码,我开始动笔,面试官就很严肃的说,想好再动笔,吓到我了,但是就是除2取余做循环,我看了代码几遍,再交给面试官,最后还是有个小问题,哈哈哈,不过他没怎么说我。)
- 对上述代码做优化,其实就是把除2用位操作实现
- 怎么计算数字中1的个数,手写代码,我写了利用位操作的,面试官问还有其他办法吗,这个没答好,他让我下来再想想
- 闭包了解吗?我说了含义,然后他让我手写实现一个
- let 、var的区别
- 有哪些请求头?刚开始自己跑去写请求方法去了,然后他惊讶了一下,我立马反应过来,然后blabala
- 说下cache-control。这里我就balabala了一对浏览器缓存机制
- 对es6的了解,说道promise的时候,让我介绍了一下,由于promise记得比较熟,还期待他让我写一个,居然没让,唉,然后我又balabala一堆
- vue的双向绑定原理,这里说一下,看源码挺重要的,我就是看了源码,才真的了解了,然后又是balabala
- 前端安全,我说了xxr和含义,然后问我实现方式,我大致说了一种,不得不说这儿问的非常细致,事件绑定啊那些都回答了一通,不过他并不满意,他给我说了好多种,再让我下来看。。。然后又解释csrf,解释的不好,然后又说怎么防止这些攻击,虽然我说了信息验证,不信任第三方数据,但是感觉这些不是他想要的答案,最后就是,让我下来仔细看这一块。
- 对cookie了解吗?它有哪些参数,刚开始自己有点懵,幸好他给了我时间想。
- 说一下跨域,然后我balabala,把自己知道的都说了,还问了同源策略,然后这里关于jsonp的回答不够好。
- 问了一些数学知识,判断点是否在圆内啊,给你一个div,点击它左上角和右上角让它实现不同的移动方式啦,这里他估计看到我经常张口就来,然后在我开口之前说,你先想好再说,仔细想,哈哈哈,不得不说,我也觉得自己思考能力弱爆了。但是这个我给他说了方案,他又问具体实现,例如怎么建系,怎么获取div的宽度,不用jQuery的方法,等等,css的动画,我说了key-frame,但是他想问transition,我当时说了transform,一时没说出来transition。然后说平时css是不是写的少,我当然立马否认啊,说我只是animation用的多,哈哈哈
- css预处理器,我说了stylus
- 他在电脑上敲了一个关于原型的题,让我说结果,这里就是原型的共享对基本类型和引用类型的区别,这里他说道如果把一个数组赋值给另一个,又该怎样,没答好。
- 由于上题自己多嘴说了浅拷贝和深拷贝,然后他就让我手写深拷贝了,我写了递归的,他又问还有其他办法吗,这里说了如何实现数组的,但是对象的还真没说出来。
- 然后又问了青蛙跳台阶那个,由于牛客网的算法题刷了蛮多,所以立马就说了想法,但是这个就是斐波那契数列的表示式,他当时问那个式子的含义,我死活想不起来,就在桌子上仰天长叹说,天,那个四个字的,四个字的,我竟然忘了,估计这儿他觉得我怕是个傻子。我是由于觉得自己凉了,所以本性暴露,呜呜呜
- 手写两个排序数组合并为一个,复杂度
- 弹性布局了解吗?我说了,然后说了水平竖直居中,flex:1等分布局
- flex:1有什么含义呢,包含哪些属性,这个没答上来,虽然看过,但是忘了
- 好像就这些了,有的细微想不起来,最后问我还有什么想问他的,我问用node做全栈有前景吗?他回答了,然后问我还有没有其他问题,我说没了,结果他说,难道你不想知道那个链表删除怎么实现吗?我立马说,想知道啊,可以问吗?我怕问这个不好,然后他说,可以问啊,就说这个是以前别人面试他的题,就给我讲了。然后说让我稍等。
2、二面,面试官是个姐姐
- 自我介绍
- 简单介绍自己的项目(我是一个网站)
- 项目技术栈
- 项目难点(我说了跨域,token哪些,问了tokan含义,还有地图的使用)
- cookie、localStorage、sessionStorage的区别
- 跨域请求,这里又谈了一阵jsonp,唉,记住它了
- 网站优化,我谈了缓存,还有按需加载,问了按需加载原理,如何合理使用jsonp请求,这个其实没有答好。
- 网站数据的传送
- 由于我把自己那个app比赛,也写上了,就问了我react native 的开发流程,如何传数据的,fetch和ajax的 区别
- vue和react的数据传送差别(我说我react不了接,就将了vue的数据双向绑定和vuex,然后说react native使用props,这里说的混乱,她应该不满意)
- mongoDB和mySQL的区别
- express框架(很老实的说不知道,自己刚开始学会怎么用)
- 还有一些项目问题,可能小姐姐忙着要去吃饭,这一面25分钟就结束了,当然也是我的项目太简单,小姐姐觉得没什么好问的吧,整体回答自我感觉显得很混乱,但是你一定要体现自己对自己项目的熟悉度。
3、三面,男面试官(超级nice,但给人一点距离感)
- 自我介绍
- 说一下自己的项目主要做了什么
- 项目开发的整个过程
- 项目有几个页面,几个接口
- 项目难点,他觉得我的难点太简单了,哈哈哈哈
- mvc 和mvvm的区别
- 说一下浏览器缓存
- 说一下浏览器运行机制(就是输入url发生了什么)
- js和c语言的区别(我说了js,但是说了不知道c的编译性怎么解释)
- 手写快排
- 手写求树深(我用的普通递归)
- 然后说了如何使用dfs、bfs来实现
- 接下来就是一些什么对加班看法、有没有其他offer这些问题了。面完后,说他们三个面试官反馈都是正向的,让我等第四面,还说应该要等蛮久。
整个三面下来,美团给我的感觉就是,一面问基础,还是在应用的基础上问,夹杂在题目里面,不是光背,要自己深入思考。然后就是对自己的项目一定要熟悉,包括任何细节,并且对项目做优化。面试过程你和面试官一定要有一个在说话(写代码期间除外),不能答不上来,就一直冷场,实在不知道,老实承认。
自己对自己评价是:手写代码还ok、前端原理性问题大部分没问题,依靠背的那些。但是自己临场思考能力差,不懂变通,这也是我最恨的,压力下没创造力。再就是项目能力不过关,缺乏大型项目参与经验。
也不知道三面面试官说的第四面是不是hr面,希望能有好消息吧。
###四、华为优招(8.25)
首先说明华为没有专门的前端岗,但是他的软件开发岗里面写明了会js也可以。。。但是说的好听,面试语言选择还是java和c,js没有姓名,希望以后有吧!
1、一面(给人感觉很儒雅的男面试官,没压迫感)
由于面试官是java的,对前端只是稍有了解,所以问的都是比较泛的问题,例如:
- 自我介绍
- 介绍项目
- 项目技术栈
- 项目优化(这里我说了按需加载和缓存,但是面试官不够满意,当然他自己乱扯一通,我是不同意的,但是就一个劲点头附和,哈哈哈)
- 说下html5和以前的html有什么不同
- localstorage和sessionStorage的区别
- html5加大了对本地资源的访问,那怎么保证对本地资源的安全(这个 没答上来)
- 跨域
- 说下node的多线程(我解释了为什么说node是高并发和密集型I/O的)
- 利用node如何做后端
- 用node写过web APP吗(我说的没有,以后学习,面试官说这个我应该好好了解,这个非常赞同)
- 用过数据库吗(我说用过mySQL,但是只会用别人包装好的函数,自己写sql语句不熟)
- 自己写css吗
- 为什么学前端
- 平时自己是怎么学新知识的
差不多上面这些吧,反正问题不痛不痒,面试官也是使劲在找问题了,但是前端细节他不了解,也无法问,挺想手撕代码的,但是他竟然没要求,所以就面了20分钟,唉!一面过后,等了5分钟左右就是综合面
2、二面(一个非常严肃的中年大叔)
- 自我介绍
- 让我说一下我本科学校是个什么学校(因为二本),唉,他是第一个这么问我的,所以说学历的重要性啊!
- 介绍自己项目的规模
- 为什么学前端
- 一个女生,为什么想来华为(从这儿开始压力面了)
- 华为这么冷血(举了场景,让我觉得自己是什么看法)
- 怎么看待华为的评级
- 如何面对以后的职业危机
大致就上面那个样式,反正他自己说话也快,balabala的,然后我回答问题比较中庸的话,他就一直要我给个答案那种,反正当时是真的感受到压力了,技术面都没让我那么难受过,不过全程保持微笑我是做到了的,结果也不知道咋样,看吧!
连着面了三天,我需要休息!!!