背景
五一前面试了一周,陆陆续续面试了十多家公司,最终拿到5个offer,对于这个结果还算满意。五一后顺利入职,到现在也有三周了,一直没时间来更新一下博客,这周顺利完成需求,也就有了时间,然后来更新下这个快长草的地方。
面试的十多家公司里,有大厂,也有小作坊;有自营,也有外包;有被虐的,也有找回自信的。这段经历很有趣,收获也颇多。
下面挑几家来说说。
周一
chapter 1
周一一早就海投了简历,然后陆陆续续收到了面试邀请。
去的第一家面试的公司是一家做数据可视化的外包,我并不是很擅长,公司在福田,蛮远的,不过这时投简历之后的第一家打电话邀请面试的,抱着试试的心态下午就匆忙赶过去。
HR简单的问了一下个人背景,然后就是技术面。主要问题:
- 使用过的框架
- 介绍下之前的最满意的项目
- 介绍下你认为你在你的项目中自我感觉最精妙最得意的一些东西,主要能体现你的编码水平。
- 一个算法题(具体忘记了。。。)
对于这几个问题,我回答得都不是很好,可能是因为太长时间没面试的原因,没有进入状态。特别是后面两个,尽管自己也有过蛮复杂的实现,但是一下子大脑一片空白,最后的算法我也没做出来,回到家想想感觉也是非常地简单。
之后部门经理跟我说了很多公司的情况,也问了我一些比较开放性的问题,但都是不痛不痒。
chapter 2
第一家结束之后匆匆赶到科技园,这回面试的是一家做鞋子数据分析的公司,具体就不是很清楚了。需要会用vue的,自己也懂一点vue的皮毛,然后就顺便过去了。
当时技术和HR正在聊天,我到了之后,直接就让我面试,显得很不正式,技术在面试的时候,HR还在一边不停地让技术问深点,让我感觉很不自在。
当时技术问的问题都很刁钻,主要问题:
- http通信
- vue父子组件传值,vuex的具体用法
- 一个弹出层的水平垂直居中
实际上问题并不像看起来这么简单。比如vuex,他会问到比较高级的应用,然而我只知道vuex的很简单的应用….
技术上我只要回答了一点点,他就要往更深的地方挖掘,到最后我能回答上的没几个,就感觉被虐得挺惨的。而且技术看起来年纪还没我大,更加有点伤了我的自尊心了。
最后,我连手机充电器都落他们公司了(哭)。
小结
晚上回到家就感觉很累,很想直接躺下就睡,但是想到第二天还有很多个面试,就强行让自己打起精神来做准备。
周二
chapter 1
周二选了一家在兴东的公司开始面试。公司是做酒水的电商公司,很大,环境也很高大上,是我喜欢的类型。
到了之后前台直接给我一套笔试题,然后就开始答题。可能很多人喜欢网上找答案,或者求助别人,但是我觉得没这必要,一是觉得找起来也蛮慢的,二来是如果面试官问你思路,那不就露馅了?所以对于笔试题,我向来都是独立完成的。
这家公司的笔试题还是很有水平的,然后我答得还算可以:
1.js的数据类型
烂大街的题,但是我脑残写了es6的symbol,但是我对symbol一点都熟悉,然后面试官也问了,当时满脸尴尬。
2.第二题主要考察变量提升和作用域
function a() {
return 1;
}
console.log('1', a);
(function() {
console.log(this);
console.log(this.a);
if (true) {
console.log('3', a);
function a() {
return 2
}
}
})();
// 1 function a() { return 1}
// window
// function a { return 1}
// 3 function a { return 2}
当时跟面试官解释这道题时,面试官跟我说if有块作用域,我当时就想笑…
3.第三题倒估计时要考闭包,但是我钻了个空子,用es6的let
来解答
利用原生js输出li的index值
4.用promise实现:
红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次,如何让三个灯不断交替重复亮灯?三个灯函数已经存在:
function red() {
console.log('red');
}
function green() {
console.log('green');
}
function yellow() {
console.log('yellow');
}
还好我还是会用promise的:
function red() {
console.log('red');
}
function green() {
console.log('green');
}
function yellow() {
console.log('yellow');
}
function creatPro(resolve, reject, time) {
var pro = new Promise(function(resolve, reject) {
setTimeout(resolve, time);
})
return pro;
}
setInterval(function() {
creatPro(red, null, 3000)
.then(function() {creatPro(green, null, 1000)})
.then(function() {creatPro(yellow, null, 2000)})
}, 6000)
- 实现bind的polyfill。
这个问题之前有看过,但是要自己实现,我压根不知如何下手,大概是利用call/aplly。
具体实现可参考MDN上bind的polyfill。
笔试之后,面试官就来问我一些面试题,他就是随便在网上搜索的一些很常见的基础面试题,很多,但是我也是早有准备,所以回答还算可以。问题主要有这些:
- css居中
- 移动端兼容
- ionic遇到的问题
- 浏览器请求开始到完成全过程,http状态码及信息,get,post,跨域
- 闭包
- vue,AngularJs双向数据绑定各自实现的原理及差别(这个当时是懵逼的)
- Cordova插件问题
- XMLHttpRequest和XMLhttpRequest2的区别(XMLhttpRequest2是什么鬼,没听过…)
后面的三个答得不是很好,其他都还ok,反正当时是自我感觉良好的。
总体感觉这家公司的技术栈比较传统,用jQuery做页面,然后ionic来开发自用的app。
之后是HR面,问得很常规,自己的回答也很不错,基本薪资福利,个人状况都聊得比较细,能感觉到似乎挺希望我过去的。然而到最后还是让我周四再过去复试一次。。。当时就感觉有点失望,竟然还得考虑。然后我只好奔赴下一个面试。
之后周四参加了复试,提前赶过去,然而却让我等了估计有快一个小时。面试的是技术总监,拿着我的简历和笔试题,问了我三个问题:
- 介绍下你的项目
- 图片预览你怎么做
- 项目结构如何制定
后面的两个问题我不太会答,所以表现得不太好,当时感觉就炸了。我还是挺希望到这家公司的,最后走的时候还跟面试官说希望无论能否拿到offer都给我个答复,不过到现在也没收到过。
chapter 2
下午匆忙赶到科技园,奔赴下场面试。这家公司是做P2P金融的,环境很高大上,公司就在储能大厦46,47楼。
过来之后没有做笔试题,也没有填什么资料表格。面试官拿着我的简历直接开问:
- 服务端和客户端渲染的区别及各自优缺点
- 分页刷新,如何保存当前分页,不用本地缓存和上传到服务器
- node来如何写接口
- 之前项目中支付功能的实现。再web APP 需要调用支付宝,微信支付,而在微信端智能调用微信支付,这个问题怎么解决
- gulp和webpack的区别
- git的用法,冲突如何解决
老实说这些问题我只能扯点皮毛,根本上的其实对这些问题包含的知识点并不是很清楚,所以感觉回答得很不好,又像被虐了。但是能感觉技术官问的问题和之前面试的问题差别很大。
比如分页,我想到的是通过本地存储和保存到后端,技术官跟我说,其实可以将信息保存到url里,即路由中,用户刷新页面,url并不会变,所以会一直留在当前页面。
尽管不太抱有希望,但是技术官还是跟我谈了他们公司的当前产品,技术的情况,也跟我聊了薪资。
之后是HR面。这家公司的HR尽管很和善,但是问得问题都很专业,也就是在各种设套,考察我的个人忠诚度,进取心,稳定度等。不过呢,我也是早有准备,HR面算是做得比较好的。
之后面试就结束了,综合来看,我对自己不抱太大希望,不过我也挺喜欢这家公司的,环境,技术栈,个人发展都不错。
然而,最后我幸运地拿到了这家公司的offer,并且已经在这上班了三周….小确幸。
通过在这上班的三周,我自我感觉我确实离他们公司的要求还有一定距离,但是估计是目前的老大觉得有提升的空间,并且公司空缺的岗位急需人来补,所以我才有了这个机会吧。
chapter 3
在储能面试结束后,大概是4:30,感觉还有时间,然后就赶赴也在深大附近的一家做家居的公司。
这届公司环境一般,规模不大不小,看了他们的产品,做得也不太好,当时我对他们家的印象并不是很好。但是由于急着找到工作,所以也顺便来面试了。
进去之后填了信息登记表,然后做了一套笔试题,题目比较常规:
- 清除浮动的方式有哪几种
- JavaScript中使用typeof返回的类型有哪些
- js的继承方式有那些
- typeof,instanceof,Object.prototype.toString()这几种方式的作用和区别
- js如何实现后台语言中的privite,public,protected,static变量
- 如何解决移动端的tap事件点击穿透的问题
- zepto.js中tap,swipeLeft是如何实现的(写出思路即可)
- js事件委托的原理,常用于什么场景下
- 简要说一下js是如何实现面向对象的
这几个题答完,面试官就对着这几个问题来问我。然后我的回答还算比较好,因为他问的也蛮简单的…大概不到十分钟,在他的眼里就能感觉得出他对我的肯定,也不知道是不是错觉,就是那么自信。
之后HR也是简单地询问了我当前的情况,也聊了薪资,当时估计也有6点多了,最后说等老板回来了需要再复试一下。
我其实也不是很想到这家公司,但是因为手头没有offer,也就先应了下来。
最后HR约了周五下午复试,其实那个时候我已经拿到3个offer,想着先把这个offer也拿下,到五一假期再好好考虑。
到了之后,HR似乎通知了上回的技术来面试我,然后技术看到我的简历及笔试答案,瞅了我一下,就说不用面了,哈哈。
然后就安排我到老板的办公室。到了之后,老板打开我之前做过的项目,随便点评了一下,然后问我这个设计是不是我做的,当他问完我这个问题我就知道这位老板基本在技术上是零的状态。这就给了我吹牛逼的机会。不过他后来叫了一个后端过来,说要跟我对了一下。然后我问了他一下他们网站的制作,以及如何做优化。然后发现他们几乎没做什么优化,然后我就说了一下换做是我的话会做那些优化,毕竟后端在一些偏前端的地方了解得还是比较少。
一顿分析之后,似乎老板也表示可对我能力得肯定。之后HR跟我核实了一些情况之后,说会在待会给一个回复,让后先回去。
之后5点左右果然就收到了这家公司的offer。
小结
回到家,总结了当天的三个面试,发现自己的表现相对于第一天好了很多,并且对第一和第三面试都很有信心。最终也拿到了2个offer。
周三
由于前一天的良好表现,一大早出门就感觉很自信。
chapter 1
第一家是一个做服装电商的,对于做电商,我还是挺喜欢的,这方面的项目也得也比较多了。
查了下这家公司的网上的情况,感觉还挺高大上的,并且是在兴东,还算比较近。所以第一家就去了那里。
不过到了那边才发现,这是一个坑。费了老半天才找到这家公司,进去之后观察了一下,大概加起来不到10个人,这包括了所有的人,而不是仅仅是技术团队。当时我就被镇住了,这就是真正的小作坊啊!
到了之后就直接面试,面试的地方就在他们的办公室,他们也就一个办公室,并没有任何会客的地方。随便一张桌子,两个凳子,就是用来会客的。
当时我是想溜的,但是来都来了,也可以听听技术会问些什么,看看这家小作坊会有什么不同的地方。
技术也是一脸睡眼惺忪的样子。更加拉低了我对这家公司的印象。
技术上来就让我写一个10!的递归。递归很久没用了,不过我还是能写出来。
然后他就拿着我的项目,要我展示一下。
之后就问我薪资。
然后就跟我说老板不在,需要复试才能得到结果,让我先回去,我也是应了下来。
整个过程不到10分钟吧,我也不知道我哪做得不对,但就感觉自己被虐了。估计对于这家小作坊,是我薪资要多了?
之后HR还约了我第二天复试,我内心其实是拒绝的,但是想着先答应,后面考虑好再决定要不要去,没成想过了一个多小时就跟我说已经找到更合适的,通知我不用复试了,而且还是短信来通知,一个正式点的邮件都不会发吗?
这个时候大概早上10点,感觉早上还能再面试一家,然后就带着不太爽的心情奔赴科技园。
chapter 2
这家公司是做办公软件和广告投放的,他们家的环境比较窄,人倒是不少,但是都在一个比较狭窄的地方,看完我内心也有点抗拒了。
HR直接给了一套笔试题,题目不少,而且一个题目还不止一个问题。好在问题都比较基础简单,都是HTML,css,js基础,没有涉及框架的问题。
这里就不罗列笔试题了,都是网上能直接搜索到的问题。答完感觉就像高中写政治试卷,写完手都要断了。
之后技术进来开始面试,技术看起来很年轻,并且问的问题比较有水分,不知道是他的水平如此,还是他们的岗位要求就只是如此,感觉我的回答有时候他都听得一愣一愣的,面试的问题问得不少,挑几个:
- jq源码,如何封装插件,$.extends()和$.fn.extends()的区别
- 水平垂直居中的方法
- css动画,如何实现loading的动画
- 如何开发混合APP
面试的表现还可以,然后就是老板面,而不是HR面…(他们的HR感觉有点蠢萌,不像其他HR那样精于算计,估计就是前台兼职的)。
老板并不是技术出身,问的问题比较类似于HR问的问题,只要让自己表现起来很有稳定性,并且热爱钻研技术,基本都能让对方满意。
最后也聊了他们公司的具体业务和薪资。
有一个细节让我感觉挺有趣的,老板为我薪水的时候在区分试用和正式的时候涂改了几次,让我差点笑了。其实试用期的工资我是不会太在乎差多少的。
最后,果不其然,这家公司的offer也顺利拿下。
chapter 3
下午赶到科兴的一家做医疗的公司,参加面试。到了公司之后,发现这儿的环境真的很好。并且有三个点给我留下了比较深的印象:
- 做笔试题的时候是在他们的休息区,可以感受到他们真实的工作氛围,这个氛围是我比较喜欢的。
- 公司前台妹子名字叫董明珠。
- 公司HR长得和桂纶镁一模一样。
然后就开始做笔试题,这笔试题的量多得吓人,而且题目不仅仅是一个问题,问题也不算简单,还涉及到了Node.js,所以我光做笔试题就用了1个小时左右。
随便抽几题:
- css选择符有哪些?哪些属性可以继承?优先级算法如何计算?css3新增的伪类有哪些?
- HTML5/CSS3有哪些新特性,移除了哪些元素?如何处理HTML5新标签的兼容性问题?如何区分HTML和HTML5?
- JavaScript类型,原型链?有什么特点?
- iframe有哪些缺点?
- Node.js的适用场景
- web应用从服务端主动推送data到客户端有哪些方式
这些问题要认真回答起来,我估计写到天黑也写不完,所有我基本都挑了我所知道的重点简练地回答。
写完之后又是手要废的节奏。
之后是技术面。面试官不知道是不是前端团队的leader(or 小兵?),总之他连我的简历都没有拿出来,就只是看着我的笔试回答,并且在脑子里随便想了一些在网上烂大街的题目来问我,对于这种问题,我基本是没遇到什么阻力。
之后是HR面,HR的问题呢,也比较简单,并且言谈举止让人觉得很舒服。
问了我一些情况之后,告诉我,现在技术总监开会去了,不在这边,让我明天下午再来复试。然后我就奔赴下一场面试。
毕竟我还是挺喜欢到这边来的,所以也很期待复试。
复试安排在周四的下午。由于是技术总监面,所以当时还是有点小紧张的。但是在同他的交流中我发现,这个技术总监至少在前端方面并没有多少深入的研究,仅仅是知道当前前端开发的一些风向。
他主要问了我这几个问题:
- 对目前前端圈的技术风向的看法
- 平时怎么提升自己的水平
- 自己未来的规划
- 前后端合作问题
对于前后端合作,我跟他说我们之前的后端语言都是PHP,换成java应该变化不大。不过他还是招呼了一个java开发过来,让他和我对对。
java开发过来,然后就互相说了下各自前后端如何合作,然后他还给我出了一个小难题:
手机端开发,顶部三个tab切换,如何保证用户的良好体验?
我思考了下,想到这样一个方案:
如果初次请求的数据量不是很大,可以一次性把首页数据加载进来,数据量答可以用懒加载,然后各个tab用css来控制显示/隐藏,再设置一个下拉刷新来让用户主动请求数据,而不是每次切换都要刷新一遍数据,这样就能大大地优化用户体验,并且也减少了请求次数,减轻了对服务端地压力。
之后,似乎技术总监和java开发对我的方案还算肯定,这一关就算过了。
技术总监让我对自己的水平定一个级,由于心虚,并不敢自己评定为高级,就跟他说应该算中级吧。
之后他就让我先回去,稍后HR会跟我联系,敲定薪资。
然后第二天HR联系了我,最终给我的薪酬比我提出来的少了1k,但是我蛮喜欢他们公司的,感觉也能接受。
但是这之后又出了点小插曲,导致最终我没有选择,只能放弃入职该公司:
他们的技术总监希望之前的前端在项目结束之后在离职,到时我再入职。可是我入职和他离职有冲突吗?难道就为了省那点钱?因为这个,所以我选择了其他公司。
chapter 4
在科兴面试结束后,我又赶到比克大厦,参加当天的最后一场面试。这家公司具体做什么的我并不是很清楚,似乎是游戏相关,并且产品是跟国外有联系,可能会被安排到国外去。
进去就开始做笔试题。这笔试题我第一眼看到有点懵逼,基本都是前端工程化和框架的一些问题,和之前做过的笔试题注重考察基础很不一样。
问题主要有这几个:
简单描述下命令行参数
inline
,hot
的区别。webpack –inline –hot
- 请写出几个与动画效果相关的css3样式规则。
- less/sass中的
@extend
与css modules的componse
的优劣 - React中如果直接赋值
this.state.total = 42
,其中的42会被render出来吗,为什么 - React中
shouldComponentUpdate
方法的判断条件该如何写 - 简述React中的
Stateless Functional Component
与PureComponent
的区别 - Vue中实现父子组件通讯的方式有哪些
- 在你的Vue项目中最常用哪几个生命周期
- 有哪些你觉得能借助学习以提升水平的网站
硬着头皮答了这些问题,然后就是技术面。
比较意外的是,技术面竟然有两个面试官,而且还是一男一女。男的负责pc端,主要用React开发,女的负责移动端,主要用Vue开发。并且女面试官看起来很有气质,一看就像技术大牛,在代码界的女技术大牛是稀有物种啊,顿时就肃然起敬。
回到面试。开始主要是针对笔试题,然后还另外问题这几个问题:
- 你觉得React,Vue,AngularJs在项目中的区别,为什么你会觉的Vue用起来比AngularJS爽?
- AngularJS和Angular 2 有哪些区别?
- 你虽知道的ES6/ES7,ES7 @component, ES9 import()
- flex弹性盒子,flex: 1 0 70px; 这个样式规则的意义
可以从面试官的话语中感受到,他们团队对前端前沿技术应用到项目中是不遗余力的,这样的做法让我很佩服。
然而,当我问到他们家的加班情况如何,他们就跟我说,最近一段时间可能是996,不过等到6月份就好了。
然后我心里就有点发怵了,不过呢,还是那句话,先拿到offer再说。不过由于笔试面试表现都不是很好,所以也没有抱太大希望。
并没有HR面,薪资也是技术跟我谈的。
不过呢,这竟然是我拿到的第一个offer,第二天一大早,人事就联系我,然后给我发了offer。
小结
这一天面试了四家,表现有好有差,不过对于当天的变现还算满意。最终也在这一天的4家公司里拿到了3个offer,这个还是比较意外的。
周四
周四只去了两家面试,其他的都是复试。
chapter 1
面试的第一家还是在兴东,做桌游和手游的,算是业内比较大的公司了,要求自然也会高。但是因为当时手头已经有offer,所以放得比较开,反而显得比较轻松。
到了之后让我做了一套笔试题,笔试题都还算简单,开始是几道不定项选择题,然后是几道编程题:
- 至少用两种方法实现不借用第三个变量的情况下,对调两个变量的值。
- 有尺寸100px * 100px的正方形,用css3实现向右匀速运动500px,并且将其逐渐放大至两倍大小的动画效果,动画速度0.3s
- 请用JS实现数组[1, 3, 3, 3, 1, 5, 6, 7, 8, 1]的去重算法
最后估计面试官也没看我的笔试题。
然后我就在那里等着技术面。
大概等了有1个小时(没错,就是等了那么久),面试官终于出来了,当时我已经有点不爽了。
然后他就拿着我的简历看了一下。问了我挺多关于原生js和jq的问题,包括如何实现拖拽,如何使用jq的选择器,问题由浅入深,开始还能招架,到后面就有点听不懂他要干什么了。而且这个面试官也有个习惯,希望我把我的思路用代码写出来,有点吹毛求疵的感觉。
反正整个面试,估计他不爽,我也不是很舒服。大概面了20分钟,他就让我提问题,意思是面试要结束了,我也知道他的意思,并没有问他问题,然后就不欢而散了。
尽管这家公司环境和影响力都很大,但是因为这个面试官的一些行为表现,让我并不是很想待在这里。
chapter 2
下午参加完科兴的复试,之后决定到一加试试。
一加是我的最后一个面试,并且也给我留下了极深的印象。而且还让我产生了我可以拿到offer的错觉。
约了下午4:30,最后还迟到了10分钟。到了之后感觉环境真的很好,有很多外国人。因为一加的手机不少是销往国外的,所以外国人多也很正常。
等了一会儿,然后面试官就拿着笔试题,面试官拖着个凉鞋,穿着很简单,并且还有点胡子拉碴,很有个性的一个技术leader。
答笔试题的时候并不是我一个人在那答完,而是面试官在旁边坐着,我在旁边答,第一次碰到这样的一个形式。
笔试题前面选择题,而且还是不定项的,后面后一道编程题。笔试题都很奇怪,应该是自己出的,着重考察基础,包括HTML.CSS,JS,只要思路清晰,这些选择题还是不是很难的。
最后一道题大概是他写了个递归求和的方法,然后让我来改写,以提高运算性能。
当时我的思路是:递归是最耗费性能的一种循环方法,完全可以改为用性能最高的for循环来解,然后我就那样改,最后面试官也说了确实就是那样做的。
笔试题做完,他就拿着卷子来提问我解体的思路,并且在这些题目中发散出很多问题来考察我。
比如有个题是选择哪些是通过HTTP请求的包,然后我说完我的选择思路,他就会问我HTTP的相关知识。
总之,考查得很全面,而且整个面试过程非常轻松,属于真正意义上的交流技术,这更加加深了我对这家公司的喜欢。
大概和技术leader聊了2个小时,然后我问他,我有可能加入吗。当时他对我的评价是这样的:
基础还是比较好的,可能项目经验差点,进来是有很大的可能的。
我当时听到内心是很激动的。
之后是HR面。HR看起来年纪似乎比我还小,像邻家小妹的感觉,所以聊起来没有多大压力。因为我本身就喜欢研究手机,智能硬件等比较新潮的东西,自然也能扯上一些。
HR面之后,由于技术总监不在,所以安排架构师过来面我。
第一次见到架构师,内心既激动又紧张。
然后他问的问题多数是工作的中一些项目的组织结构,各部门如何配合,说实话,他问得很深,已经超出我的水平了,所以答得并不是很好。
本来感觉已经妥妥能拿到offer的,架构师面完之后,感觉又不稳了。
架构师面之后,面试就结束了。尽管很希望拿到offer,不过到最后也没有通知,应该是挂了。
不过也不虚此行,这次面试学到的东西着实不少。
小结
周四的面试的都是大厂,最终也都没有拿到offer,可能是自己的水平还不足以胜任他们的岗位需求,所以还是得提高自己。
周五
周五没有参加任何面试,仅仅参加了一个复试。
结语
这十来个面试让我不仅收获了5个offer,而且也收获了不少前端领域的知识,同时也通过面试找到自己的不足之处,在以后的工作学习中针对性地填坑。
感谢在面试过程中乐于分享,给我贡献一些建议的面试官。
写这一篇长文目的只是记录自己面试的一些经历,方便自己以后不时翻出来。