腾讯面试总结3

2024-06-22 22:18
文章标签 腾讯 面试 总结

本文主要是介绍腾讯面试总结3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爆炸一面一面是第一天的早上九点,记得那天很早就起床了,和同学一起去的酒店,本以为我们已经算来的早的了,到了酒店才发现整个大会议厅都是人。然后就是排队签到,没等几分钟就叫到我去一面了...一面面试官貌似一直在等我,可能我是他第一个面试的。我一进去就叫我把简历给他,然后让我自我介绍了下,不到一分钟就介绍完了(主要自己觉得没什么好介绍的),这时面试官还在看我的简历。等了一会,面试官开始问我:枪简历中哪个项目是我最熟悉,最能体现我能力的项目?然后我就把实验室做的一个项目介绍了下,包括项目背景,架构,自己负责的模块等等,在介绍过程中面试官根据我说的提了一些关于系统并发量,效率的问题。问完前面的项目之后接着问了:枪实习项目做的情况。我就啪啦啪啦的说了实习部门所做项目的一个架构图,然后他就开始针对这个架构提问题。枪怎样在增加了节点的情况下使得所有机器的负载都均衡的降低?之所以会问这个问题是因为实习那个项目架构并没有考虑这个问题,然后我就说用redis集群那种多个slot的机制或者用一致性hash的机制来解决。问完项目之后还问了两道大数据的题目:枪在10亿个整数里面找出最小的100个数?给定几百万个IP段(如10.0.0.1 -- 10.0.0.100),不重复,不交叉,现给你一个IP,求IP所在的IP 段。(不计IP段数据的预处理时间)。第一个说了两种方法,一个是用大根堆,一个是用了bitmap。第二个直接用二分,将IP转换为整数。爆炸二面一面结束后大概晚上10点左右接到二面通知,明天下午三点到酒店面试,到酒店发现人依旧爆满,不知道今年腾讯招多少个啊!!!签了到后很快就轮到我了,一看到二面面试官,就感觉面试官很随和,很有礼貌的叫我坐里面,不用给他简历,他已经有了什么的。等我坐好后,他并不是问我问题,先介绍了下他们部门是干啥的,然后问我对他们部门感兴趣不,他还说如果不感兴趣那我们就到这里。这种时候我也只能说感兴趣了~~,要不然就game over了。看我点了点头后他就说那我们开始面试吧,然后在纸上写了个函数叫我实现。枪int atoi(char *str)看到这函数,我就想这个应该主要考查各种异常处理情况吧,然后就在脑子里想了一下各种异常情况,当我准备动笔写的时候,面试官却说只考虑是正整数的情况,不考虑溢出什么的,听了这话我就纳闷了,心想这还有什么好写的啊,都不考虑异常处理,难道有什么陷阱?结果面试官又来一句我就看看你写程序的一个思路,习惯!好吧,这我才放心开始写,差不多写了五分钟,他看了之后点了点头说那我们继续。后面他大概问了三道题目:枪一个文件有100w行,每行是一个长度为20的字符串(由a-z中的字符组成),内存大小为8Mb,问重复次数最多的字符串是哪个?第一个题目我先将文件通过hash分到10个小文件中,然后用hash_map来统计各个字符串出现的重复次数。面试官说可以,然后说我现在只要找出重复次数最多的那个字符串的重复次数,不需要找出具体是哪个字符串。问我有没有更好的方法。然后我想了想,如果不要保存字符串的话,直接将每个字符串都hash到整数空间,然后进行统计次数,内存差不多是8Mb,面试官听了说可能会出现冲突的情况的一些细节。

枪一个正方形,去掉左上角的1/4后余下的图形怎样均分成4个大小,形状相同的图形?第二道题目想了一会没想出来,后面面试官提示说这次是技术面试,不是要你瞎蒙,要分析,分析可能更容易找到答案。我再想了想还是没有想法,然后面试官就说算了。回到学校后想了想,和同学讨论了下,其实很简单,当时面试时没有把思路放开啊!

