大数据开发场景题【大厂面试常问】

推荐阅读文章列表:大数据开发面试笔记V4.0 || 面试聊数仓第一季 || 小白大数据学习路线

很多大厂的面试官都会问这种大数据量下如何计算的问题,所以大家提前准备好答题套路,吊打面试官

1亿个整数中找出最大的10000个数

  • 首先想到的就是全局排序,那么需要判断内存是否能够装的下?1*10^9*4B = 4GB,需要4G的内存,如果机器的内存小于4G,显然是不行的
  • 第二种方法就是分治法,将这1亿个数通过hash算法,分为1000份,每份100万个数据,找到每份数据中最大的10000个数,最后在100*10000中找出最大的10000个数,最大占用内存为 1000000*4B = 4MB。从100万个数中找到最大的10000个数的方法是快速排序的方法,但是我们没有必要将这100万个数排序,只用找到前10000个数,大致的思路是:将第一个数字设置为基准元素,然后将这100万个数分为两堆,如果大于基准的堆的个数大于10000个,那么继续对该堆进行一次快速排序,如果此时大的堆的个数n小于10000个,那么在小的堆中找到前10000-n的数字。
  • 【重点】第三种方法就是小顶堆,首先读入前10000个数来创建大小为10000的最小堆,建堆的时间复杂度是O(m),然后遍历后续的数字,并与堆顶元素(最小)进行比较,如果比堆顶元素小,则继续遍历后面的数字即可;如果比堆顶元素大,则替换堆顶元素并重新调整堆为最小堆。直至遍历完所有的数字,最后输出当前堆的所有数字就可以了。整体的时间复杂度是O(mn)

在2.5亿个整数中找出不重复的整数

  • 采用2bit的bitmap(00表示不存在,01表示出现1次,10表示出现多次,11表示无意义),共需内存 2^32*2bit=1GB内存,可以接受,然后扫描这2.5亿个整数,查看bitmap中相对应的位,如果是00变01,01变10,10保持不变,扫描完后,查看bitmap,把对应为是01的整数输出。

大整数相乘

  • 分治法【递归】
  • 当我们输入两个大整数num1,num2,长度分别为n,m,计算机无法直接计算其结果,采用分而治之的思想,我们可以分别将两个数均分为四个部分,记作A,B,C,D,其中: A为num1的前n/2, B为num1的后n/2, C为num2的前m/2D为num2的后m/2
  • num1 * num2 = (A * 10^(n/2) + B) * (C * 10^(m/2) + D)= AC * 10^(n/2+m/2) + AD * 10^(n/2) + BC * 10^(m/2) + BD
  • 此时将一个大整数的乘法分为了四个相对较小的整数相乘,此时,我们就可以采用递推的思想,再将每个相乘的数进行拆分相乘再相加,当递推到相乘的值较小时,我们可以求出相应的值然后对其进行相加,将结果依次返回,最终得到大整数相乘的结果。
  • 乘法变加法【遍历】
  • 同字符串相乘

总结:类似的题目还有很多,大的思路就是将大数据拆分为小数据

想要获取最全的大数据面试笔记的同学,请点击 ---> 最全大数据面试笔记

#数据人的面试交流地##大数据开发##24届软开秋招面试经验大赏##我发现了面试通关密码##如何判断面试是否凉了#
全部评论

相关推荐

关于我大学本科四年,想了很多,但还是不知道该怎么动笔 “大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。” 大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
5
40
分享

创作者周榜

更多
牛客网
牛客企业服务