于是终于要来给博客除草了——至少在这篇文章开始起笔的时候已经有六个月没有更新了吧,倒是希望能在这篇文章正式发布之前能有些其他的文章吧,当然草稿箱里还留着一篇试用 AWS Education 的文章,不过估计过了这么久也没再发布的欲望了。
这篇文章算是一个真正的日记吧,也不确定能够给其他人带来多大的指导作用。嗯,大概吧。
这篇文章的结构参考了 Legendt 学长对笔试的记录。虽然后来发现文风完全不同(
关于面试前的准备的话,其实我是一个比较作的人,投简历只投了鹅厂猪场性浪三家,在面试前基本上没有过多关注面经之类的东西,也没有对数据结构操作系统计算机网络之类的内容进行复习,唯一的复习的话算是在去杭州的路上把那本《你不知道的 JavaScript》往后翻了几十页而已,面试时完全是属于即兴发挥。如果你对面试没有把握的话,千万不要学我,我只是心大而已 = =|||
说明
- 本人面试的职位为 前端开发工程师,不确定对于其他职位是否有参考意义
- 本文起笔于网易面试结束与腾讯一面结束后,更新的时候会有相应的时间标记
- 若未特殊说明,本文中指代的面试均为现场面试,而非电话面试
- 每个面试官会有不同的风格,所以不能保证本文能与你的情况相同
关于简历
虽然是说面试,但是简历还是会对你的面试有很大影响的,所以单独提出一节详细介绍。
虽然似乎大家做简历很倾向于用 LaTeX 进行排版,但我的简历还是选择使用了 HTML + CSS 进行排版,然后打印导出 PDF 进行上传。如果你也希望采用这样的形式制作简历,那么你可能需要注意不同系统与浏览器之间的差异。不过如果只是想要写出来然后导出 PDF 的话倒可以不用这么讲究了,至少保证自己打印出来没问题就行了。
至于简历是否需要花哨些的话,我个人是持否定态度的——至少我的简历就是非常简洁,没有太多花哨元素的。在网易面试时确实有遇到一些同学的简历是采用 DIYgod 的简历模板,虽然只是一闪而过,然后确实有种很突出的感觉(至少对于我来说确实是一眼认出了),不过还是想说……这样真的不费墨水么?而且其实这个配色打印成黑白的话,左侧的文本辨识度很低。嗯,总之我是出于这样的目的以及确实不知道怎么设计了才更推崇简洁的简历的。或者花哨可以,毕竟对于谁来说都是眼前一亮的,但是还是照顾一下打印机的感受,试试用 @media print
优化下打印机的效果。
接下来的内容或许很多简历经验里都说过了,但我还是再赘述一遍吧:
- 至少保证整篇简历没有错字与联系方式错误之类的低级问题
- 不要在简历中出现你不熟悉的内容,不熟悉的内容千万不要写,如果写了在面试时提到的话一定要及时表明自己不是特别了解。至少我有同学在网易面试时因为在简历里提到会 React 然后被面试官追着问实现细节最后 GG 的
- 「个人简历」四个大字还是不要出现了,谁都知道这是简历,还是考虑省点空间给你的简历正文吧
- 简历中尽可能删掉不要的内容,没人对你的性别、生日、籍贯、星座感兴趣,也没人对你与所投职业无关的活动感兴趣,对方只想知道你的姓名、联系方式、学历、求职意向与项目经历,其他的东西只会占用有限的简历空间
- 尽可能突出你的项目经历中自己做了什么,详细地描述「我实现了 XXX 功能,使用了 XXX 库」总比一句「我做了 XXX 的前端页面」要好
- 如果你是一个强迫症,建议仔细斟酌你的简历排版,并尝试打印下来检查配色与错字病句检查。简历排版可以参考这篇非常好的文章《中英文简历撰写排版指南》与它的精简版,至少在我编写简历的时候会经常翻看这两篇文章。如果觉得麻烦的话,要不要试试看这家的简历排版服务?虽然我没用过他的服务,但是至少从这两篇文章看来,一定是可以放心的吧
- 排版时别忘了试试打印机效果,至少按下
Ctrl + P
预览下,尽可能把内容和排版精简到一张 A4 纸内,如果 dalao 的经历实在是数不胜数需要翻页,请务必配合page-break-*
这些 CSS 属性保证文本断页的质量。另外要注意如果网页中有链接的话,别忘了这些<a>
标签的href
属性可不能出现在纸质简历上,建议单独分离或者借助::after
的content
属性指示链接
另外虽然我没投阿里(虽然后来发现阿里就在猪场边上),但是这篇文章讲的非常不错,感兴趣的可以参考一下:「
分享一点“关于应届生如何写简历”的人生经验」
网易
先吐槽下笔试:
网易投递的岗位是音乐事业部的前端实习。网易的面试是要求到网易杭州面试的,并且当时的面试是要求在一天内面试完成。按照网易笑招组在微博的描述,面试应该分为三轮,两轮技术面,一轮 HR 面,因为是在一天内完成,所以会对身心是个很大的考验。不过对于我来说,这三次面试还是不错的体验,至少对于我来说,这三次面试就像是日常聊天的感觉。
你这么爱写代码,一定活得很难过吧(雾
一轮技术面
网易的面试是在 C 座,也就是面试中心进行的,前端没记错的话有 20 个面试小组。一面的时候我是 15 小组,对面坐着两个面试官。
简单自我介绍后,面试官开始询问我简历上的项目,询问项目的实现细节之类的,比如之前比赛的心愿墙网站,面试官询问了我是采用什么方式实现瀑布流的,以及询问从我的代码上有没有什么优化的方法。顺便不知道怎么回事,面试官把我的那个「网易云音乐高音质版本」给挖出来了,然而我明明记得我在更新简历时特地把这一项避讳掉了,这就很尴尬了。不过面试官也只是问问实现细节之类的,也没有说什么其他的。
询问完项目大概 10 分钟吧,开始问我些基础问题,比如:
- Cookie 和
localStorage
有什么区别,两者有什么优劣 - 如何删除一个 Cookie(设置当前时间之前的任意时间)
- Cookie 会不会出现设置冲突(domain、path、HttpOnly 等都会导致出现重复项)
- 给 localStorage 封装一个 API 实现
storage.get("foo.bar.baz")
这样的链式调用,并将数据存放在一个统一的键下,如何设计实现 fetch
是否会携带 Cookie(我认为是携带的,但是面试官说默认是不携带的,也有可能是我没听清)- 浏览器是怎样并发请求的
- HTTP 的
keep-alive
会在什么时候断开(至少我猜错了) - 如果编写一个 IM,当用户上线时服务器向其他用户广播(推送)上线消息,如何实现(我只能想到 WebSocket 和轮询 XHR 了,面试官说轮询 XHR 在这里不合适)
- 简历项目中提到了视差滚动,所以问了下如何实现视差滚动,以及如何纯 CSS 实现(想不到)
或许还有其他的问题吧,已经记不清了。在面试过程中面试官也会引导回答,不过我在回答时如果不是很懂的话,我会说「这个方面我不是特别理解,我猜是这样的」,然后再说自己的理解。面试官也会说「不对,这个你可以回去查一下」,也不会做太多纠缠,所以一面感觉像是我在学习的一个过程。当然一面也是问的很广很细的,当然也可能是这个面试官的风格。
整个面试大概 20+ 分钟吧,然后面试结束一会后询问前台,得到了「二面等待中」的回复。
二轮技术面
二面的时候我是 12 小组。面试官倒是挺和蔼,看了下我的简历说「你挑个最好的说说吧」,我也是说「其实我觉得没有特别突出的东西,因为多半都是玩具性质的东西」。
接下来面试官扫了下简历,看到了之前的那个萌否电台项目,然后问了下我是怎么实现的,然后我说是使用了 <audio>
标签的播放之类的操作。接下来面试官开始和我聊起来了,「有没有遇到过播放完毕后再播放的时候会出现播放不了的情况」,「嗯,好像没有遇到过,不过我记得网易云音乐的网页版似乎有遇到过这个问题」(我确实遇到了这个问题),然后接下来问我有没有什么解决方法,以及交给我的话会怎么排查错误,似乎更像是一个交流的过程。然后询问我也没有接触过 Flex,我也是回答略懂但没有深入了解,然后阐述了下自己知道的内容,说我更熟悉 inline-block
和 float
这样的内容,然后面试官就顺着问了怎么处理 inline-block
的间距(font-size: 0
,注释空白字符),以及如何 CSS 实现文本自动省略。接下来还问了下怎么让不定宽高的元素垂直居中(table
+ table-cell
,flex
中也有垂直居中的属性),如何对一个对象进行深拷贝之类的,以及对 Promise
和 ES6 的其他特性有没有其他的理解,不过我也是以不是太了解而回绝了,当然也表述了下自己知道的内容。总之我的二面感觉更像是一个聊天的过程,我的二面只有 10+ 分钟,相比较于我询问面试状态时「这个已经面了 15 分钟」的情况来说已经很短了。
不过也确实是和面试官有关的,比如在最后遇到了个 dalao,他就说他的二面是在 12 组做的,面试官问了他很多细的东西,以及因为他在简历中提到了有过编写插件的经历,面试官问了他现场手写实现一个轮播组件,然后还说「你这个有问题,翻到末尾就翻不回去了,再改改」。所以面试中有很大的运气成分,也可以说这篇文章可能没有太多参考意义,因为你不知道你的面试官是什么样的性格。
接下来询问了下前台,得到了「HR 面等待中」的回复。
HR 面
对于没有任何面试准备的我来说感觉走到这步已经不可思议了。HR 一共有 7 个小组,我的面试是 HR 1 组,对面同样是坐着两个面试官,而且从后来的情况看,似乎其中的 HR 姐姐很不得了(
面试过程中做了个简单的自我介绍(突然想起来我二面是不是没有自我介绍?),然后 HR 就开始看我简历,然后问了下简历中的项目,比如这个项目是做什么的,这个汽车管理项目周期这么长是因为什么,怎么会想到用 eCharts 之类的问题。这段面试还是比较轻松,只是就事论事而已。然后接下来是 HR 姐姐提问,这边就侧重于公司氛围了,比如希望一个什么样的工作环境,日常还有什么其他的兴趣爱好么之类的,还有没有应聘其他公司之类的。中间还似乎变成了一个用户反馈,比如觉得网易云音乐吸引你的地方在哪里之类的,然后还问了下有什么意见(然后我就把高音质这个问题给说了(顺便还提了个校招页面的意见(
二面大概也就十几分钟吧,过程也是比较轻松,中间也没有什么觉得答不上来的地方。然后 HR 就让我等十分钟去前台问问结果。
插曲
「那个,HR 姐姐让我来问问面试结果」
……
「你明天要回武汉是么?」
「是的」
「如果没什么安排的话,介不介意在杭州再玩一天?」
「……诶?」「不过我明天在武汉还有个笔试」
「嗯,那要不今晚我们一起吃个饭吧?」
接下来在等待的过程中还尝到了杭州特色的梅干菜烤饼,虽然我对梅干菜本身就不是特别感冒,谈不上喜欢,但也不是不喜欢的地步。
接下来前台的帅哥就叫上我和那个之前提到的 dalao,「接下来你们两个和我们的总监还有一场面试」,然后就让去猪场食堂要饭了,「顺着水池走,跟着人多的地方去就行了,随便拿,不要钱的」。
吃完饭了之后,之前的 HR 姐姐(好像是?我有脸盲症!QAQ)就带着我们俩去网易的大楼了。
「我们的 CTO 对这次面试还是很重视的,所以你们还要再和他面一次」
「那个……我可以回去摸摸面试大厅的沙子么 QAQ 似乎它能带给我好运的样子」
总监面
其实这部分面试并不是在流程之中的,之前提到的流程只有三次面试,而这一次应该算是四面了。
上了网易大楼,被告知这个面试大概需要 30 到 40 分钟,然后因为另一个同学需要赶火车,所以就让他先面了。期间在会议室等待的时候顺便偷窥了下隔壁的办公区,顺便还发现了玻璃墙上贴的装饰磨砂纸的代码是 PHP 的样子。大概 40 分钟后就到我了,面试官也是说时间有点久了,我们简单来说吧。
其实这个时候因为已经面了一下午,精力已经有些疲惫了,所以接下来的面试似乎非常不在状态,精神也有些恍惚,具体的提问细节也记得不是很清楚了。
简单的自我介绍后,面试官大概问了下面这些问题:
- 「从这么多项目经历中,你觉得自己最突出的是什么」
回答的时候我有点懵,简单的说了下较强的学习能力之类的 - 「如果说你侧重原生 JavaScript 的话,那么怎么没有去学习框架之类的呢」
大概也是说之前的项目多半是玩具性质的,所以不需要这些,但是要学的话也可以很快上手 - 「你最近读过的有关前端的文章是什么,简单说一下你印象比较深的」
大概说了下最近在看《你不知道的 JavaScript》,大概说了 JS 编译器与解释器的交互,以及this
之类的。不过感觉对方并不是很满意,现在想想看似乎也算是基础吧 - 「你觉得整个大前端的学习方向是什么」
其实这个问题我回答的特别懵,因为不确定这个方向指的具体是什么样的方向,所以大概就是从个人的期望吧,学习框架与 ES6 之后的内容,也可以往 Node.js 发展。不过对我的回答似乎并不满意,面试官认为我的回答是关于 ECMAScript 方面的发展,而不是大前端这个范围的发展,应该包括类似 CSS 层面的提升,还有不同浏览器之间的 API 差异之类的。现在想想答出这些应该很正常,看来我当时回答的确实是很不走心了
整个面试只有短短的十几分钟,自己似乎还没回过神来就结束了。然后坐公交车回到酒店洗完澡也是困得要死,倒上床就开始迷迷糊糊睡着了,感觉自己确实是精力透支了,当时应该在面试大厅试试看咖啡机的(
最后倒是该说比较幸运吧,过后不到一周顺利拿到了猪场的 offer(
腾讯
再吐槽下笔试,这回是真吐槽了:
做着不断循环的面试 GG + 回到高中化学老师小胖胡又变成了就业导师训斥我面试怎么能这样的梦,第二天大清早迷迷糊糊起床赶上了从杭州开往武汉的高铁。回到武汉后更新了下简历并打印后就匆匆赶到腾讯的面试现场了。
那个……腾讯在酒店,所以就没照片了(
在正式开始前吐槽如下:
- 武汉的路果然是修个没完
- 酒店七拐八拐拐上了面试区,鹅厂在现场采用了高大上的扫码签到的功能,然而我一扫网页就是白的……什么也没有……虽然感觉从那个
weixin.qq.com
多半能猜出来是怎么回事…… - 手动签到后在候试厅等待面试,人还很多,感觉比猪场多多了,就是那个机器语音报准备面试……听着特别尬
- 其实整个上来到面试室的过程,感觉整个现场似乎气氛有几分凝重,特别是那个机器语音更感觉现场像是机器人一样,虽然现场有很多工作人员。这种感觉有点像宣讲会时的感觉,和猪场那种略显活泼的氛围似乎有种明显的差距
一轮技术面
腾讯的面试安排在酒店里,面试时机器报名字并会有短信通知房间号。乘坐电梯进入房间,自我介绍后便开始面试。
面试官只是提到了简历的项目挺多,但是并没有问到与项目相关的内容。这有点像之前在网易的那个 dalao,他也说据他所知,一面是不会问项目的,所以当时他一面问到了项目有些没反应过来。然后面试官还问了下我怎么最近去杭州了,让我事后想起来感到很惊讶,诶,你怎么知道我去杭州了(虽然估计是 QQ 签名里吐槽地震所以知道的吧)。接下来面试官问了几个简单的问题,这些问题似乎也比较死,所以难度应该不是很大:
- 如何理解 JavaScript 的闭包
- 描述 JavaScript 的原型链
- 如何实现跨域访问(JSONP,CORS,
window.name
…) - 对于网络安全你知道哪些,有没有防范的方法(XSS 之类的,面试官还问到了跨域请求的鉴权防范)
- 描述一下你所知道的 HTTP 协议的内容(例如请求头与响应头的内容,HTTP 状态码等)
- 简单描述一下快速排序的工作原理(然后我就说基本上忘了)
- 有没有接触过 Node.js(略懂)
- 描述下进程与线程的关系(也是说忘了)
然后一面就这样结束了,前后十分钟的样子,然后面试官问了下我接下来几天还在不在武汉,就让我回去等通知了。
因为一天只有这一场面试,所以似乎并不是很累,所以这篇文章才能在面试当天晚上开始起笔,从开始写的近晚上九点,到现在的凌晨十二点半,现在并没有多大的倦意,所以不会像猪场那样轮番轰炸后精力全无的情况。
<!– 此节后更新时间为 2017-04-16 –>
二轮技术面
一面过后的第二天收到了二面的通知短信,仍旧是在那个特别高大上的酒店里。签到时仍旧是无法签到,还因此被前台的小姐姐说了句「没有微信也到了二面,那你很棒棒哦」(此句复述有转译与增强感情色彩的修饰)。面试厅仍旧是报着机械的面试通知,就是人稍微少了一点。
二面的情况相比较于一面确实提到了些和项目调用的库之类的,其他的话倒是和一面基本差不多。
- 因为项目里有提到 jQuery 和 Vue.js,所以询问了 jQuery 和 Vue.js 的区别和原理,两者如何在实际项目中进行选择
- 如何看待 Vue.js 的路由和双向数据绑定
- 如何实现跨域访问
- 如何防范 JSONP 的恶意调用
- 如何使用 CSS 实现阴影圆形(
border-radius
+box-shadow
) - CSS 的特效属性有哪些
- HTTP 协议的内容
- HTTP 的
Cache-Control
的作用 - TCP 协议的握手过程,SYN 和 ACK 的值是什么,为什么要三次握手,两次握手会怎么样,握手过程中携带数据可以吗
- HTTPS 是如何建立安全连接的
- 什么是平衡二叉树,什么是完全二叉树
- 对一组数据进行快排
二面的时间大概花了 20+ 分钟,然后就让我回去等通知了……讲道理那天超级困所以感觉超级方(
HR 面
二面的当天晚上就收到了三面的通知,一如既往的是那个高大上的酒店(今天才知道原来电梯里的客房楼层是只能刷卡才能按的……QAQ),一如既往的无法签到(所以为什么报名系统要登录 QQ 而签到却要用微信???),倒是面试厅并没有多少人,甚至连面试通知的屏幕和语音都没了,现场感觉挺冷清的?
三面的 HR 姐姐只是简单问了下项目和性格方面的问题,比如说
- 描述下自己做过的项目与觉得比较好的项目中做了些什么
- 选择这个职业的原因
- 觉得自己相比较于同专业的同学的优势是什么
- 自身有哪些缺点
- 自己之后学习的方向
- 自己希望的工作氛围与环境
- 有没有家属在鹅厂、工作城市、项目组、有没有额外的面试与 Offer、实习时间等
这段大概说了 15 分钟吧,剩下 5 分钟就是 HR 姐姐说了下鹅厂的待遇与氛围之类的,总共大概 20 分钟的样子,然后三面就这样结束了。
最后似乎……没有消息了 QAQ 果然我还是太菜(
<!– 此节更新于 2017-05-22 –>
然后……今天……鹅厂音乐……来找我……挖(bu)墙(zhao)脚(gang)了(wei)……场面一度十分尴尬(手动打脸
<!– 此节更新结束 –>
新浪
新浪的进度相比较于前两家慢了许多,比如把猪场面完了才收到简历筛选通过的通知,鹅厂面完了还没有开始笔试……所以在各家基本上进入面试的情况下,新浪是自身定位备胎么(
至于新浪的面试?我连笔试都没做哪有机会面试(手动二哈
小结
总之对于实习生招聘的话,对于技术水平要求应该不是特别高,如果在简历里有自己的项目的话会有很大的优势。另外在面试的时候会询问很多计算机专业的基础知识,所以在面试前把数据结构、计算机网络、排序算法这类基本知识复习一下还是有很多帮助的。面试的题目无论是同一家还是不同家都可能会有很大的重复性,所以在一次面试后可以立即查漏补缺。如果在面试时遇到不会的也不要沉默,直接直截了当地说自己不知道是没问题的,不求引导面试官问自己擅长的问题,至少能表明自己不会就行了,如果有自己的想法的话可以说说自己的猜想之类的。总之面试也是一个检测自己的过程,大概知道自己是个什么样的水平。
<!– 此文部分小节更新时间为 2017-05 –>
恭喜cc大佬~PS:fetch确实需要加credentials:”include”才会带cookie
恭喜
(如果之后有考虑北京的话,可以来我这边试试看
cc已經入社會了 我還未上大學。。。=3=