枪后台服务器每分钟会给客户端发送总共约10w个心跳检查包,每个心跳包的往返时间在0-100ms之间,求每分钟内这些心跳包的八十分位数(将往返时间从小到大排序,排在第80%的数,这个中位数的概念类似)?第三道题目我特意跟面试官确认了心跳包的往返时间是在0-100ms之间,有了这个信息这个题目就好解决了,只要开大小为100的数组a来做计数器,对0-100ms之间的每个时间都统计对应的心跳包的数量。求八十分位数只需要从头遍历数组a,找到对应的第80%个位置的往返时间就ok了。上面三个问题问完之后,面试官直接就说我这边你已经通过了,说我是他今天最后一个面的了,有时间,就开始和我啪啦啪啦聊他们部门,然后要我好好考虑是去他们部门还是去我实习的公司。爆炸三面果然和二面面试官说的一样,我很快就收到了三面通知,去面三面时候明显感觉现场的人数锐减,会议厅也换成了一个小的。三面面的很轻松,就是聊人生聊理想啥的~~~爆炸总结腾讯这次面试总的来说还是比较的轻松,没遇到什么大的麻烦,也许是自己运气好,碰到的面试官人都比较的好,也许是因为我实习过吧。就是二面那道题目没有想出来有点可惜,本应该能做出来的。

一面

一面是第一天的早上九点,记得那天很早就起床了,和同学一起去的酒店,本以为我们已经算来的早的了,到了酒店才发现整个大会议厅都是人。然后就是排队签到,没等几分钟就叫到我去一面了...

一面面试官貌似一直在等我,可能我是他第一个面试的。我一进去就叫我把简历给他,然后让我自我介绍了下,不到一分钟就介绍完了(主要自己觉得没什么好介绍的),这时面试官还在看我的简历。等了一会,面试官开始问我简历中哪个项目是我最熟悉,最能体现我能力的项目?然后我就把实验室做的一个项目介绍了下,包括项目背景,架构,自己负责的模块等等,在介绍过程中面试官根据我说的提了一些关于系统并发量,效率的问题。问完前面的项目之后接着问了关于实习做的项目情况,我就啪啦啪啦的说了实习部门所做项目的一个架构图,然后他就开始针对这个架构提问题,记得问了:怎样在增加了节点的情况下使得所有机器的负载都均衡的降低?之所以会问这个问题是因为实习那个项目架构并没有考虑这个问题,然后我就说用redis集群那种多个slot的机制或者用一致性hash的机制来解决。问完项目之后还问了两道大数据的题目:

  • 在10亿个整数里面找出最小的100个数?
  • 给定几百万个IP段(如10.0.0.1 -- 10.0.0.100),不重复,不交叉,现给你一个IP,求IP所在的IP 段。(不计IP段数据的预处理时间)

第一个说了两种方法,一个是用大根堆,一个是用了bitmap。第二个直接用二分,将IP转换为整数。

二面

一面结束后大概晚上10点左右接到二面通知,明天下午三点到酒店面试,到酒店发现人依旧爆满,不知道今年腾讯招多少个啊!!!签了到后很快就轮到我了,一看到二面面试官,就感觉面试官很随和,很有礼貌的叫我坐里面,不用给他简历,他已经有了什么的。等我坐好后,他并不是问我问题,先介绍了下他们部门是干啥的,然后问我对他们部门感兴趣不,他还说如果不感兴趣那我们就到这里。这种时候我也只能说感兴趣了~~,要不然就game over了。看我点了点头后他就说那我们开始面试吧,然后在纸上写了个函数叫我实现。

int atoi(char *str)

看到这函数,我就想这个应该主要考查各种异常处理情况吧,然后就在脑子里想了一下各种异常情况,当我准备动笔写的时候,面试官却说只考虑是正整数的情况,不考虑溢出什么的,听了这话我就纳闷了,心想这还有什么好写的啊,都不考虑异常处理,难道有什么陷阱?结果面试官又来一句我就看看你写程序的一个思路,习惯!好吧,这我才放心开始写,差不多写了五分钟,他看了之后点了点头说那我们继续。后面他大概问了三道题目:

  • 一个文件有100w行,每行是一个长度为20的字符串(由a-z中的字符组成),内存大小为8Mb,问重复次数最多的字符串是哪个?
  • 一个正方形,去掉左上角的1/4后余下的图形怎样均分成4个大小,形状相同的图形?
  • 后台服务器每分钟会给客户端发送总共约10w个心跳检查包,每个心跳包的往返时间在0-100ms之间,求每分钟内这些心跳包的八十分位数(将往返时间从小到大排序,排在第80%的数,这个中位数的概念类似)?

