1

写在前面的一点个人感受

忐忑了长达一个月的心在这拿到腾讯sng的offer之际终于平静下来,趁现在感觉和记忆还没有淡去,记录下面试一路经历的点滴。

感觉自己也算是个挺幸运的人吧,像是一切安排好了一般。高中通过学校的第二兴趣培养接触到ps,接触了编程。虽然高考踩了个坑,但也被补录了个二本院校的一本专业。挺巧合的,也算是个偏技术型的专业。其实当时补录的时候根本不知道这专业是啥哈(信息管理与信息系统)。但是名字那么长还是让人感觉比较霸气的。

嗯,真正学习下来发现是个神奇的专业=-=学科从java到会计,从数据库到国际贸易。文理商管各有涉猎。但基本都是浅尝辄止,没有一门是能让人学到精那种。于是也迷茫过,当时正处于js的初学阶段。那时候写网页动效全部都是从网上直接下代码。那冗长的没有注释的代码特别坑啊有木有。发现我扯得有点远了,那么回到面试这个话题上来。


从内推到处女面

其实一开始就奔着腾讯UI开发(前端的重构方向)去的。个人兴趣吧,因为是女生,所以喜欢偏向展示层面的东西而没有那么接近底层。大概二月底的时候吧,就收到一封邮件说“同学,你已被伯乐推荐提前进入2016校园招聘……巴拉巴拉的”特别突然,当时还不知道是哪个腾讯师兄内推的。怀着感激和紧张的心情就去填了相关资料。

之后3月份师兄又不厌其烦地帮我各种内推腾讯,wxg,sng的。大神师兄多真是棒棒的^^

然而——
腾讯这边的音讯就像是断了一样,小喇叭和小电话一直没有响起过。
倒是由于项目组导师的关系,让我经历了阿里巴巴的一面和二面。

阿里一面 50min

3月初,很突然地接到杭州的电话,果然是阿里巴巴的。有些意外吧,因为进阿里真的没什么把握,不得不承认偏底层东西真的学得不行,但既然机会来了,那么就让自己涨涨经验和见识吧。
一面问的内容非常的泛。但基本都是点到即止。所以这也要求我们了解的前端相关知识广度要足够大。不要仅仅局限于html+css+js这几个领域。

首先是最基本的问题啦:自我介绍。哈哈=-=当时我好紧张,声音都在抖,像在背书一样,把自己的一些相关信息说了一遍。感觉过多地强调了自己的项目经历而没有突出自己的个性。
第二个问题:为什么选择前端呀。很久之前,一个师兄也问过我同样的问题,当时说的是因为不喜欢后台。虽然是实话,但这是面试呀,当然要说点有水平的。我说感觉前端开发能将射击之美和逻辑之美结合在一起,前端开发人员能运用自身的审美和逻辑思维把网站前端完美地构建出来,是一项能切实被感知和体验的职业。
接下来问了项目,看了什么书。其实看的书不少,但是好像一下什么书名都想不起来似的。只说了,web标准设计,css禅意花园,图解css3和js高级程序设计。
接下来就是html,css,js这三大方向的基本问题。期间也穿插一些数据结构和数据库的问题。都不算难,比如数据结构的排序,时间复杂度的问题。数据库的话就只问了会用哪种。

