<>2019腾讯校园招聘开发岗面经(一面+二面+HR面)

<>背景:


华为实习结束前两天,突然接到腾讯的邮件,邀请我现场面试,但面试前需要我做道题,这道题的回答内容将作为一面时的沟通话题(当时整个人是懵的,咋还有这操作)。暑期实习投的腾讯是安卓岗,华为实习期间是软件开发岗,最后拿到腾讯offer的岗位是专项技术测试开发(我以为和软件测试岗一样,看到题目以及最后和面试官的沟通才发现这根本就是开发,为啥呢?慢慢往下看)

<>初面前的题目


一共有四道题,任选其一进行回答。第一题是有关语音识别的,不会;第二题是有关云计算服务的,不会;第四题是有关安卓的,本人做过一些安卓项目,对安卓比较熟悉,但早就不想走这个方向了,因此也放弃;第三题是有关后台开发和架构的,这是我喜欢的,于是选择了这道题(每个题目都是实际工程中需要解决的问题,给答题者非常大的发挥空间,做完题非常期待腾讯大佬当面指点我一下)。

<>题目及解答思路(题目太长,只写我选择的题目):

一、题目:现在后台开发可选择语言很多,从历史悠久的PHP到新兴的GO;可选择框架更多,Python下常用的就有Django、Tornado等等。
至于部署方案,从apache、nginx时代到容器时代,更是发生了天翻地覆的变化。
另外,一个后台系统离不开数据库存储。从上世纪70年代起,关系型数据库一直独占鳌头,但NoSQL的出现结束了前者一枝独秀的局面。比如,MongoDB、Redis、ElasticSearch都是近几年DB引擎用户量排名TOP
10的常客,在不同应用场景下发挥着独特的价值。 那么,你所开发的后台系统,选择该种框架、部署方案和数据库的根据是什么呢?
如果要求这个系统实现1000次/秒并发访问+100G/天数据库存储,你会考虑何种优化方案,或者何种技术选择呢?


二:我的思路:通过审题,首先这是一个高并发、高数据量的系统,这两个特点是选择语言、数据库的重要依据。我从数据库选择(选了MongoDB)、并发模型选择(选了基于go的GSP模型)、通信框架选择(选了grpc)和部署(选择了Nginx)四个方面进行了分析和解答;其次,关于优化方案,我认为提高效率,能复用的尽量多复用就是优化,我的方案是使用go的协程池进行优化。(看完所有题目以及提交完我的答案后,对这个岗位和面试充满了好奇和期待,第二天就收到了面试地点和时间的通知,开心又紧张)

<>一面

下午4.30到了面试九点,但前面还有好多人。5.15进去了。
一面面试官很和蔼,喝了点水,边喝边问了问我的家乡,明显感觉不紧张了。他说我们开始吧。

面试官:介绍下你自己

我:请问有时间限制么?

面试官:我面了一下午,你是最后一个了,你尽管说,我们就像聊天一样。
我:省略一堆。。。(一直在讲自己做过的项目)

面试官:你在这个项目中遇到的印象最深刻的问题是什么?
我:项目最后有一个数据去燥处理的过程,我们把数据进行了两次取平均值。

面试官:为什么要这么做?

我:当时为了效果好,临时想了这个办法,取一次平均效果不好就继续取了一次。(说了一下具体怎么做的)

面试官:这么做好像不太合理啊。(看到面试官有点皱眉,赶紧继续说)

我:其实还有别的算法,还没来得及实现。

面试官:什么算法?

我:设两个阙值,设定上下限(详细说了下该怎么做)

面试官:可以这么做,但还有什么算法,你再想想

我:用KNN

面试官:机器学习里的也可以用,但太麻烦了,你再想想,还有什么算法(这时候我整个人紧张到爆炸)

