记录一下 2018 年研二暑假,参加一些互联网公司的实习生招聘的经历。前后忙活了大概一两个月,中间四月份比较集中,现在已经告一段落。写下这篇,算是对这一两个月的简单梳理,也可以给后来人做一些借鉴。

不是面霸也不是 offer 帝,百度阿里都被拒了,结果是拿到了网易云音乐和腾讯 SNG 的 offer,其他的公司有的参加了面试,有的就划了划水。最终没有接网易的 offer 选择了腾讯,决定7月份硕士中期答辩之后去腾讯实习。

先介绍一下个人基本情况,然后整体梳理一下各个公司的笔试面试情况,会有一些偏流水账式的经历记录。

# 个人基本情况

  • 应聘岗位:

    前端工程师

  • 应聘公司:

    阿里、腾讯、百度、网易、携程、小米等。

  • 个人背景:

    C9二校本硕,本科自动化,硕士计算机,除了勉强算名校之外,科班知识匮乏。(好在前端岗位不太需要什么太深奥的CS基础知识,基本都靠自学)

    硕士科研方向比较冷门,软件逆向分析相关,软工和安全各沾一点边。个人兴趣点不在这个方向,逆向相关的基础知识缺乏学习动力,所以没怎么考虑过相关的安全岗位。

    从大四才开始接触 Web 开发,起步较晚,入门是从前人的 ThinkPHP3.2.2 代码直接开撸(PHP 还真的不需要系统学习也能快速入门写网站,但想精通就不行了)。最开始是用传统的 PHP 模板 + jquery + bootstrap 来做前端方面,后来为了强迫自己学的多一点,虽然看到 ThinkPHP 出了 5.0 版本,还是强行从 ThinkPHP 转到了 Laravel。在 Laravel 的学习阶段,逐步熟悉了 PHP 和 composer,然后接触到了 Vue,接触到了前端的开发流程。

    前端的开发框架大火,传统的 jquery 已经不再是主流,所以开始学习 Vue。当时也有考虑过 React,但是简单了解之后,感觉 React 的 JSX 以及相关的内容学习曲线有些陡,而 Vue 的模板语法和 SFC 比较符合传统的 Web 开发习惯,加上 Vue 的国内社区更好一些,所以决定学 Vue。学习过程中又逐步接触了 eslint 和 webpack 等工具,到现在为止算是对前端稍微入门了。

    学习过程中,从完全不会用 Linux,到发现了用 Linux 比 Windows 搞开发要爽太多;学会了用 nginx、docker 什么的来简单部署一个服务器;没上过数据库基础课程,现在也对数据库有了基本的了解。不过这些东西其实也就学了个皮毛,想用来找工作还很不成气候,大厂好像很少有PHP的岗位,相比而言,对前端的了解感觉更多一些,于是就决定以前端岗位为目标寻找实习。

# 各公司笔试面试经历

基本上按照面试时间排序,笔试的话基本都集中在3月底和4月中上旬。

由于会有很多流水账的个人经历,所以在最前面整体写个结论,作为【太长不看版】。

  • 笔试

    笔试大都使用第三方的答题平台,nowcoder居多,少部分用acmcoder,阿里是自己的平台。所以针对自己想报的岗位,到这些平台上刷题是很好的提高笔试成绩的办法。很多公司的笔试,没有太多的岗位针对性,你报前端岗也一样要考很多其他方面的内容,还要和算法岗的同学一起做复杂的算法编程题。

    • 选择题

      大部分笔试的选择题涉及的知识面较广:CS本科的各大基础课,操作系统、数据结构、算法……我个人因为不是科班出身,也没有在平台上刷过题,所以这些内容答得都不是很好。

      还会有一些具体的实践中的问题,以及针对岗位的比较细节的、tricky的问题。前端的比如JS的语言特性,给你一大堆setTimeoutPromise,里面夹杂着console.log,问你输出结果的顺序是什么。还有类似于“Linux网络编程、IO编程中,实现xxxxx要用的是xxxx还是xxxx……”,这种没有实践经验估计是答不上来的题。

      选择题除了扩充知识面、抠细节、增加实践经验外,应该没什么太好的提升办法。

    • 编程题

      以算法题居多,就刷题吧,到答题平台上刷,到leetcode刷。

    • 问答题

      问答题的形式蛮多的,应该是根据各个招聘公司的心情来。没什么具体套路,有的就是一道编程题,有的就是把选择题展开来说,有的就是让你论述一些东西。

  • 面试

    大厂的技术类面试一般都是一面、二面、HR面这种形式。一二面是技术面,问技术相关的问题,可能还会有现场撸代码。HR 面就是 HR 进行面试,考察个人表达能力和一些规划、经历的问题,主要考察软实力。

    当然每个厂的形式会有区别,比如阿里面个七八轮还要交叉面也是可能的,比如携程只有一次面试。

    • 技术一面

      一面一般以考察基础知识为主。以前端为例,常问的问题就那么些,比如我几乎在每个厂的一面都被问到了“如何使用 CSS 实现垂直水平居中”、“跨域请求的方式”、“GET 和 POST 请求有什么异同”……

      在网上搜一下前端面试题就有很多,看一看总没坏处。

      另外就是建议系统地梳理一下前端的内容,基础的 HTML/CSS/JS/HTTP,深入一些的 Web API / DOM 之类的,以及具体岗位涉及图像和音视频流的等等。这些内容到 MDN 上挨个栏目看一遍是极好的,如果能全部看完,即便只是大致了解,问什么都能聊上来,所有的一面应该都不是问题。(我个人就是这么做的,并且仍在进行中……内容真的多呀)

      一面面试官基本都是入职没几年的普通员工,如果像我这样是研究生找实习的话,我估计面试官是同龄人也是很有可能的。所以一面压力一般都比较小,只要基础问题能答上来,有一些哪怕记得不太准,和面试官瞎聊聊啊、讨论讨论啊都可以,想通过还是比较容易的。

    • 技术二面

      二面除了技术基础外,会有很多深入的问题。比如会问一些考察数学、逻辑能力的问题,会有现场撸代码的问题,会有一些需要实践经验的问题,会根据你简历中的内容问针对性的细节问题。

      二面面试官基本都是技术leader,经验丰富,气场上就能明显感觉出来和一面面试官不在一个 level。经常还会根据你的回答,变换不同的角度问问题。

      所以基础扎实是一方面,实践经验也会比较重要。然后就是面试经验了,至少对我来说,有经验和没经验差距还是蛮大的。所以不用慌,只要基础牢靠,正常交流正常发挥就好了。

    • HR 面

      HR 面基本就和专业技能完全无关了,考察的是表达能力、未来规划、经历总结、抗压能力等等。“讲一件你人生中最成功 / 最失败的经历”,“面对压力的时候你是怎么做的”,“你对自己未来的职业规划是怎么样的”,这类的问题。

      就我个人而言,没有预先准备过,现场被直接问到,还是会有点慌乱的。毕竟现场组织语言难度还是有的,作为一个普通工科男生来说,急智确实没有那么多。所以最好在网上搜一下相关问题,有针对性地提前准备一下相应的内容。