第一个题目我先将文件通过hash分到10个小文件中,然后用hash_map来统计各个字符串出现的重复次数。面试官说可以,然后说我现在只要找出重复次数最多的那个字符串的重复次数,不需要找出具体是哪个字符串。问我有没有更好的方法。然后我想了想,如果不要保存字符串的话,直接将每个字符串都hash到整数空间,然后进行统计次数,内存差不多是8Mb,面试官听了说可能会出现冲突的情况的一些细节。

第二道题目想了一会没想出来,后面面试官提示说这次是技术面试,不是要你瞎蒙,要分析,分析可能更容易找到答案。我再想了想还是没有想法,然后面试官就说算了。回到学校后想了想,和同学讨论了下,其实很简单,当时面试时没有把思路放开啊!

 

第三道题目我特意跟面试官确认了心跳包的往返时间是在0-100ms之间,有了这个信息这个题目就好解决了,只要开大小为100的数组a来做计数器,对0-100ms之间的每个时间都统计对应的心跳包的数量。求八十分位数只需要从头遍历数组a,找到对应的第80%个位置的往返时间就ok了。

上面三个问题问完之后,面试官直接就说我这边你已经通过了,说我是他今天最后一个面的了,有时间,就开始和我啪啦啪啦聊他们部门,然后要我好好考虑是去他们部门还是去我实习的公司。

三面

果然和二面面试官说的一样,我很快就收到了三面通知,去面三面时候明显感觉现场的人数锐减,会议厅也换成了一个小的。三面面的很轻松,就是聊人生聊理想啥的~~~

 

总结

