腾讯手机QQ实习C++一面面经

自己上腾讯校招投的简历,过了两天腾讯打电话过来面试。
由于没有指定部门,只选了C++后台,这次是手机QQ的深圳部门打过来,问的都是海量数据问题。

问题一:现在所有的qq号共40亿个,假设有1000亿条登录记录,怎么样找到出现过的qq号,内存消耗多大。
参考答案:哈希表,把40亿个放进哈希表中,遍历100亿条就好了。消耗大概是 40亿*4Byte=160亿Byte=160*10^8Byte<16G

问题二:现在只有8个G的内存,怎么实现这个操作。
参考答案:位图,用一位来代表一个数据是否出现。开一个40亿/8Byte+1Byte=5亿Byte<500M空间的数组(char NUMS[]),40亿个数字映射对应的num 1~40亿,对应的数组项为NUMS[num/8],需要修改的位是num%8。这样消耗的空间只需要500M不到。

问题三:如果需要统计每个qq号出现过的次数,该怎么解决(开放)。
参考答案:把每个数映射到每个char类型,每个char类型可以统计256个登录记录,那么共需要40亿Byte=4G空间。因为实际应用场景中,登录记录应该符合正态分布,所以假设超过256次登录的qq号不多,把多出来的qq号用hash_map来存储大于登录次数大于256的qq号次数。

总结:
1. 该部门一面主要考察海量数据思路,这和一般的C++面试不一样,应该是部门场景需要。
2. 需要对存储空间、存储单位换算等基础知识比较敏感,比如int 是 4Byte ,10亿Byte是1G。
3. 解题无方就结合应用场景。
#腾讯暑期实习##腾讯##C/C++##面经##实习#
全部评论

相关推荐

序&nbsp;朋友们,好久不见。&nbsp;笔者在过去消失的五个月里被困在情绪牢笼中过的相当煎熬,一度丢失自己,觉得整个世界都是昏暗的。&nbsp;庆幸的是靠着自己纯硬扛也是走出来了。表达欲再度回归,所以真的很开心还有机会能在再和大家见面。&nbsp;破碎秋招&nbsp;抑郁情绪的引爆点必然是秋招期间遭受的打击了,从去年九月份腾讯转正被告知失败之后就开始疯狂投递简历,每天都在经历:简历挂、一面挂、二面挂、三面挂、HR面挂,每天睁开眼就被无所适从的挫败感包围。&nbsp;秋招的特点是即便流程走到最后一步也不一定会&nbsp;offer,因为还需要进入大池子进行横向对比,俗称泡池子,而这一泡我的大多数面试流程到后面就没了后文,这一度让我感觉非常绝望。我深知自己学历并...
SoNiC_X:我已经工作快2年了,当时高考没考好没去到想去的学校,觉得天要塌了;校招找不到工作,觉得天要塌了;现在工作觉得看不到未来,觉得天要塌了;最近最大的感悟就是:天会一直塌,但是生活也会一直继续下去,还是要调整好自己的心态,不要因为一时的困难把自己困住,要记住完蛋的日子永远在后头
点赞 评论 收藏
分享
饼子吃到撑:当我看到外企的时候,我就知道这大概率可能是真的
点赞 评论 收藏
分享
牛客464620405号:随便投,随便找,中国经过40多年的改革开放,人才缺口和职位空缺是巨大的,中国现在属于遍地黄金的年代,属于90后和00大机遇的时代
点赞 评论 收藏
分享
评论
2
23
分享

创作者周榜

更多
牛客网
牛客企业服务