这算违纪吗? 老师怎么发现的? :)# Joke - 肚皮舞运动
p*8
1 楼
1)一个数组,除了一个数只出现一次,其他都出现两次,找出这个数。经典题之一,
XOR就行了
2)很大一个文件,内存放不下,里面都是整数,有重复,求只出现一次的整数的个数
。应该是大数据吧,我就说了hash到多个小文件,保证一样的整数到同一个小文件,然
后依次读进内存用hashmap/hashset处理,面试官说如果所有数都一样,hash后还是一
个文件,我想了下想再hash一次,后来想干脆用hadoop搞,用两个job,第一个每个map
读进来,key是integer本身以及map task id,reducer负责输出这个task的unique的整
数,partioner根据integer和map id进行分配,然后第二个job把reducer设置成1个进
行合并。感觉杀鸡用牛刀了,但想不到啥其他方法
3)差不多的题,这次输出所有unique的数。我想了下先把所有一样的数hash到小文件,
如果小文件size还太大,再进行二次hash,根据文件size进行平均分配,然后处理每个
小文件,最后合并结果。
感觉2)3)答得不好,大数据以前就稍微看了下top k之类的,都是hashmap + heap搞
定,本身没这方面的经验,打算好好研究下那篇博客了。希望大家给点思路,下次碰到
就不怕了,也希望对大家有用。
XOR就行了
2)很大一个文件,内存放不下,里面都是整数,有重复,求只出现一次的整数的个数
。应该是大数据吧,我就说了hash到多个小文件,保证一样的整数到同一个小文件,然
后依次读进内存用hashmap/hashset处理,面试官说如果所有数都一样,hash后还是一
个文件,我想了下想再hash一次,后来想干脆用hadoop搞,用两个job,第一个每个map
读进来,key是integer本身以及map task id,reducer负责输出这个task的unique的整
数,partioner根据integer和map id进行分配,然后第二个job把reducer设置成1个进
行合并。感觉杀鸡用牛刀了,但想不到啥其他方法
3)差不多的题,这次输出所有unique的数。我想了下先把所有一样的数hash到小文件,
如果小文件size还太大,再进行二次hash,根据文件size进行平均分配,然后处理每个
小文件,最后合并结果。
感觉2)3)答得不好,大数据以前就稍微看了下top k之类的,都是hashmap + heap搞
定,本身没这方面的经验,打算好好研究下那篇博客了。希望大家给点思路,下次碰到
就不怕了,也希望对大家有用。