腾讯这次面试总的来说还是比较的轻松,没遇到什么大的麻烦,也许是自己运气好,碰到的面试官人都比较的好,也许是因为我实习过吧。就是二面那道题目没有想出来有点可惜,本应该能做出来的。


  4月份折腾了一个月,本来打算一周更新一次的设计模式也没有更新,完全让给了春招的实习招聘。那就总结一下我的春招吧。

  我的春招只能用一个词来形容:惨不忍睹。好几个公司的笔试都过不了,不过这不怪我啊,笔试出的题太抠细节了。唯一笔试过了的公司就是腾讯,估计是笔试的要求比较低。

  3月28日腾讯内推截止,本来有同学在腾讯可以内推的,但是估计自己的简历筛选都没有过,连一个内推的面试都没有。这样的话只能安安静静的按照春招的流程来了。

  4月3日笔试,不得不吐槽,虽然腾讯公司用C++比较多,但是也招Java岗啊,我投的Java后台开发,可是笔试中的30道选择题竟然绝大多都是关于C++的,只有一两道关于Java的,而且题目还特长!还好开学的时候啃了一本《C++面向对象高效编程》,大学前三年也一直使用C++编程,对C++还有一些了解。没想到笔试竟然过了。

  4月11晚上八点多给了通知,让13号上午去面试。终于松了一口气,本以为自己的笔试都没有过呢。

  4月13日:一面

  我是上午10点半面试的,面试官很好,首先是自我介绍,两分钟的时间。下面是具体的问题:

  1. 知道跳表么?答曰知道。好,把跳表写在这张纸上。呃,我只知道跳表是什么,不会写,orz。然后这个问题就过去了。

  2. 介绍自己的项目。

  3. 手写代码,判断两个树时候相同(结构相同,内容相同)。很简单,两分钟之内就写完了,这个问题也过去了。

  4. 看我的简历。你以前一直使用C++啊,为什么后来转Java了?答曰Java是自学的,后来越学越感兴趣,就继续深入下去了。问那既然C++用了那么久你怎么写的是了解呢?答曰相比于Java,对C++了解的程度不如Java。

  5. 那你再写个代码吧,实现冒泡排序。很简单,两分钟内写完了。面试官很细心,自己手动按照我的代码走了一遍,确定没问题了才继续。

  6. 知道cookie和session的区别吗?

  7. 你都知道哪些设计模式?

  估计面试官是比较熟悉C++,而对Java不太了解,就没什么问题了。面试官说,现在还有点时间,我们再说说别的吧。你读过什么书吗(我说看过《深入理解Java虚拟机》和《并发编程的艺术》)?阅读过什么源码吗(我说阅读过jdk的一些源码,还有Disruptor的全部源码和spring的部分源码)?(这些问题我的回答面试官都记下来了。)

  接下来的半个小时我和面试官一直在讨论关于Disruptor的问题。这样一面就结束了,一共52分钟。 之后面试官就问了一些实习时间,和我有什么问题吗。关于我问的问题以及面试官的回答会在后面介绍。

  感觉一面还是很简单的,没有没答出来的问题。

  4月15日:二面

  一面结束后直到晚上9点多微信的状态才由初试变为复试。并在第二天的上午通知15号上午进行二面。

  下面是主要的问题:

  1. 自我介绍。

  2. 介绍项目。

  3. boot loader知道么。

  4. 画出进程的状态转换图。

  5. 进程间通信的方式。

  6. 内核态和用户态的区别,为什么要这样划分,如果不这样划分你觉得理由是什么。

  7. 说说你知道的几种设计模式。

  8. 问了一个实际的问题,现在有1000万张像素个数相同的图片,要么是白色要么是黑色,其中白色图片很少,找出所有的白色图片。(其实就是遍历一次就够了)

  好像就这么多问题,感觉也不是很难,只有boot loader那个真的不知道。之后和面试官就像聊天似的聊了起来,比如高考多少分啊,家是哪里的之类的。

  二面一共40多分钟,然后面试官说你先到楼下签到的地方等一下。我也不知道要干嘛,就去楼下等着了。

  4月15日:HR面

  等了将近一个小时,就来了个通知,要我去面试,原来状态已经变成HR面了。就这样莫名其妙的通过了二面。

  HR并不是漂亮小姐姐,而是一个男生。问的问题也都是生活中的问题,这里就不细说了。不过有个问题我觉得还挺难回答的,就是你对于BAT这三家公司怎么看。之前没有想过这个问题,就对三家公司都夸了一遍。当然,重点要突出腾讯的好。

  HR面试之后直到第二天状态才变成“你已完成所有的面试”。放下心了。 之后就是漫长的等待,每天都会好几次查看微信的状态,也会刷牛客网的讨论区,看看有么有什么新进展。

  直到4月27号,别的部门比如SNG和TEG等都发offer了,我的OMG才发了一条短信,说我已经进入offer池,会在五一假期前后给最终的结果,感觉像是进了备胎池。

  第二天(28号)陆陆续续的收到了offer,而我竟然错过了下午的HR的电话!气!

  第三天(29号)上课,课上收到了HR的电话,直接冲出去了,说我通过了所有的面试。终于收到了offer。

  就这样,我的春招结束了。其实还没有,但是既然有了腾讯,别的就无所谓了。

  那么接下来就做一下总结吧。

  1

  项目没有你想的那么重要

  简历上最好不超过一页,这样算来其实能写上的项目没有很多,也就两三个。但是没有必要写太多。

  我有个同学为了让简历好看一些,写了从大二实习到课程作业到毕设的一共四个项目,涉及到病毒分析、Android开发和Web开发的方方面面,这样给人的一个感觉就是没有专一。一次面试的时候面试官就说,看了项目经历感觉你没有找到自己的方向。所以第一个要注意的问题就是,简历上所写的项目经历最好是同一个技术路线上的。

  二面的时候,面试官问我有什么问题,我问的是,作为一个学生如何在学习和项目之间找个平衡。面试官说不需要平衡,作为学生你们只需要好好学习就成,项目经历将来工作了有很多机会让你们接触。

  所以,第一个感觉就是,好好学习,项目经历其实没有你想象的那么重要。

  2

  语言重要吗

  由于腾讯基本上使用的是C++,而我熟悉的是Java,面试官也问过这个问题,说你能转C++吗。我说我大学前三年使用的都是C++,转过去没有问题。面试官也说,语言没有那么重要,不一定就会Java只能投Java岗。

  其实语言是相通的。比如有个同学面试被问到了Java中的多态是怎么实现的,这和C++中的多态实现方式很相似。所以,其实语言也没那么重要,只要花一段时间,可以很容易掌握一门语言的使用。

  但是需要注意的是,在面向对象编程语言中,至少要有一个语言能够达到深入了解的程度。只有这样,才能在学习另一个语言的时候举一反三,触类旁通。还有就是,对于专业技能来说,不管你掌握到什么程度,最好不要写“精通”。有个同学面试的时候简历上写的是精通C++,结果面试官用“我用了10年C++也没敢说自己精通”一句话给怼回去了。

  如果真的很了解的话,写“熟练”就可以;如果不是那么了解,写“了解”即可。

  3

  一条深入的技能树很重要

  一面的时候我问的问题是,作为一个过来人,您对我们这些即将毕业进入社会的学生有什么建议吗?

  面试官想了一会说,好好学习。后来补充说,你们现在作为学生,对于某个方向要深入了解,先深度,再广度。

  其实这是一个很中肯的建议。想想看,现在好多同学的简历上写了做过什么什么东西,其实学生做的东西在面试官看来大多数就像玩具一样,没什么技术含量。哦对了,有个同学就是因为项目的原因挂了二面。是这样的,面试官二面的时候一直在问同学的项目方面的问题,本来是很好的,项目的话自己能说的就比较多。但是当面试官对同学的项目提出一些质疑的时候我这个同学就和面试官争执起来了(其实就是回怼了),卒。

  感觉最重要的就是点好自己的技能树。既不能什么方面都不懂,又不能任何方面仅仅浅尝辄止。所以,想好自己真正感兴趣的地方,只对这一个山头进行攻击,深入下去,比每个方面都知道但不深入强太多。

  暂时想到的就先这么多,以后有补充的话就继续更新,大家可以点击“阅读原文”访问作者博客。