我:那我大致说一个,但不知道靠谱不(面试官安慰我说别紧张,慢慢说)。
先清洗数据为乱序,把数据分成不同的部分,对于每部分来说,找到数据的峰值,对这个峰值的两边其他数据进行排序,离这个峰值距离很远的地方就去掉。(在纸上大概画了画)

面试官:你所表达的这个方法,其实就是我一开始就想到的,找峰值就是为了呈现数据满足正态分布。我一直在等你说这个答案。
面试官:我看你简历里挺多东西的,说一个你想和我讨论的东西

我:我研究生方向是区块链,您感兴趣么?

面试官:区块链和深度学习是我比较持中立态度的,这样吧,我也了解过但不是很懂,你想办法让我明白这到底是什么。

我:那我拿一个区块链平台——以太坊的架构给您说(在纸上bla~bla笔划了一堆)

面试官:那我差不多懂了,具体细节我得找些书来看学习啦。那你总结下区块链的特点及核心

我:。。。(总结了几个点就不具体说了)

面试官:你都擅长什么语言?说一下其特点

我:以前搞安卓用的java,比较熟悉。但我对后台架构感兴趣,而go语言天生支持并发,恰好区块链底层需要用go语言,最近就一直在学习go语言。go语言您了解么?

面试官:我们的云平台百分之40以上都是用go写的(撞枪口上了,我觉得他此时内心只想对我说句“呵呵”,哈哈哈),那你解释下他怎么天生支持并发的。


我:主要体现在go中的协程以及底层的调度原理。。。(和面试官讨论了好久,面试官还给我讲了他们看中go其实主要原因是他对protobuf支持的比其他语言好,中间在一个地方提到了grpc的框架,于是继续往下问了)

面试官:为什么grpc效率高?

我:第一次听说grpc是参加hackathon比赛时候接触的,区块链底层通信也有用到这个框架,他基于tcp/ip层。。。(说了一堆)

面试官:讲一下你在hackathon比赛时候做的项目。

我:。。。(说了一堆)

面试官:你们用到了GAN,你对GAN有了解么?

我:不会强化学习相关知识

面试官:好吧,你要是知道我们又有的聊了。那你手写个排序算法,冒泡写的太多,想个别的写。

我:。。。(写了快排,我的字迹一塌糊涂,表现特别不好,写完后面试官说其实主要想看看你代码风格)

面试官:操作系统你了解多少?用一个你熟悉的领域来解释操作系统里的一个知识点。

我:MongoDB里用到了mmap ,内存映射文件(在纸上画了画,这时候给自己挖了个坑)

面试官:你提到MongoDB,你说下为什么MongoDB查询快?

我:因为mmap?

面试官:mmap很多数据库都用到,不是它独有的地方。

我:那我不会了,这方面不熟悉。

面试官:看你有安卓开发经验,再问你最后一个问题吧。使用相册时涉及到图片的处理,如果UI给你把界面做好了,现在你需要设计传输图片的API,你会关注哪些点?

我:。。。(说了几个点,这个问题和初面前出的关于安卓那道题差不多,实习回来之前刚好和学弟讨论过,还算有思路)

面试官:你有什么要问我么?

我:这个岗位是测试岗么?我想做开发,但和您聊下来感觉不像是测试岗。我理解的测试就是黑盒白盒测试。


面试官:这个岗我都是从开发、数据挖掘方向招人,其实就是开发,你说的测试是自动化测试。我们的业务主要是对云产品进行性能的优化和提供解决方案,刚和你聊的方向我们都有涉及。

我:感觉您什么都懂,移动开发到后台,还有数据处理。好强

面试官:现在不都讲究全栈么,哈哈哈,我做过很多方向的开发。

面试结束,一共两个多小时,感觉学到很多,酣畅淋漓。面试官太强了,总结能力表达能力各方面都让人佩服。一直在引导我,特别感谢他。

<>二面(压力面)


