腾讯手机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++##面经##实习#
全部评论

相关推荐

昨天 09:08
裁应届生,一分钱补偿没有,离职了还脑控你,跟踪你,定位你,丁东服务是搞系每一个人
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 10人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
2 23 评论
分享
牛客网
牛客企业服务