腾讯笔试试题

发布 2024-04-17 04:45:11 阅读 8115

腾讯笔试题:const的含义及实现机制分析:

const的含义及实现机制,比如:const int i,是怎么做到i只可读的?

const用来说明所定义的变量是只读的。

这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。

初探编译器static、const之实现原理。

腾讯笔试题:买200返100优惠券,实际上折扣是多少?

到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?

分析:由于优惠券可以代替现金,所以可以使用200元优惠券买东西,然后还可以获得100元的优惠券。

假设开始时花了x元,那么可以买到 x + x/2 + x/4 + 的东西。所以实际上折扣是50%.(当然,大部分时候很难一直兑换下去,所以50%是折扣的上限)

如果使用优惠券买东西不能获得新的优惠券,那么。

总过花去了200元,可以买到200+100元的商品,所以实际折扣为 200/300 = 67%.

腾讯笔试题:tcp三次握手的过程,accept发生在三次握手哪个阶段?

分析:accept发生在三次握手之后。

第一次握手:客户端发送syn包(syn=j)到服务器。

第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个ask包(ask=k)。

第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=k+1)。

三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。

腾讯笔试题:用udp协议通讯时怎样得知目标机是否获得了数据包。

用udp协议通讯时怎样得知目标机是否获得了数据包?

分析:可以在每个数据包中插入一个唯一的id,比如timestamp或者递增的int。

发送方在发送数据时将此id和发送时间记录在本地。

接收方在收到数据后将id再发给发送方作为回应。

发送方如果收到回应,则知道接收方已经收到相应的数据包;如果在指定时间内没有收到回应,则数据包可能丢失,需要重复上面的过程重新发送一次,直到确定对方收到。

腾讯笔试题:统计论坛**人数分布。

求一个论坛的**人数,假设有一个论坛,其注册id有两亿个,每个id从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户**分布,取样粒度为秒。

分析:一天总共有 3600*24 = 86400秒。

定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。

然后依次读入每个用户的登录时间和退出时间,将与登录时间对应的整数值加1,将与退出时间对应的整数值减1。

这样处理一遍后数组中存储了每秒中的人数变化情况。

定义另外一个长度为86400的整数数组int online_num[86400],每个整数对应这一秒的论坛**人数。

假设一天开始时论坛**人数为0,则第1秒的人数online_num[0] =delta[0]。第n+1秒的人数online_num[n] =online_num[n-1] +delta[n]。

这样我们就获得了一天中任意时间的**人数。

腾讯笔试题:从10g个数中找到中数。

在一个文件中有 10g 个整数,乱序排列,要求找出中位数。内存限制为 2g。

分析:不妨假设10g个整数是64bit的。

2g内存可以存放256m个64bit整数。

我们可以将64bit的整数空间平均分成256m个取值范围,用2g的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10g整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。

如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256m=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到了中数)。

腾讯笔试题:两个整数集合a和b,求其交集。

两个整数集合a和b,求其交集。

分析:1. 读取整数集合a中的整数,将读到的整数插入到map中,并将对应的值设为1。

2. 读取整数集合b中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2。

腾讯笔试题:找出1到10w中没有出现的两个数字。

分析:有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?

申请10w个bit的空间,每个bit代表一个数字是否出现过。

开始时将这10w个bit都初始化为0,表示所有数字都没有出现过。

然后依次读入已经打乱循序的数字,并将对应的bit设为1。

当处理完所有数字后,根据为0的bit得出没有出现的数字。

首先计算1到10w的和,平方和。

然后计算给定数字的和,平方和。

两次的到的数字相减,可以得到这两个数字的和,平方和。

所以我们有。

x + y = n

x^2 + y^2 = m

解方程可以得到x和y的值。

腾讯笔试题:需要多少只小白鼠才能在24小时内找到毒药。

有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?

分析:最容易想到的就是用1000只小白鼠,每只喝一瓶。但显然这不是最好答案。