# 阿里 Alibaba

# 概况 Alibaba

阿里的笔试系统是自己的,不像别的厂都会用nowcoder或者acmcoder。经历过两次笔试,第一次是单纯的一个共享的文字编辑器,考官给留了几道题,让我读了一下没什么特别问题他就跑了,后来快结束的时候回来了一下,然后到时间自动收卷了。第二次是类似别的厂的统一笔试,选择和编程题。

面试经历过两次电话面试,一次视频面试,除了问基础知识,还会问一些进阶性的问题,比如“如果让你设计一个XXX组件你要怎么设计”这样的问题。

听说阿里面个七八次都算正常,那我算挂得很早的了,所以其实了解的不多。

# 经历 Alibaba

阿里的实习生招聘批次好像挺多的,我前前后后投了三次也被 reject 了三次。

第一次是 3 月初的内推批。我在 2 月底收到了阿里的邮件,大体内容就是说“我们通过 github 发现了你,邀请你来参加阿里巴巴的面试”。因为当时正准备考虑找实习的事,所以就乐呵呵地回了邮件。其实这个邮件大概就是在 github 上爬出来了你的个人信息,然后给你发了个邮件,没什么实际价值,回邮件之后就是换回来了一个不认识的人的内部推荐。

顺着流程做了素质测评和编程测验。编程测验可以理解为一种摸底性质的笔试,不是很难。阿里好像是唯一一个把素质测评放在第一个流程的,别的厂都是笔试面试比较顺利之后才会让做素质测评的。昨晚之后,由于内推批不需要笔试,直接就来电话面试。

第一个电话大概是3月4日来的,说是要做“简历评估”。我感觉和面试没什么区别,问了一些常见的问题和技术基础问题。因为是第一个面试,还没有针对面试做任何的准备,所以有些问题没怎么答上来,但是当时自己我感觉还可以。

第二个电话3月6日,换了个部门,整体和上一个电话差不多,技术问题没答上来的更多一些。还有一个区别在于面试官是照着我简历上的东西在问,因为我提供了项目网站的地址,他是打开了我的网站在问针对性的问题。比如上面提到的“你为什么选择使用这个组件而不是XXX”、“如果让你自己设计一个XXX组件你要怎么设计”之类的问题,没有准备过,当时手边也没纸笔单纯用脑袋想的,思路很乱,确实答得不好。几天后去查,发现这一次应聘凉凉,但是阿里的系统里显示的是在“简历评估”环节就挂了,我也不知道这两次电话是什么意思。

第二次是3月中下旬,我发现还能再投自主投递批,于是又投了一次。这一次由于之前做过了素质测评和编程测验,直接就到了笔试环节,HR打电话约了个时间参加笔试。笔试系统就是阿里自己的东西,感觉是个还没开发完成的东西,就是一个共享的编辑器,左边写代码,右边可以聊天,也不用开摄像头什么的。考官在左边留了几道题,然后问我有什么不明白的地方先问,一会儿他不会一直在这看,之后就看到考官离开了房间。快结束之前他又回来了,看了看我写的,说了点问题又走了。2个小时时间到,窗口就自动关闭了。

题目的话感觉就是随手打的问题,很多描述不太准确详细,当时扫一眼还好,后来详细写的时候就不太明确了。答得也确实一般吧,毕竟这是我第一次笔试,还是没什么准备。然后不出所料又挂了。其实题目都没描述清楚,出得挺随意的,但是现在想来,要比其他厂的那种统一笔试的算法编程题有意思一些。反正题目也不严谨,感觉没什么可保密的,我就放这里吧:

1.写一个自定义事件系统,实现on、off、emit API,要求可以同时触发多个事件,也可同时取消多个事件
2.使用requestAnimationFrame实现类似setInterval的计时器
3.用react,vue或angular完成自定义select,要求支持前端搜索,点击时回调
4.查找一段文本每处匹配字符串的位置
5.找出1000以内能被7整除的所有奇数的平方和,用纯函数式(FB)的方式写