程序人生

移动一小步,视界大不同!

更多程序员技术交流,奇闻轶事

这篇关于腾讯面试总结3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085563

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

C++面试八股文:std::deque用过吗?

100编程书屋_孔夫子旧书网 某日二师兄参加XXX科技公司的C++工程师开发岗位第26面: 面试官:deque用过吗? 二师兄:说实话,很少用,基本没用过。 面试官:为什么? 二师兄:因为使用它的场景很少,大部分需要性能、且需要自动扩容的时候使用vector,需要随机插入和删除的时候可以使用list。 面试官:那你知道STL中的stack是如何实现的吗? 二师兄:默认情况下,stack使

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

Java面试八股之JVM参数-XX:+UseCompressedOops的作用

JVM参数-XX:+UseCompressedOops的作用 JVM参数-XX:+UseCompressedOops的作用是启用对象指针压缩(Ordinary Object Pointers compression)。这一特性主要应用于64位的Java虚拟机中,目的是为了减少内存使用。在传统的64位系统中,对象引用(即指针)通常占用8字节(64位),而大部分应用程序实际上并不需要如此大的地址空间

七种排序方式总结

/*2018.01.23*A:YUAN*T:其中排序算法:冒泡排序,简单排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序*/#include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10000#define FALSE 0#define TRUE 1typedef struct {i

华为某员工爆料:偷偷跑出去面试,被面试官鄙视了。第一句话就问:华为淘汰的吧,35岁了,这个年龄在华为能混得下去吗?身体没啥毛病吧

“你都35岁了,难不成是被华为淘汰的?在华为混不下去了吧?身体没啥毛病吧,我们这体检可是很严的。” 近日,一位华为员工在朋友圈爆料,自己在面试时遭到了面试官的无理取闹和人身攻击,原因仅仅是因为他35岁了,曾经在华为工作过。 这番话,充满了傲慢与偏见,让人听了义愤填膺。这位面试官的言行,不仅是对求职者的不尊重,更是对职场规则的践踏。 面试本应是双向选择的过程,企业和求职者在相互了解的基