每天一道面试题,为今年找工作早做准备!笨鸟先飞,哈哈(2012年2月篇)

1、腾讯面试题:用UDP协议通讯时怎样得知目标机是否获得了数据包

 在应用层模仿TCP:

在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int。
发送方在发送数据时将此ID和发送时间记录在本地。
接收方在收到数据后将ID再发给发送方作为回应。
发送方如果收到回应,则知道接收方已经收到相应的数据包;如果在指定时间内没有收到回应,则数据包可能丢失,需要重复上面的过程重新发送一次,直到确定对方收到。


2、华为面试题:语句for(;1 ;)是什么意思? 

 由于for循环的判断部分是1,永远为真,所以这是一个无限循环,作用和while(1)相同。

 3、迅雷面试题:合并用户基本信息和看电影的记录

如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。其中内存只有1G。

显然内存不能同时存下所有的数据,所以考虑分而治之的思想。
假设1K Byte可以保存一个用户的基本信息和看电影记录。我们可以将基本信息和看电影记录都按照hash(user_name)%100的余数各分成100个小文件。利用1G内存,我们可以每次只处理一对小文件,然后将结果输出到一个文件中即可。
在处理一对小文件时,可以利用key为用户名的hash_map将基本信息和看电影记录合并在一起。
(mapreduce)

你可能感兴趣的:(mapreduce,工作,面试,华为,byte,通讯)