腾讯IEG后台开发实习一面
这已经是春招的第四面了,只是进度还是一面……这次面的是IEG的后台开发,面试官和蔼有趣,特别体贴,感动泪目,就算我不过也值了。补充:四次一面的我本来都不抱希望,下午四点面的,吃个晚饭回来就过了,感天动地,面试官人真的太好了,感恩。
一、基础知识
面试开始前,我先了解了面试官的方向,他的工作包括各种游戏背后大数据处理等。
加粗的为我个人不会,日后强化。
1、各种不同网络模型,比如select、epoll了解的怎么样。。。我听不懂,只知道网络模型十个字,就硬答了OSI七层和TCP/IP四层,答完面试官笑了说不是想让我答这个。。。
2、三次握手四次挥手why,为啥要等2MSL。
二、算法题
第一题:
合并多个链表,每个链表都是排序的,最后输出一个排序的链表。我用一个map储存全部节点,然后因为map自动排序,最终遍历一次逐一串连就行。但是问题来了,我对map的迭代器不熟悉,折腾了半天还是面试官允许我上网查才行的。。。
第二题:
比较两个二叉树是否相等,面试官特意出的简单题,一分钟解决。
第三题:
两个超大文件,如何找到他们相同的值。面试官一直引导我,我提出用分治的思想去解决。
三、总结
多刷题,熟悉算法。赶紧把STL过一遍。。。
Linux也要加紧学习,做出一个能展示的项目。
WXG简直不是人去的
四、部分答案补充
select、poll、epoll模型: https://blog.csdn.net/davidsguo008/article/details/73556811
大数据面试题
转自:https://blog.csdn.net/varyall/article/details/80518233
step1:遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000个小文件(记为a0,a1,…,a999,每个小文件约300M),为什么是1000?主要根据内存大小和要分治的文件大小来计算,我们就大致可以把320G大小分为1000份,每份大约300M(当然,到底能不能分布尽量均匀,得看hash函数的设计)
step2:遍历文件b,采取和a相同的方式将url分别存储到1000个小文件(记为b0,b1,…,b999)(为什么要这样做? 文件a的hash映射和文件b的hash映射函数要保持一致,这样的话相同的url就会保存在对应的小文件中,比如,如果a中有一个url记录data1被hash到了a99文件中,那么如果b中也有相同url,则一定被hash到了b99中)
所以现在问题转换成了:找出1000对小文件中每一对相同的url(不对应的小文件不可能有相同的url)。然后再读取文件a,遍历文件b中每个url,对于每个遍历,我们都执行查找hash表的操作,若hash表中搜索到了,则说明两文件共有,存入一个集合。