面试笔试的第一次都给阿里了,谁让他们是批次最早的呢。虽然都挂了,但是也让我深刻认识到,什么都不准备是不行的!在阿里挂了两次之后,我才专门去搜一些面试题看,去补充一些知识点,才算是正式开始为了实习招聘而做准备。

后来5月初我发现阿里居然又能投了,于是又投了一次。先是5月9日统一的笔试,这回阿里的笔试系统完善了很多,有点类似于nowcoder/acmcoder了。然后5月底的时候,视频初面。这时候的我已经经历了挺多场面试的了,所以感觉发挥还蛮正常的。不过前几天查了下发现还是给我挂了,可能是因为看到我之前已经被挂了两次了吧23333。有了实习招聘连挂三次的经历,我估计以后校招想找阿里也进不去了吧。


# 网易 Netease

# 概况 Netease

网易的笔试用的是nowcoder,真题已经放出 => 传送门。总体来说不难,大神同学都说“网易这是放水啊”。

网易的面试在杭州现场面,路费有一定额度的报销。如果面试顺利的话,当天连面三场,一面二面HR面,一天就能走完面试流程。面试结束后大概两个星期就会收到结果,效率还是可以的。

一面和HR面都比较常规,就是常见的一些问题。二面会有一些灵活的问题,在下面的经历中详细介绍。总体来说,网易的面试官都挺nice的。虽然我二面表现不佳,但还是顺利拿到了人生中第一个offer~(虽然是实习的)

# 经历 Netease

在折腾阿里的招聘期间,也在投其他的公司,我从同学那搞到了网易的内推。其实最后综合看来,内推的作用不是特别大,还是要看硬实力。

# 笔试

网易的笔试是3月27日,算是比较早的,用的是nowcoder统一笔试。网易的编程题算是比较简单的,和同学交流了一下,各个岗位的编程题差不太多,都不算难。像我这种没什么算法编程经历的,虽然多费了不少时间但还是AC了。(我把题发给大神同学瞅了眼,基本上读完题秒答……自己还是太菜,做题的时候想了挺久的吧)

笔试题就不在这放了,我看了一下nowcoder已经把真题放出来了,有兴趣的同学自己去看吧 => 传送门

笔试通过之后几天,会发送素质测评链接,进行素质测评,之后就进入面试环节。我投的是网易云音乐部门,4月10日收到面试通知,4月15日到杭州网易大厦面试。后来腾讯也通知4月15日在西安面试,鉴于腾讯时间能改,最后还是先去了网易,这个后面讲腾讯的时候再细说。

一开始的面试通知邮件给定的面试时间是下午5点,当天中午12点给我电话问我能不能改到下午2点……中午约好了和同学吃饭,网易大厦远得一批,最后约的是下午3点。从黄龙体育场那边坐公交,转了一趟车,终于到了网易大厦附近。门口保安检查面试通知邮件放行,到前台扫码签到等待面试。面试一共三场,一面二面HR面,都在大厅进行。我面试的时候人已经不多了,像什么C++岗都已经没人了。

# 一面

一面3:20开始,就是问一些基础知识,HTML+CSS+JS常规的那些问题。看过常见的面试题,复习过相关基础知识的,都没什么大问题。其实面多一两家之后,就会发现一面基本上就翻来覆去那些问题,都是在网上能搜到的,好好准备过的话基本都很容易过。最多再问一点简历上相关的问题,比如你说你熟悉Vue就问Vue相关的,熟悉React就问React相关的。网易应该是用React不用Vue,一面的小哥看我简历写的Vue,但是他好像不太熟悉,所以是一边搜Vue的文档一边问我相关的问题。面了大概四五十分钟吧,聊得还OK,有一些没记准的问题也没有太为难我。

# 二面

二面等到5:10才开始,大厅基本都没人了,在我边上还有一个面前端的,我俩应该是今天最后两个二面的了。面试官应该是个技术Leader,已经面了一天了状态不太好,一直在捂着头。会问一些比较灵活的问题,现场让随手写写代码分析问题。头一次现场面试写代码,脑子基本是空的。大概问了这么几个问题吧:

1.写一个JS的DeepClone。(“一面问过了?好那换一个。”一面确实问了这个,不过一面的时候就是问思路,没让写代码,我也就随便说了说,让我写的话我还真没好好想过😅)

2.如何实现这样一个函数,输入一个对象a,返回一个对象b:

function func(a) {
  // ....
}
var a = {
  test: 1
}
var b = func(a)
// b拥有a的所有属性
a.test === b.test // true
// a的属性改变时,b的相应属性也跟着改变
a.test = 2
a.test === b.test // true
// a添加属性时,b中也添加相应属性
a.test2 = 'test'
a.test2 === b.test2 // true
// b的属性进行赋值之后,就不再随着a的相应属性变化
b.test = 3
a.test === b.test // false

一开始思路跑偏了,想着遍历a的属性了。后来面试官提醒了一下,其实本质就是JS的原型,然后秒反应过来,其实就是一句 b = Object.create(a)

然后又问,如果环境不支持Object.create()怎么办?