一面结束后当天晚上就收到了二面邀请,这次约的时间是下午两点半,我到的时候前面有五六个人在等。一面结束的那天晚上和第二天早上一直在想一面回答的不好的地方,尤其操作系统很薄弱,临时恶补了几个小时,怕二面被问到。

一进来面试官就拿了张白纸和笔
面试官:我给你出两道题,40分钟内完成,开始计时
我此刻非常懵,也太干脆了,上来就出题,我都没说话的时间,手都在出汗。

题目一:

上图中的9个五角星都是1-9中的数字,但不能重复,写出最后的答案(不用写代码)

我只能想到暴力求解,其实枚举几次就能出结果的,我绕了一圈才找到,如果大家有好的解法告诉我噢。

题目二:
从左到右一共有100张牌,牌面是不重复的值,且能看到每个牌的值是多少。A和B玩这样的游戏:每人一次拿一张牌,一个人拿完另一个人再拿,直到所有牌拿完。
条件是:1、第一次拿牌,A必须先拿,A拿完B才能拿;2、每次只能从整套牌的两头拿,不得从中间拿。
问:有没有一种策略,使得最终A拿到的牌面总值总是大于 B?如果有,该怎么拿。


我先想到的还是暴力解,枚举每一种牌面可能出现的排序状态。面试官很快阻止我说你不可能想到每一种结果,给你个提示,用数学归纳法。最后在面试官的引导下说出了答案。全程压力贼大,难怪都把二面称作压力面。后面还聊了下我学校做的项目和华为实习期的项目,以及我的兴趣和技能,面试官觉得我挺符合他们部门的标准。还了解到二面面试官是一面面试官的boss,虽然比较严厉,但还是超耐心,很nice,出门的时候长舒一口气,感觉应该稳了。面试时长差不多1个半小时。

<>HR面


不出所料,当天晚上收到了终面邀请,这次是第一场,下午两点开始。去的时候面试官还没到,也没面试的人,心里有点慌。脑子一热就去问了助理小姐姐:请问今天是HR面么?怎么没人来面试呀。小姐姐说:同学,走到终面的同学可不多噢。当时也说不出什么感觉,一个渣硕在战场上幸运的活到了最后?哈哈,皮一下。

来之前做了一些攻略,发现HR面刷人也是常事,内心还是很紧张的。面试官是一个很成熟的女士,感觉是那种御姐范的职场女强人。具体的不说了,光上问题吧。

1、简单介绍下自己。
2、你是哪里人?
3、你父母是做什么的?
4、你父母对你的事业是持怎么样的态度?
5、本科是哪个学校?
6、考研成绩是多少?排名多少?
7、你女朋友是哪个学校的?工作了还是在读研?
8、你和你女朋友谁学习好?
9、高中时期谈恋爱,你是怎么平衡学习和恋爱的?(我太实诚了,现在想想真不该提早恋的事,呜呜呜)
10、为什么喜欢深圳?以前都去过哪些城市?
11、你在华为实习做的项目是什么?
12、你在做交接的时候有没有提前预知完不成的风险?给上级提前说好了么?
13、华为的导师最后给你什么评价?
14、你说你抗压,举个例子说明一下。
15、当你碰到自己不太懂的任务,你如何处理?


全程面试官面带微笑,一双大眼睛目不转睛的看着我。脑子保持八核运转,好几次险些掉进坑里。总之这一面保持一颗坦诚的心就够了,坦诚对人对事,是对待这个世界最好的方式,世界也会温柔对你吧。

<>总结


总体感觉自己很幸运与这次的技术面试官们非常聊的来,虽然他们表面在无限的探索我的知识边界,实际一步步在引导我发散思维,也让我在总结自己的不足。三天时间里感觉自己成长了好多,作为一个渣硕能得到梦想的公司大佬的认可和指点,对我是莫大的鼓励。很幸运,很开心。

10月16号面试,18号面试结束,30号收到offer call,31号收到邮件offer。

路还很长,沉下来,慢慢走。。。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信