好文档 - 专业文书写作范文服务资料分享网站

2020年腾讯精选面试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

排列,要求找岀中位数。内存限制为2G.

不妨假设10G个整数是64bit的。 2G内存可以存放256M个64bit整数。

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

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

14. 两个整数集合A和B,求其交集。

1. 读取整数集合A中的整数,将读到的整数插入到叫中,并将对应的值设为1。

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

通过更改map中的值,避免了将同样的值谕出两次。

15.找岀1到10w中没有出现的两个数字有1到10w这10w 个数,

去除2个并打乱次序,如何找出那两个数?

申请10w个bit的空间,每个bit代表一个数字是否出现过。 幵始时将这10个bit都初始化为0,表示所有数字都没有出现过。 然后依次读入已经打乱循序的数字,并将対应的bit设为1。 处理完所有数字后,根据为0的bi得出没有出现的数字。 首先计算1到10W的和,平方和。 然后计算给定数字的和,平方和。

两次的到的数字相减,可以得到这两个数字的和,平方和。 所以我们有 X + y = n x\

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

16.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带奇的 水24

小时后就会死亡,至少要多少只小白鼠才能在24小时时 鉴别岀那瓶水有毒?

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

既然每只小白鼠喝一瓶不是最好答案,那就应该每只小白鼠喝多瓶。那每只应该喝多少 瓶呢? 首先让我们换种问法,如果有X只小白鼠,那么24小时内可以从多少瓶水中找出那瓶有 毒的?

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

第一只小白鼠喝第1到2“ (x-1)瓶,第二只小白鼠喝第1到第2“ (x-2)和第2“ (x-l)+l 到第2* (x-l)+2伝-2)施...以此类推。

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

17.根据上排的数填写下排的数,并满足要求.

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

18. 给40亿个不重复的unsigned int的整数,没排过序的,然

后再给几个数,如何快速判断这几个数是否在那10亿个数当 中?

unsigned int的取值范围是。到2“32-1°我们可以申请连续的232/8-512M的内存,用 每一个bit对应个unsigned int数字。首先将51M内存都初始化为0,然后每处理一个 数字就将其对应的bit设置为1。当需要查询时,直接找到对应bit,看其值是。还是1 即可。

19. 1-20的两个数把和告诉A积告诉B,A说不知道是多少,B 也说

不知道,这时A说我知道了,B接着说我也知道了,问这两 个数是多少?

2和3

20. 爸爸妈妈妹妹小强,至少两个人同一生肖的概率是多少?

1-12*11*10*9/12*12212*12=1-5 596=4196

21. 计算 ab?2.

运算符优先级:括号,下标,-> 和(?成员)最高; 单目的比双目的高;

算术双目的比其他双目的高; 位运算高于美糸运算;

关系运算高于按位运算(与,或,异或); 按位运算高于逻辑运算;

目的只有一个条件运算,低于逻辑运算; 贼值运算仅比,(顺序运算)高;

在此題中,位左移。”优先级高于按位异或\所以b先左移两位(相当于乘以4)再与a 异或。

例如:当 a=6,b=4 时;则 a*b?2=22

22. 如何输出源文件的标题和目前执行行的行数?

printf(\printf (\: %d\\n”, _LINE_); ANSI C标准预定义宏; _LINE_ _FILE_ _DATE_

_STDC_当要求程序严格遵循ANSC标准时该标识符被赋值为1 _cpluspluS_当编写C催序时该标识符被定义

23. a[3]4 哪个不能表示 a[l]l: *(&a[0][0]+5) *((a+l)+l) *(&a[l]+l)*(&a[0][0]+4)*(&a[l]+l).

a是数组的首地址,a[1]就表示a[l] [0]地址了,不用再取地.

23. fun((expl,exp2),(exp3,exp4,exp5))几个实参?

两个.

形式参数:在声明和定义函数时,写在函数名后的括号中的参数. 实参是调用参数中的变里,行参是被调用函数中的变量.

24. 希尔,冒泡,快速,插入哪个平均速度最快?

快速排序

快速排序、归并排序和基数排序在不同情况下都是最快最有用的

25. enum的声明方式

enum枚举类型名{ 枚举常量L 枚举常里2, 枚举常里n

For example:

enum weekday i Sunday, monday, tuesday, Wednesday, thursday, friday, Saturday}; enum weekday week-day; //week_day就是一个枚举类型变量

26. 频繁的插入刪除操作使用什么结构比较合适,链表还是

数组?

链表

27. *p=NULL; *p= new charl[100]; sizeof(p)各为多少?

都为4。因为都是指针类型,所占存储空间必然为4

28. 顺序查找的平均时间?

(1+2+3+... -hi)/n= (n+1) /2

29. for(i=0,sum=0;i<10;++i,sum+=i)的运行结果?

sum=55

30. 不能做switch()的参数类型是?

switch的参数不能为浮点型

31. 不使用其他变里,交换两个整型a,b的值?

x=x+y; y=x_y; x=x_y

32.写岀foatx与“零值“比较的if语句。

if (x>=0.000001 && x<=-0.000001) (x 不为 0 的比较) float: 6位精度 double: 16位精度

33.腾讯服务器每秒有2W个QQ号同时上线,找岀5min内重

新登入的qq号并打印岀来。

如果空间足够大,可以定义一个大的数组a[qq号],初始为零然后.这个qq号登陆了 就 a[qq 号]++

最后统计大于等于2的QQ号 这个用空间来代替时间 不成熟的想法 2w x 300s

所以用6000.000个桶。刪除超时的算法后面说,所以平均捅的大小是1 假设qq号码一共有10'10个,所以每个補装的q号码是10“10/(6*10~6)个, 这个是插入时候的最坏效率(插入同个桶的时候是顺序查找插入位置的) qq的节点结构和上面大家讨论的基本一样,増加一个指针指 向输出列表,后面说 struct QQstruct {

num_type qqnum,

timestamp 1as t_lo g on_t ime, QQstruct *pre, QQstruct *next,

OutPutlist *out //用于free节点的时候,顺便更新下输出列表

2020年腾讯精选面试题及答案

排列,要求找岀中位数。内存限制为2G.不妨假设10G个整数是64bit的。2G内存可以存放256M个64bit整数。我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。如果中
推荐度:
点击下载文档文档为doc格式
878tw8xtqx6rgfk15sw18xzko02xoc00fyw
领取福利

微信扫码领取福利

微信扫码分享