啊,我真没看过Object.create()的polyfill,一时反应不过来,只好瞎说ES5的继承记不住了。(其实很简单的,但是面试的时候脑子真的抽抽了……MDN上面都有写,囧 => 传送门

好在面试官也没再为难我,下一个问题。

3.有两个一毛一样的球,现在有100层楼,要测试这种球在第几层楼落下会摔碎。球如果没摔碎就没影响,如果摔碎了就不能再用了。设计一种方案,使得测试的平均次数最少。

这个题好像是个经典的面试题,我当时面试的时候,听到这个题的反应就是:这题我绝逼很久以前看到过,然而已经忘光了……

然后就一阵瞎踏马答,最后在面试官反复“手把手提示”之下,分析到求x + 100 / x的导数,就差直接告诉我答案了……然而我当时已经心中阵阵绝望,甚至连导数怎么求都·忘·了😅😅😅。(真对不起高中数学老师……)

面试官也一阵无奈,说现在学生数学功底都去哪了,我问了一下午,就一个人自己想到求导数了。

本来还想进阶问题“如果有3个球又怎么办”,这个问题他就让我回去自己好好想想吧。

这个问题搜一下很容易出来,确实是个经典面试题,我这里就不细说了(没脸说啊哈哈哈)。提供一个博主的传送门好了 => 传送门

4.实现一个类似百度的搜索框,就是一边输入内容,一边在一个下拉列表显示搜索结果,需要考虑哪些问题?

这个问题如果没特意看过的话,就很考察实际项目经验和解决问题能力了。这个问题网上肯定有,不过我确实没看过。

问得细节比较具体,我大致回忆一下:

  • 首先肯定是要有对输入事件的 throttle
  • 监听什么事件触发搜索?我回答 input或者 keyup。面试官问:那复制粘贴能触发 input / keyup 吗?这个……我觉得可以吧,但是听面试官的意思是不行。(我忘了面试官说的是哪个不行了,但是我自己回来试了一下好像两个都可以呀,是不是面试官记错了囧)
  • ajax 返回的数据不能保证顺序,如何判断这个响应是否应该被渲染?换句话说,如果某个请求已经返回结果并渲染,此时之前的某个请求才返回结果,如何避免该结果被渲染?我当时的想法是给每个请求加一个递增的id,如果当前返回响应的id小于已经渲染的响应id,则不渲染。回来之后又想了一下,是不是可以维护一个请求的队列,每当一个结果返回时,把队列中之前的请求都reject掉。

只能回忆起来这几个问题了,可能有漏下的但是想不起来了。

然后就是问我有什么问题想问的,开始聊一些别的。

问了下部门的构成。听着大概意思是说,网易云音乐的前端部门是一个大部门,各种云音乐前端相关的工作都会做,好像并没有太具体的分工,哪边有空哪边上。不知道具体是不是这样,大概记得是这个了,随便说说。其实这种也挺好,可以接触各种业务,而不是总顾着自己的一小块。

又问了下有没有什么开源项目,因为BAT、饿了么之类的前端团队,近年来在开源社区都很活跃。答曰暂时没有,但是是以后的发展方向,虽然可能对公司效益方面短期内收益不大,但是对团队的技术声望等方面还是很重要的。

然后和面试官开了开玩笑聊了聊天,说面试官看起来很年轻发际线很健康,但是很厉害的样子。笑答曰其实我岁数很大啦,可能因为今天把胡子刮了吧。但是讲道理这个面试官看起来真的很年轻啊,感觉最多30出头的样子,说他20多岁我也是信的😀。

聊起来之后,面试官也就和我直说,我今天二面的表现确实不好,不太符合简历上所写的高GPA学生应有的状态(其实我也就本科GPA还可以,硕士的真是没法看……)。不过也不是说我这次就没机会了,面试结果是要我们一面二面HR面三个面试官的意见结合的。你这种成绩不错的,在HR面还是很有优势的,HR们就喜欢成绩好的(???😅)。

# HR面

二面结束已经晚上6点左右了。等了几分钟,得知二面通过(面试官还是很给面子啊,这样都没挂掉我,感动),就等HR面了。不过前面还有挺多人排队等,所以让我先去食堂吃饭吧。

食堂是统一的员工餐,做啥吃啥,没得选。好处是免费,所以实习生也直接进去吃就行了。味道的话还行吧,和学校食堂五五开。

Netease Dinner

吃完饭回去继续等。天色渐暗,大厅已经逐渐没人了,别的面试官都下班了(大周末的其实应该都算加班吧),只剩下四个HR在加班面试。

Netease HR

最后HR面晚上快8点才开始,也比较常规,问一些general的问题。感觉HR和我年纪差不多大,聊起来也没什么压力,随便扯扯就好。而且我也是真真的最后一个人了,HR也不想多问了吧。最后应该不到40分钟就结束了,但也已经快9点了啊……

# offer

网易是我第一次现场面试,总体感觉还可以,但是在二面现场回答一些需要灵活思考的问题的时候,经验不足,反应不足,表现得不是很好……其实还是基本功不扎实的缘故。不过结合三场面试的情况,感觉拿到人生第一个offer还是很有希望的。后来面试结束的第九天(4月24日),顺利收到了网易的实习生offer~🎉(当时还吐槽说网易好慢呀,现在看来,网易的效率比腾讯不知道高到哪里去了23333)

另外关于网易的面试不得不吐槽的点:

百度阿里小米是远程面试,腾讯携程是派出招聘组巡游全国几大城市,就近现场面试。只有网易是要求都必须到杭州面试(我报的几个大厂只有网易这样,听说别的公司好像也有类似的)。

费用报销问题,只报销路费不报销住宿,而且路费虽然说按照高铁二等座给报,但是最高限额是600元。拜托,西安到杭州高铁二等座,单程就600+了好吗!西安的尚且如此,更远的那些地方……网易的面试安排,对较远的外地同学来说是相当不友好了。路费报销需要邮寄火车票票根或者提供电子机票,由于我单程就达到报销限额,临走的时候把单程的车票现场就给HR了,免去了回去之后邮寄的麻烦。

还有一点是,网易网易游戏是分开招聘的,我看报网易游戏的同学就可以远程面试。既然网易游戏可以远程面试,为什么其他部门就不行呢?😤再者说,派招聘组到各地面试,应该要比让实习生集中到杭州面试再报销的方式省钱吧……

哎,总而言之,跑杭州来回三天(4.14-16):周六高铁去杭州,大晚上才到酒店;周日下午面试一直面到晚上9点才出网易大厦,回酒店就更晚了;周一还要赶一大早的高铁回西安。为了找同学方便住在浙大那边,但是只有周日中午和浙大的同学吃了个饭,别提逛杭州了,几乎没有时间做别的事。连续晚睡早起加上旅途劳顿,回来就感冒了好几天,再加上报销还不到一半……还因为没有参加周日大组会而被罚写检查(我请假了!!)………体验极差……😐……

当然还是要感谢亲爱的辉哥@comzyh帮我订酒店带我吃东西,可惜暑假不能去杭州继续面基啦~


# 腾讯 Tencent

# 概况 Tencent

腾讯笔试用nowcoder,题目还是偏难的,我这种算法渣,三道编程题全都没答出来。不过腾讯无论笔试多少分,都可以参加面试,笔试成绩供面试官参考(校园宣讲会上HR说的),所以不用很慌。可能前端岗对笔试要求不是特别高吧,我确实答得很烂,但是后续的面试过程中完全没提过笔试的事。

笔试结束后,会发送在线素质测评的链接,进行素质测评。

腾讯面试会派出校园招聘组,在各大城市停留几天进行现场面试,可以选择就近的城市前往参加面试。技术类面试都是单面,共三轮,一面二面和HR面。

一面由于个人原因调整为电话面试,二面到现场面试。总体来说,一二面问的东西差不多,都是技术偏基础的问题。二面也没有现场编程,也没有什么灵活的问题。有一些答不上的问题,面试官也没有难为我,只是让我回去再好好看看这方面的内容。

HR面也都是正常的那些问题。不过说实话,腾讯的HR面给我的压力蛮大的。虽然是套路问题,但是我讲得逻辑不清楚或者有转移话题嫌疑的时候都会被继续追问。感觉是面试菜鸟面对一个很有经验的HR,慌得一批。

面试结束后39天才收到offer,等得以为自己都凉了,估计是在备胎池挂了很久吧。好在最后的结果是好的,7月份去入职~

# 经历 Tencent

腾讯一直是最喜欢的公司吧,在去年研一的时候就参加过腾讯的实习生面试了。因为没太在意,所以没有提前报名,错过了笔试,后来偶然看到了消息才说报名试试看。当时也还没有下定决心做前端,简单浏览了下各个岗位要求的技术栈,报了个运维开发岗,直接去参加了所谓“霸面”。面试官听说我还有两年才毕业直接就失去了兴趣,直说找实习生是想直接实习完来年留职的。面试官还好心劝我说,可以考虑考虑算法岗,现在比较热门(当时不懂呀,后来才知道运维岗确实没什么人愿意报)。虽然被拒了,但是感觉面试官还是很实在的😅。

今年正儿八经要找实习了,腾讯自然也是少不了的了,所以报名也很早。其实腾讯是第一个给我打电话的,3月1日就来了电话:“我们看到你报了腾讯的实习生,你大概什么时候有时间可以来实习呀?啊?暑假啊?噢,那就暑期实习再联系你吧……”然后就挂了……(我当时也是一脸黑人问号???)

后来3月14日提前批电话面试,那会儿刚面完阿里的内推批在等消息,还处于没进行面试准备的状态。部门好像是now直播,聊得马马虎虎,本来还抱有期待,不过再也没有后续消息了。提前批凉凉,就等着参加4月份正常批的笔试和面试就好了。(后来的一件事挺奇怪的,我找同学内推的时候,同学说看到我已经被内推了,是now直播的leader给推的。腾讯的内推应该是需要本人确认的,但是我完全不知道有这回事。难道是now直播的leader觉得我食之无味弃之可惜,提前批不要我,但是给我一个内推?😅)

3月19日,腾讯校招组到我们学校进行了实习生招聘宣讲会,介绍了腾讯的情况以及实习生招聘计划。具体数据记不清了,大概是2018年招2000多实习生,其中技术类占到一半,产品类20%~30%,剩下的是职能类和设计类。每年腾讯校招录取人数中,参与了腾讯暑期实习的比例大概有60%~70%。会上HR小姐姐也明确说了,腾讯的笔试没有通过不通过的说法,无论笔试多少分,都可以参加面试,笔试成绩供面试官参考

Tencent Internship (腾讯宣讲会上,他们虽然开着QQ音乐,但是是在用网易云音乐在放BGM,23333)

# 笔试

简历投递较早的同学,会在正式笔试前两周收到一个模拟笔试的邮件。3月23日是腾讯的模拟笔试,在nowcoder上进行,可以抽时间去做一下,了解一下笔试的形式。当然如果简历投得较晚就没有模拟笔试的机会了。

正式笔试在4月5日,题目难度对我来说中等偏上。毕竟不熟悉算法题,三道编程题全挂😅,菜得一匹。

笔试真题nowcoder上目前还没有,我也没太记住。总之选择题就是CS的基础知识,面很广。编程题就是算法题,多刷刷剑指offer和leetcode总没错的。这个套路适合绝大部分的大厂笔试,尤其是使用这种第三方平台的笔试。

笔试过后会发送性格评估链接,这点和网易的流程差不多。听说有的人没收到性格评估,不是太清楚具体情况。鉴于腾讯没有笔试不通过的说法,应该绝大部分人都有性格评估。这个性格评估是一段时间通用的,你在实习招聘的时候做了,之后秋招的时候就不用再做了。

# 一面

腾讯在西安的面试时间大概是4月15日~20日左右。我4月11日收到了腾讯的面试通知,4月15日下午2点在西安面试。前一天刚收到网易的面试通知,同一天在杭州……💔

腾讯的面试通知可以选“参加”、“拒绝”和“时间不合适”。如果选“时间不合适”,就会提示说:“如果有空余时间,面试官会和你另约,但是如果没空余时间,就不理你了喔~”……大概是这么个意思。(这是红果果的威胁啊😨!!)因为网易和腾讯都是比较喜欢的公司,都不想错过,所以心理斗争了好久。和一个在腾讯的同学说了这个,他看了看说可以选“时间不合适”没关系,于是我就下决定选了“时间不合适”。(我刚选完提交了,他又补了一句,“希望不要坑了你”😅)

反馈之后过了两天,4月13日,又来了一个新的面试通知:4月16日上午9点……………emmmmm😶……还是赶不回来啊!第二天去杭州往返的票都买好了,只好又一次选了“时间不合适”(我当时真的感觉要被面试官扔掉了……)

然后4月14日在去杭州的高铁上,贴心的小哥哥打电话问了我的情况(感谢没有把我直接扔掉……),跟我说会再安排的。然后15日下午,我在去网易的转车站牌等车的时候,又一个腾讯小哥哥的电话来了,和我说他去西安面试的同事时间排不开了,就打电话让他帮忙面试一下,一面就用电话面的形式进行。鉴于我当时正在去网易面的路上,就和他约好等面完网易再回电话给他。没曾想网易面试直接就面到了晚上快9点,但是都约好了,只好硬着头皮回电话过去。小哥哥体谅我一天很辛苦,跟我约了第二天面试。我只好又说第二天一早就要坐高铁,最后约了我第二天下午回西安之后再打电话给他。

终于16日下午4点半回到西安家中,进行了电话一面。

一面问的问题都是一些基础,用JS实现某个功能、ES6特性、Vue的一些特性和用法、CSS的一些常见的实现、AJAX、跨域JSONP和CORS、网页安全XSS和CSRF、HTTP协议相关等等。其实和最开始阿里的电话面试、网易的一面内容内容差不多,但是这时候的我已经准备了很久了,所以答得都还比较顺畅。

一面正经的干货是没多少,啰嗦了这么多主要想说:腾讯的面试安排还是很贴心的,如果确实时间有冲突也不要慌,即便是和其他公司面试冲突也照实说就好,会尽量帮你安排到的。

# 二面

一面之后当天晚上就收到了二面的面试通知,第二天17日下午现场面试。

二面前半部分的问题,其实有好多和一面重复的,我就又答了一遍。后面问到HTTP协议的部分,尤其缓存部分的问题比较细。我这部分看得太少,答不太出来,面试官就让我趁这两个月回去好好看看这部分,你之后来实习还是会用到这部分内容的(我之前的文章HTTP Caching就是在梳理这部分内容)。后来面试官还让我加了他微信,说有什么不懂的问题随时和他联系

实话说,我觉得我在腾讯的二面被放水了,完全没有难为我。而且从面试官言语间透露出的意思,简直就是在和我说:“你面试肯定能通过,准备来实习吧。”😅😅😅

后来听说大概是因为腾讯今年扩招了,周围同学的通过率都很高。

# HR面

二面结束后第二天18号收到了HR面通知,19号下午面试。

HR面的面试官感觉也是一个leader级别的,和之前网易HR面的面试官完全不是一个气场。

进了房间,面试官就让我坐下,说她已经坐了一天了,站着面试我就行了。于是整个面试过程中,HR都在房间里走来走去,偶尔到桌边操作下电脑,有时候都走到我视野之外去了。我坐在房间里鸭梨山大😅。

然后就是问一些常规问题:“最成功的事是什么”、“最宝贵的经历是什么”、“最失败的事是什么”、“如果再让你做你会怎么做”、“面对压力你是怎么做的”……HR觉得我没答到点子上,没有说出她想知道的东西,就会让我再说。然后可能发现我还是答不到她想听到的东西,勉为其难到下个问题。感觉这个HR是个“老HR”了,自己的语言组织能力还有待提高。

HR面结束之后,就结束了腾讯的所有面试流程了。

几天后,就发现在面试系统的状态,从“HR面”,变成了“你已经完成所有面试环节,请等待下一步通知”。然后,这个状态就维持了将近40天,面试结果如石沉大海,没有任何消息……

# offer

我在面试完腾讯之后,没多久就接到了网易的offer。自我感觉腾讯面试表现还蛮OK的,加上二面面试官透露出来的意思,我觉得腾讯应该也没问题,于是我就放弃了网易的offer。

等到四月底五月初,已经陆陆续续很多同学接到腾讯的offer、填写了入职调查了,有的同学5月底6月初就准备入职了。我这边迟迟没有消息,等得我都快绝望了,已经在考虑要不要厚着脸皮回去和网易说,我能不能再把offer接回来……😅于是我又去参加了携程和小米的面试,具体情况后面再细说。

等到5月22日的时候,收到一条微信好友请求,说是我入职腾讯之后负责带我的导师PJChen。PJ说是BOSS让他加我,然后加上BOSS拉了我们三个人的一个小群,BOSS听说我还没拿到offer,就说去催HR发offer,感觉总算是有着落了。后来5月28日接到HR电话,核实了一下个人信息,之后终于收到了正式的邮件offer啦🎉

后续的入职调查和相关流程就不细说啦,腾讯有安排几个集中入职日期,也可以自行填写其他的入职日期。选择非集中入职日期的话,有些手续需要自己额外办理。我考虑到中期答辩快到了,想等到中期答辩完成之后再去实习,省得再请假回学校,所以最后选择了7月中上旬入职。还没有收到最后的入职确认邮件,正在等待当中~

有一点得提一下,我在收到一面面试通知的时候,发现自己的岗位变成了“后台开发”,但是我由始至终投的都是“前端开发”,听说今年腾讯云比较缺人,可能是被调岗了。我当时问了一下一面的面试官,他说原本的面试官看到我选了面试时间不合适,再一看我投的是前端,所以才把我的简历给了他们这边,所以一二面面试官都是SNG的手Q部门的前端方向的。但是招聘系统的岗位一直没调整过来,我在后续的流程中,在招聘系统里全都是标的“后台开发”,HR面的时候HR也看到我是后台开发的,还奇怪我为什么说自己是前端的。直到我最后被录取,在腾讯的同学帮我查的时候,查到的也还是被腾讯云的后台开发岗录取了。其实我最终走的是SNG手Q的前端开发岗,不知道这是不是导致我offer来得这么晚的原因。

# 百度 Baidu

# 概况 Baidu

个人对百度无感,毕竟百度搜索体验越来越差,负面新闻不断,所以我实习还是工作都不考虑百度。不过还是要投一下试试,积累一下面试经验,看看各厂的模式也是好的。

可能我确实对百度无感,百度也对我无感,顺利把我拒了。

# 经历 Baidu

# 笔试

百度的笔试选择题不知道了,编程题当时记下来了。

第一题就是一个DOM相关的题,HTML里面有一个表格,每一行<tr>是一条记录,每条记录就三个字段,每个字段在一个<td>里。要求完成一个sort(type, order)函数,根据type字段名,对表格进行排序,order可能为asc正序或者desc倒序。

大概是这个样子:

<table>
  <thead>
    <tr><th>id</th><th>price</th><th>sales</th></tr>
  </thead>
  <tbody id="jsList">
    <tr><td>1</td><td>10.0</td><td>800</td></tr>
    <tr><td>2</td><td>30.0</td><td>600</td></tr>
    <tr><td>3</td><td>20.5</td><td>700</td></tr>
    <tr><td>4</td><td>40.5</td><td>500</td></tr>
    <tr><td>5</td><td>60.5</td><td>300</td></tr>
    <tr><td>6</td><td>50.0</td><td>400</td></tr>
    <tr><td>7</td><td>70.0</td><td>200</td></tr>
    <tr><td>8</td><td>80.5</td><td>100</td></tr>
  </tbody>
</table>

然后传入sort('price', 'desc'),就要把这个表格按照price倒序进行排序,基本就是进行DOM操作,牛逼一点自己写一个虚拟DOM也可以吧。

题是挺简单,但是不知道为啥就是跑不过,也不知道这个在线答题系统是怎么检查DOM的。(说实话,百度的笔试是我唯一一个见到要做DOM操作的)

第二题有点意思,大概是这样:

字符串A中只包含0和1,字符串B中只包含0和1和?
B中的?代表既可以是0也可以是1
输入字符串A, B
输出A中含有多少种可能的B

例如

A = '00010001'
B = '??'

那么B可能为00, 01, 10, 11,但A中只包含00, 01, 10,所以输出3

这题感觉还好,我是用正则的方式解决的。

百度的笔试其实还不错,然后面试是某天下午约的视频面试,如果顺利的话就是一下午全面完。

# 一面

一面是个普通员工吧,微胖戴眼镜,人看起来很精神,感觉很好相处。他在的地方挺亮堂的,不过周围应该是很多人在面试,有点吵。

问了一些JS、CSS相关的基础题,还有一些比如:for (i = 0; i++ < 5;)循环出来i最后等于多少。

当时答得应该都还凑合,一些不清不楚的也和他瞎聊聊过去了。估计他也觉得我挺能瞎聊的,就给我放过了。

然后有个HR打电话说二面面试官比较忙,让我等一个小时再继续面,结果我回去等了半个小时就让我去二面了。

# 二面

二面应该是个高级一点的人物,穿着睡衣在一个昏暗的房间里面试,大概是在酒店的房间。然后面试的状态感觉很不正式,总之感觉很差。

问题方面还是问JS、CSS相关的东西,比较难一些,很多我不太熟悉。

  • 左图右文,用CSS怎么实现(好像是问flex box,具体记不清了,印象中有点麻烦,相关内容我不是很熟)
  • 让你实现一个这样的视频面试系统要怎么写(问的是WebRTC相关的东西,我当时确实完全不了解,没接触过)
  • 关于JS的事件队列和异步API(当时也是还没好好看过,哈哈)
  • ……

还有一些记不住了,总之很多问题答得不好。面试的最后直接告诉我:“这次的面试结果是fail的,希望你回去多结合V8的源码学一下JS”(虽然我也不知道为啥突然会提到V8源码……)。

于是二面就挂了,有点不甘心,确实问的很多东西还不了解。不过想了一下反正自己也看百度不顺眼,看二面这个面试官也不顺眼,算了算了。

# 携程 Ctrip

# 概况 Ctrip

线上笔试,然后来西安现场面试。(你看携程小公司都知道来西安现场面试,网易校招组能不能学学……)

总体来说比较简单,笔试很简单,面试也很简单并且只有一面。

应该是顺利过了,不过我因为懒得写测评所以没有收到offer。

# 经历 Ctrip

# 笔试

携程的笔试是做过的最简单的,没有之一。题目确实很“前端”,基本就是前端相关的各种基础知识。

编程题不是什么花里胡哨的算法题,而是对字符串、JS对象进行的各种处理和操作。没什么难度,主要考察各种情况是否考虑全面、有异常值时是否能正确处理。在实际写网页代码的时候,是很常见的一些情景,比如处理用户输入、处理后台返回的数据等等。

# 面试

到西安的某酒店面试,规模比较小,也只有一面就结束了。

问的问题也都没什么难的,印象比较深的是让我手写了一个冒泡排序,感觉没什么意义啊。

业务方面的话是机票酒店方面,说是没有特别纯前端的岗位,可能会偏后端一些,问我做后端的话愿不愿意。然后我问了一下他们技术栈,说是在用ASP,正准备逐步转Java。(emmmm……我听完其实就基本失去兴趣了)

面试比较轻松,过了几天有个声音超好听的HR小哥哥来电话,聊了一下实习待遇的问题,然后说地址发到邮箱了,让我答一下在线测评。

其实面试的时候了解完技术栈和岗位我就没什么兴趣了,加上当时网易和腾讯也差不多了,所以测评也没填,offer自然也是没有拿到。

# 小米 MI

# 概况 MI

小米这个很神奇,笔试很早就做了,但是一直没有任何消息。

直到一两个月后的某一天,才突然接到了面试电话。部门是MIUI国际,前端居然是个女Leader,聊起来感觉还挺逗的。在问她为啥这么晚面试的时候,“HR其实很早就发了通知,结果邮件忘了看了。前几天HR那边催面试结果,才去邮箱里把很早之前的邮件翻了出来”哈哈哈哈哈哈。

# 经历 MI

# 一面

面试前先是接到了一个女声电话,我还以为是HR,约了一下面试时间。

一面是一个小哥哥,说他BOSS让他来面一下我。

问的都是前端的正常基础,之前的各个地方面试基本都问到过,而且也问得不深。问得不深是个什么概念呢:

  • 面试官:“跨域问题有什么解决方法”
  • 我:“jsonp和cors,(正准备展开讲……)”
  • 面试官:“好的,下一个问题。”
  • 我:“???不用具体说一下吗?”
  • 面试官:“噢不用,就是看一下你了解不。那你具体说一下吧。”
  • ………………😅

总而言之感觉聊得挺逗的。

# 二面

二面又是最开始给我打电话的女声,我还以为到了HR面,结果一问还是技术面???

然后我就问“难道你就是一面面试官的BOSS吗?” - “嗯是呀”

女Leader感觉是挺少见的哈。

二面也没问什么难的东西,有些还和一面是重复的,我就淡然答完了。

后面聊了聊业务方面的东西,所在组是MIUI国际的前端组,好像说是给小米MIUI内置应用写一些H5页面之类的。

面完之后还加了Leader的微信,于是朋友圈多了一个爱撸猫的程序媛大姥😄

# 京东、字节跳动、爱奇艺、华为等

这几个只是投了,没有好好准备,基本上笔试都没做。

京东、爱奇艺和华为,好像是笔试和其它的笔试冲突了、或者和我自己的事情冲突了。有的笔试就上去看了一眼,基本没有答。题目难度应该都是中等,并不难。

字节跳动的话,早就听同学说笔试特别难,都是算法题。作为一个前端渣,leetcode、剑指offer什么的都没刷过,所以就不抱什么希望。笔试的时候上去看了一眼,好几道编程题,读完题都没什么思路,直接就把笔试关了……😅

笔试都没做,面试自然也是没有的,略过略过。

# 后记

最终的结果是去腾讯SNG实习,7月初-9月初,业务是手机QQ的游戏中心,主要是做游戏礼包推广之类的增值业务。

这篇实习经历从6月初开写,隔了有三个多月,到了9月底才把后面百度、携程、小米等的坑补上。说实话好多细节记不清了,所以前面很流水账,后面就随便写写。

现在是9月25号,已经从腾讯实习归来,开始投入到秋招的怀抱中去。导师很够意思,给我们三个月全力找工作,找完工作回来全力准备毕业。目前已经拿到了一两个意向offer,有一两个面完感觉没啥问题,还有一个两个笔试完了待面。这篇实习面经坑了这么久写了这么多,不知道后面还有没有写秋招面经的勇气😅。

从技术小白,入了码农的坑,到顺利找到实习和工作,对我帮助最大的就是@xczh。作为一个大二就去百度实习,大三就开始给研究生做技术讲座的大牛,在技术方面他给了我很多指导,而他的优秀也不断鞭策着我努力(虽然后面发现怎么努力也追不上了,主要还是自己努力不起来吧(´・ω・`))。朱大腿是我在同龄人里面最佩服的人之一,在这里着重感谢一下😄。