既然每只小白鼠喝一瓶不是最好答案,那就应该每只小白鼠喝多瓶。那每只应该喝多少瓶呢?

首先让我们换种问法,如果有x只小白鼠,那么24小时内可以从多少瓶水中找出那瓶有毒的?

由于每只小白鼠都只有死或者活这两种结果,所以x只小白鼠最大可以表示2^x种结果。如果让每种结果都对应到某瓶水有毒,那么也就可以从2^x瓶水中找到有毒的那瓶水。那如何来实现这种对应关系呢?

第一只小白鼠喝第1到2^(x-1)瓶,第二只小白鼠喝第1到第2^(x-2)和第2^(x-1)+1到第2^(x-1) +2^(x-2)瓶….以此类推。

回到此题,总过1000瓶水,所以需要最少10只小白鼠。

腾讯笔试题:根据上排的数填写下排的数,并满足要求。

根据上排给出十个数,在其下排填出对应的十个数, 要求下排每个数都是上排对应位置的数在下排出现的次数。上排的数:0,1,2,3,4,5,6,7,8,9。

腾讯笔试题:判断数字是否出现在40亿个数中?

给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中?

分析:unsigned int 的取值范围是0到2^32-1。我们可以申请连续的2^32/8=512m的内存,用每一个bit对应一个unsigned int数字。

首先将512m内存都初始化为0,然后每处理一个数字就将其对应的bit设置为1。当需要查询时,直接找到对应bit,看其值是0还是1即可。

今天真是悲剧了,基本上一面无望了,不是题太难,而是学的太久了,基本都忘光了,再来个不定项选择……结果就不用说了……现在发下贴子,也算给后来人一个复习的方向吧。由于签了保密协议,具体的题目不便透漏。

???一、选择题(不定项选择,20题,60分)

???主要题目就是数据结构、操作系统、计算机网络的基础内容,真的是最基础的内容,有些还是我们学校相关课程期末考的内容,但是因为是不定项选择,难度反而最大。建议复习的时候多看看线性表、链表、树、查找、排序;操作系统和计算机网络的一些基本概念。

???二、填空(2题,10个空,40分)

???这次两道填空题倒不难,细心一点都能做对。第一个考的是数字处理的一点小技巧,“%和“/”的运用,第二个考了树的操作。

建议复习时多看看平时用得比较多的算法,比如树形结构的构造、插入、删除、遍历之类的。

???至于附加题,由于基本没什么希望进面试,我也没仔细看,直接没做。貌似c/c++方向的是数据存储管理的,j**a方向的是两个小程序,其中一个与查找有关。

???其他就不多说了,不知道这算不算违反保密协议……希望能进一面的人再接再厉,争取能走到最后;也希望以后参与的人能引以为戒,平时多注意基础知识,因为很多大公司对这些事比较看重的。

历年腾讯笔试试题搜集

c c 类 1,关于sizeof char a hello 求sizeof a char p a 求sizeof p int a 100 求sizeof a 解析 第一空 6。第二空 4,32位机下指针占4字节,指针大小与数据类型无关。sizeof a 返回数组a在内存中所占的空间大小,32位机一个...

腾讯笔试题

1.写出判断abcd四个表达式的是否正确,若正确,写出经过表达式中 a的值 3分 int a 4 a a a b a a c a a d a a a 答 c错误,左侧不是一个有效变量,不能赋值,可改为 a a 改后答案依次为9,10,10,11 2.某32位系统下,c 程序,请计算sizeof 的值...

腾讯笔试题

腾讯非技术类笔试题目。一 不定项选择。1976年发生的事。以下哪个不是 政治局常委。什么 文件格式字节大 二 填空。亚运会在那里举行?世界五大通讯社。新闻基本要素。ceo是谁,这个我临时忘了,出来才想起来。一个html语言的意思。三 找出标题的毛病并改正。四 十条国内新闻 十条国际新闻 十条社会新闻...