1、HashMap与Hashtable的区别
点评:HashMap基于Hashtable实现,不同之处在于HashMap是非同步的,并且允许null,即null value和null key,Hashtable则不允许null,详见:http://oznyang.iteye.com/blog/30690。此外,记住一点:hashmap/hashset等凡是带有hash字眼的均基于hashtable实现,没带hash字眼的如set/map均是基于红黑树实现,前者无序,后者有序,详见此文第一部分:http://blog.csdn.net/v_july_v/article/details/7382693。
2、9月24日,去哪儿网2014校招西安站笔试题
给定一个200MB的文本文件,里面存的是IP地址到真实地址信息的映射信息,例如:211.200.101.100北京
然后给你6亿个IP地址,请设计算法快速的打印出所对应的真实地址信息。
解法:用hashmap,200MB文件读入内存,遍历每一行,每个IP为Key,真实地址为value,构建hash.
遍历6亿个IP,hash查找,key的value。
3、百度2014校招-武汉站-系统分析师
个人想法:信息提取,用到的机器学习中的有关标注算法。之前看过一篇论文:手工标注训练集,条件随机场/svm。具体怎么做,待续。
4、10月2日,暴风影音2014校招笔试
合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个
如:单链表a:1->2->3->4
单链表b:3->4->5
输出:1->2->3->4->5
个人想法:之前见过两个已经排序的单链表合并成一个排序的单链表,没有限制相同内容只保留一个。在这应该是多加一个判定条件:如果相等,pb后移
该题步骤:【1】设两个指针pa,pb分别指向单链表A、B头。
【2】比较pa/pb指针所指元素的大小:
*pa==*pb 则 pb=*pb->next;
*pa<*pb 则 pa=*pa->next;
*pa>*pb 则 pb结点加到pa结点的前面,注意加之前记录pb的next。
【3】如果pa==NULL或pb==NULL表示有一个链表到尾了,直接把另一个链表,追加就行。注意如果是pb==NULL,pa!=NULL,不用追加,因为我们pa 个正是合并以后的单链表。
5、暴风影音的片源服务器上保存着两个文件a和b,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出a,b文件共同的URL。要求:算法设计。
点评:上述第3题等海量数据处理面试题,请参见此文第第一部分第6题: 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
5*10^9=5G 64B 320G
可以估计每个文件的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。
- 分而治之/hash映射:遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为,这里漏写个了a1)中。这样每个小文件的大约为300M。遍历文件b,采取和a相同的方式将url分别存储到1000小文件中(记为)。这样处理后,所有可能相同的url都在对应的小文件()中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。
- hash统计:求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。
此题解法摘自:http://blog.csdn.net/v_july_v/article/details/7382693
6、9月21日,腾讯2014软件开发校招-简答题-广州
A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
此题解法参考:http://blog.csdn.net/thebestdavid/article/details/12056293
7、KMP算法(待续)
注意:如果您发现错误,可以回帖指出;如果您有解法,也可以回帖。