html基础:常见兼容问题。回答分了三个层面,各列举了html,css,js上的兼容性。
为什么要有doctype声明。doctype有几种。html5的与以前版本有什么不同(html5不基于三顾茅庐//sgml =-=了,所以不需要引用dtd哈)。

css基础:面试官好像最后才问的css相关问题。听到的时候松一口气,总算到自己比较熟悉的啦,哈哈。position有几个值,相互有什么区别。这题说了sticky也许会加分哦。貌似没其他问题啦。

js基础:nullunderfined区别。null==undefined返回什么?我说true。又问为什么?我说存在自动转换(不对哈)

应该是underfined是派生至null的,所以underfined==null,要比较相等性之前,不能将nullunderfined转换成其他任何值。

他说既然说到自动转换,那么0=='0'返回啥?当然还是true啦。数值跟字符串比较会先将字符串转换为数值。
有没有看过jquery源码?看过一点。能说说原生“阿贾克斯”是怎么实现的吗?balabala,狂说一通。幸好是电面,要我直接写的话还不一定写得出~
这里做个总结:创建XMLHttpRequest对象(处理兼容问题)>创建一个新的请求,即调用open方法,指定请求的类型,地址>设置相应HTTP请求状态变化的函数>发送HTTP请求>获取异步调用返回的数据>使用js操作dom进行局部刷新。

getpost安全性?为什么?如何实现跨域。腾讯也问了这个问题,但是我两次都漏了CORS QAQ。jsonp原理。我说主要是通过利用src这一属性可以引用非同域资源这一特点实现的。然后问jsonp用的是get还是post。二分之一的概率然而我还是答错了。=-=老是想着post安全性更好,就说post。但是面试官引导我然后把我纠正过来啦~

require.js和sea.js的区别。

HTTP状态码:200204的区别。对不起不知道。301302的区别。对不起不知道。有点偏啦。
又问我304,什么情况下会出现304的情况。
我说这是告诉浏览器从缓存中获取资源。

这里顺带提一下哦,from cache也是从缓存中获取资源。但是304的情况需要先将本地资源的If-Modified-SinceIf-None-Match跟服务器返回的DateETag进行比较。如果相同才用浏览器缓存资源。而from cache一般与expirse相关啦。也就是说304这种情况还是会向服务器发一次请求的。那么什么设置了什么才能有304这种情况出现呢?是cache-control:no-cache。而cache-control:no-store是无论在任何情况下都不进行缓存。

当时感觉这道题答得还行~

其他:当你在浏览器地址栏输入www.taobao.com到浏览器展示出一个完整的页面间发生了什么?哈哈哈,好像各面经宝典上都有哦,这问题。

最后问了问前端新技术。大概50分钟,这样就结束了我不太愉快的处女面~面试完晚上就把这些记录下来啦~


阿里二面 25min

等了好久呀,一个星期。我第六感可能比较强,也因为感觉一面每个问题都能答到,应该没有被刷。于是在一个班会课上就接到了二面电话。

感觉面试官好强(后来通过聊了下知道他好像是支付宝部门哒)。
//而且声音超!级!好!听!也许是苏浙那带的本地人,感觉那边的普通话说得好标准啊。而且好亲切呀。称呼我是直接去掉姓称呼名字的^^。
一上来就问我,觉得你哪些方面没有答好。后来才想到这是主动让面试者把不足点爆出,好找缺口趁虚而入,把你干掉~

哈哈,然而我当时就傻傻地说了。说了require.js和sea.js的区别没说好。但是再说一遍感觉也没说好啊~他还特意地用他的意思总结了一遍。然后就提到了MVC=-=真心不该说这个,因为自己对它的了解程度仅在于会用而已。深一层就完全不会了。所以由这个衍生的问题果然就答不出来了。还问了二叉树原理。啊~对不起,这个真心不会。

其他问题就较轻松啦,团队合作呀,看你们的配合程度。主要通过什么途径学习啊,看你对知识的摄取能力强度。喜欢什么学科,我说java=-=。其实仅限于第一次敲出hello world的兴奋而已。你认为你非编程类学科学得比较好的是什么?我说计算机网络。其实他想听的是数据结构。

最后你有什么问题想问我。。。因为感觉自己表现特差,就问面试官您觉得我表现咋样=-=现在回想起来觉得自己傻傻的,不应该问这些有关个人评价的问题,不仅让面试官不好回答也让他感觉你的关注点所在方向没什么营养。果然,他说:这个…不好回答~ 应该是笑着说的,语气温柔。可能看我是个铝孩子,哈哈。然后我又补充了个你们平常都是使用kissy这个框架咩?他说只有淘宝用哦~

这样就结束了还算愉快的二面^^然后我的神奇的第六感就告诉我二面挂啦=-=所以噢,二面一定不能为了不失逼格而说一些自己不太深入的,但是比较高端的知识点。因为怎么说面试官经验肯定比你丰富,你能说的那些别人一定懂得比你多。这样他会觉得你连一知半解都不算,只是会搬砖而已。相反,如果想说点高端的,一定要事先深入了解并且有一定的实践,这样就不但不会被问倒,也能得到面试官的认可,获得一定加分哦。


腾讯UI开发岗面

没记错的话是3月21号,上完课回来发现腾讯ui开发的面试官(现在应该是我组长了^^)添加了我。对=-=直接加QQ的。当时挺开心的,终于等来腾讯的消息了~简单问好后我问是不是面试,面试官说不是,就是了解下,叫我别紧张。没遇过这种情况,阿里都是上来就直接面的…
然后就跟面试官在QQ上用文字聊了聊。我记得是从下午4点聊到晚上9点,当然有期间双方交流和回复不太及时的原因在。

挺特殊的一种方式,不过也像面试官说的,只是简单了解,还不能算是面试。这种文字考查的方式还是挺容易让面试者抓空子的。不过我也没有上网查问题的答案=-=因为那天正好电脑坏了,又想着及时回复和尽可能表现得真实点吧。

记得第一个问题是:为什么需要w3c标准。我说为了规范浏览器对网页的渲染。特别简洁。然后面试官就引导我,如果没有会怎样。我说到兼容问题那方面了——详细说就是每款浏览器有自己的标准,所以如果开发者和浏览器厂商如果不遵循同一个规范的话会有很多意想不到的问题出现。现在觉得答得不太全面,应该回到何为w3c标准进而将答案引申。

w3c标准包含了3方面:(x)html、css、ecmascript+dom。目的简单地说是为了使网站的受众在不同浏览器下都能获得网站信息,得到相同的,尽可能好的用户体验。而从开发者角度说,是为了节约开发成本,提高效率。浏览器厂商角度:更好地盈利。

貌似只有这一个特别基础的问题,然后大部分的都集中在移动web开发上了。(也可能是我简历上写了有web app开发经历的缘故)映像比较深的问题是问我zepto和jq的区别,因为看我web app用的js框架都是jq,而我面的那个部门移动端js框架用的是zepto。

其实我觉得Zepto不怎么好用,因为很多模块的没有包含在它的核心模块里面(比如动画,touch模块),这么设计的目的之前听说是因为Zepto某些模块含有没解决的bug。(比如点透)当然还有一个原因是减小体积。

我就说Zepto感觉很多事件处理方面没有jq封装的那么好,挺多事件不支持的=-=当然漏了最重要的那个——它体积小。其实当时使用Zepto只是为了用tap而已(解决传统click 300ms延迟的问题,但产生了点透的问题),但是发现核心Zepto这么事件多不支持,jq自己用得又比较熟,就用回jq了。然后我说针对tap这个,我用了fastclick。面试官说,这么说移动端用jq+fastclick而不用Zepto

当时就有点慌了,说实话挺怕面试官下这样的总结。因为自己的经验浅薄,仅仅只是某个项目用的方式当然不具备专业性,不能代表业界的使用方向。所以我赶紧说,当然不是,只是我个人对jq的熟练程度比Zepto好,其实现在回想起来,还是因为自己没答到最重要的那点。//这里补充下,其实之前有想过用淘宝的kissy mini,但还是由于不熟悉放弃了使用。

还有就是问图片格式(如果想说webpapng最好要有一定的实践和研究),性能优化(这个后来面试尽然没再问到!吃惊。),3d动画(说了webgl有加分哦),移动端ui框架。还有的就是针对我做过的项目问的了。聊完的感觉是,个人移动端的项目经验还是比较缺乏的~

又是一轮漫长的等待……因为面试官都说了不是面试=-=又不好问他现在是啥情况。所以就只能各种猜。快一个星期了,忍不住问了师兄,他正好跟面试官同组哈哈。后来告诉我,现在加我有N个候选人,面试官说近期还会找我聊聊。^^hha,感觉豁然开朗。貌似几十分钟后,面试官就约了我第二天视频一面…
图片描述


视频一面 1h

还是那句话一面问的内容非常的泛。但基本都是点到即止。

比较基础的是盒子模型,怎么去改变盒子模型。ie怪异模式。position有哪些值(阿里也问了)display有哪些值,css单位。自动继承的css属性。link@import引用样式表的区别。这些题目怎么说呢看似基础其实暗藏杀机=-=就是因为问题太过简单基础,而我们平常的关注点也比较表面,没有深入地去研究这些基础的东西的由来,也没有去了解那些不怎么常用的css属性值。所以当面试官往较偏的地方引导你,你就很可能答不上来了。我就是这样…

比如问了,positionstickyabsolute的区别,我就不知道了。也是缺乏实践的原因。不过单位那个感觉还行,因为提到了vwvh这两个单位uc下不支持的问题(当然这个是因为实践过)。html5的新标签,这个没答全。新增表单属性。如何控制一个typetext的文本框只能输入数字,除了使用js。我说,为啥不用typenumber或者tel,面试官说还会有其他问题。噢,然后我就在思考。。。略久,他就说知道可以使用pattern写正则吧~当时恍然,也懵逼了,因为我……不会……正则。不是说完全不会,但忘了很多。也果然写错了。

这里是后来查到的number tel不适用的原因和使用pattern解决的办法

偏移动端的问题有比如如何开启硬件加速。微信浏览器内核,我说我知道手Q是X5…那微信也是吧。面试官说恩,但它又是基于什么的呢?我说是基于webkit二次开发的。又问ip6,ip6+的dpr,nexus5的dpr,nexus5我忘了。后来有补充了针对ipone的web app定义meta解决方案的相关问题。这些都能回答到啦^^

当面试官问我js问题时有点惊讶,因为面经上说重构不问js的呀=-=不过,还有点松口气的感觉,前面html,css的问题一问偏我回答得就比较吃力了,所以问问js也是好事~一开始果然特基础,比如js数据类型,啥是闭包,如何跨域,jq deferreds特性。但还是慢慢深入了,比如硬件传感器api,RequestAnimationFrame

还有的就是状态码和如何获取前端知识的问题了。

一面的问题是难易穿插,不是循序渐进的,并且也不会一直集中在某个领域问问题。最后的就是你有啥问题问我,吸取了阿里教训就所以问了点有深度的问题啦~。//后来跟师兄聊的时候,他又告诉我一个小窍门。

如果一二面是同一个面试官,记得把一面他问过的你不懂的内容回去实践一遍,然后发现新的问题,在二面时反问他~这样面试官能知道你有针对上一次的面试经历去反思,并且转化为行动力

结束视频聊天时显示时长有1小时几分钟,后来我又问了问面试官如果通过啥时候有消息,他说这几天。这样又进入了等待。

一面虽然有些偏难或者偏门的知识点也能答道,但还是暴露出自己基础不够扎实的弊端。说实话我也不是特别有底,但第六感告诉我还有下一轮。


视频二面 17min

一面是周四,周二中午的时候收到消息说下午视频复试。这次没有提前一天通知,可能面试官也比较忙吧。所以我准备的时间也比较短了。匆匆地吃了午餐又抓紧时间看了看自己还不太熟悉的知识点。

跟一面一样,也是下午4点时面试开始。这次是团队的leader面,挺亲切哒~其实几次下来感觉面试官都很nice,压根不会让你感觉到有压力。

问了我做过项目的有什么亮点,有没有写过插件,也问了闭包,闭包使用的场景,比较倾向于前端表现层开发还是逻辑层,想要深入学习的面相对象语言是什么。开放性问题,较考察面试者的逻辑思维

也问了我有没有自己写过php,jsp。有没有开源项目=-=我一听感觉不好,前后端对接没问题,但写代码我不太会啊。jsp虽然写过几个页面,但都是小打小闹的。所以就只能老实地说——没有:(
之后就问我有没有什么问题,我问在腾讯,对于ui开发人员去学习设计或者后台相关知识是持着一种鼓励的态度吗?还是说leader更喜欢我们精通html+css。面试官说,问题很好^^然后也特别仔细地回答了我。简单地说是持鼓励的态度的,更倾向开发人员往全栈发展。面试就这样结束了,面试官说我们会在今天内给你答复的~之后就愉快地说拜拜了。

面完感觉更没底了,因为真是太快了啊!后来跟我妈说到,她说可能刚开始面的时候面试官已经有答案了,只是再简单了解下证实他心中的想法。所以你一定要阳光点,面试不要畏畏缩缩的=-=我说我阳光灿烂啊~


随意聊聊的hr面 10min(又名直接发offer的hr面)

吃过晚饭无所事事地刷着微博,有些失神。真的怕等待会让自己的期待变成失落。实在太困了就趴在实验室桌子上睡了半小时的觉。大概八点钟,接到了hr姐姐深圳打来的电话^^瞬间满血复活。hr姐姐声音好好听,萌萌的。就跟我说简单了解下情况。噢,先是问了我Q号和身份证号,(后来才知道hr姐姐本来就打算发offer才打我电话哒)又问是哪里人啊,兴趣是什么,做项目时遇到啥困难怎么解决~不过木有问我又木有男票=-=然后就说没什么问题offer几天后就能发到邮箱了。当时特激动,跟她再确认了一遍可以发offer的事。之后就连声感谢着挂了电话。


后记

hr面完马上就给我妈打过去了……谢谢妈妈,在我面试低落时不断安慰我,没一句怨言地吸收我的负能量。在二面的时候跟我一起紧张,在hr姐姐电话打来前小心翼翼地问我现在还没消息是不是就没有了呢?T^T现在终于成功迈出第一步,喜悦当然要跟分担了我太多忧愁的妈妈分享。

然后我妈挂了我电话=-=发了条微信语音——点解打电话比我噶?我微信打过去,跟她说拿到offer了~可以去深圳了。她也松了口气,转而又起了微微担忧——深圳离家比广州远了。其实那时候面阿里的时候她也问过我,如果真的进了,是不是就要去杭州了?我说当然,她说舍不得,舍不得你离开省,一个人走这么远。也许仍未体味到什么是儿行千里母担忧,但我当然也希望我妈能放心地看着我成家立业,所以目前拿到深圳的offer于我于她都算是好的吧~

以上就是我一个月来的各种面试经历了。现在也算是以回忆录的方式写完了。之前不造在哪个面经上看到过,拿到很多offer的人胃一定很好,因为能承受如此强大的来自未知的压力。但一定不是我,哈哈。

以上个人经历仅供参考。面试下来感觉各单位招聘前端的针对性还是很强的。所以如果没成功不一定是自己能力问题,也许对手太过强大又或者是自己的能力模型与面试的岗位不相符。但有一点要知道,掌握基础是真理,多实践是王道。最后祝奔波于大大小小面试的同行们都能成功拿到自己心仪企业的offer!


yvonne
1.3k 声望93 粉丝