十月中旬我的面试基本结束了,之前两个月都在整理知识,记录在我的博客里,这个月就整理一下思路吧。我面的公司不多但大多到了终面,加起来也有二三十场面试了。也有不少感悟,把它们写一篇面经出来,对新人或能有些帮助,那就攒RP了。

至今已到手百度前端Special、腾讯前端Special、网易游戏研发、阿里前端(网传白菜价)、还有一些小公司,如知乎等等。

有些笔试是要求保密的,在此不便多说。主要写面试经历。在经历这二十多轮的面试后,我更加深信了面试成功与否不仅在于实力,还有运气、缘分、还有气场。暂且按照面试过程的相似度来分小节记述吧!

阿里、腾讯

我在腾讯和阿里的面试都偏重项目,没有深入地探讨技术细节。和面试官讨论的问题也多有重合。所以把他们一起来记录。

很早阿里就开始面试了,这是BAT中我面试最早的一家。一共3面,首面技术,二面工程,三面是总监。一个多月后拿到传言中的10k Offer,已被我拒绝。腾讯的工作环境相当赞,是我在面试中见过最好的。一共5面,首面技术,二、三、四、五什么都问。。。Special Offer。

一面上来基本是做几个JS,CSS题目,然后开始各种问CSS。想必这是前端工程师标准的一面流程。涉及的问题就更加普遍了:

  • 写一个两栏的布局,左边自适应。

    老老实实写就好了,floatabsolutetable都可以实现,可以问问面试官有什么要求。再谈一谈利弊即可。

  • 什么是JS闭包?然后来一道题,基本都是网上能查到的。

还有就是稍微问一点偏门的,比如阿里一面让我用CSS写一个转圈的球。正好带了我的Macbook,分分钟写了一个出来,面试官表示非常满意。

二面一直在谈项目,碰到很多经典的问题:你做过的最有挑战的项目讲一讲?最有成就感的事情呢?你有什么缺点?为什么想来我们这里?隐约能感受到文化相符度(culture fit)的考察。

问到项目我就谈Onboard天码营。比如天码营前后台分离的架构,Node服务器和HTTP/Websocket代理,Onboard单页App,CSS、JS的模块化(JS loader,AMD&CMD,LESS/SASS)实践……有一个Git的问题被问到很多次:git pullgit fetch有什么区别?这个问题你可以请教Ricky,是他告诉我的。

知乎、百度

我感觉知乎、百度等面试过程更注重编码能力和技术细节的考察,在这里统一记述。知乎5轮面试,很早就给正式Offer了。百度3轮面试,Special Offer。

CSS 问题:

  • box-sizing是什么东西?CSS盒模型有两种:border-boxcontent-box,计算宽度的方式不同。
  • floatabsolute布局有啥区别?两者都会脱离文档流,但前者仍会占据位置,后者会覆盖文档流中的其他元素。
  • Node.js是怎么实现并发的?可以去参考一下libuv、cpio……
  • Cookie和Session有什么区别?
  • 大页面优化、回流和重绘(通常会和table一起问,它默认并非流式布局)

我简历里有AngularJS,所以有一些AngularJS的问题。

知乎也是重度AngularJS用户。

  • AngularJS的依赖注入是什么?双向绑定是什么?
  • Service和Factory有什么区别?这是框架细节了,这两个的本质都是Provider的shortcut。

知乎问我AngularJS有让你不爽的地方吗?看来AngularJS让知乎很不爽,此前我们做的Onboard已经实现了完整的Angular单页App。其实只要合理地控制复杂度、加上优雅的设计、以及代码风格控制,完全可以很爽。

华为、网易游戏

除了前端,我还面试了很多C++工程师,包括华为、网易游戏、还有一些小的游戏公司。小公司当然都给Offer了,然后我不好意思地拒绝他们(PS:确实刚开始面试不知自己几斤几两骗了好多小Offer)。

网易游戏是最赞的,面试半天时间,两天后直接签发正式Offer。技术终面的面试官直接签发offer,HR只负责组织流程和维护秩序。

这些公司考察的都是C++和后台相关的题目了,在网上都可以查到大把的答案:

  1. STL熟悉吗?C11呢?用C11写一个算法,找出所有1,000,000以内的质数。
  2. 虚函数是怎么实现动态联编的?多继承时虚函数表是怎样的?
  3. TCP的三次握手和四次握手,为什么要四次?
  4. IPC有哪些方式?匿名管道为什么只能让父子进程共享?
  5. 求解最邻近点对问题、单源最短路径问题(书上有,分治策略)
  6. 还有一些小算法题记不清了,这些通常不会太难。

一点感悟

感觉面试不同于笔试,正确与否真的不重要。首先一点要保持放松,不要慌。不过当你已经被要求做过几十次自我介绍之后,想必你也不会再慌了(我都想吐了)。其次要保持主动,不要因为不会做就卡在那里,说说你想到了什么或者你做过什么类似的,这样能够引导面试官来问你擅长的东西。

比如我被问到如何实现视差滚动时,也懒得写CSS了,直接拿装B游戏的背景山脉来说事。然后就开始扯这个小游戏了……

另外前端工程师个人博客/网站是很重要的。虽然并不是必须的要求,但你在整个面试过程中让面试官无聊的时候看看你的作品还是蛮好的。

实习重要么?重要!实习至少可以保底一家公司,如果你不需要保底的话当然可以不实习。身边很多同学已经印证了这一点。其实我没有实习过,是因为我有更重要的事要做。

登录发表评论 注册

陈剑彬

thumbsup 写的很棒 虽然感觉自己跟楼主比起来相差甚远, 但是面经内容很细节,有实例 ,点面俱到.

我这种小码农也能从中受益.

反馈意见