1.自我介绍
2.介绍一下研究生的研究方向
3.一个智力问题
有无限多的水,如何用两个分别为5L和3L的容器量出4L的水?
4.如何解决哈希冲突?
链表法(链地址法)
开放地址法
再哈希法
公共溢出区法
5.进程间的几种通信方式?
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。
IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。
6.进程和线程的区别?多线程如何进行同步?
7.对软件测试方法有什么了解?如单元测试,集成测试,接口测试
8.大数据集的统计:
一个数据集有1000万行数据,每行是一个字符串型的URL,每行的数据可能是重复的,让查找出出现次数最多的1000条URL,top-k问题
思路:由于记录是可重复的,所以可以用集合来存储最终要保存的1000条数据;
可以使用hash函数对每条记录进行映射,用位向量来存储哈希值,并在每个位置记录一个计数器。逻辑上可行,但是复杂度太高,问如何用top-k算法实现?
top-k算法一般是用什么数据结构实现的?
9.编程题
给出一个单向链表,输出该链表的倒数第k个结点(未知链表长度)
黄婷-0808阿里一面
1、 自我介绍
2、 项目介绍(面试官没太听明白)
3、 线程与进程的区别?线程间如何实现共享内存?
4、 智力题
1) 一个桃一毛钱,三个桃核能换一个桃,最多能吃多少个桃?
2) 燃烧一根不均匀的绳子需要一小时,问如何度量出半个小时?
从两头同时开始燃烧,燃完即为半小时。
5、 算法题
25个数,找出top 3个数,有一个机器能对至多五个数进行排序,问至少需要排序多少次能找出top 3个数。
1)Top-k算法可用堆排序。
先选择前三个数构建一个小顶堆,对全部元素遍历一遍,对每个元素如果大于堆顶元素,则替换堆顶元素,并维护堆的性质,最后堆中的元素就是top3.
2)可用锦标赛法
思路:先把25个元素分成五组,分别排序,然后再对五个每组中的最大元素进行排序,最大值就是整个元素集的最大值,移除该元素然后继续对五个组中的最大元素进行排序,找到第二大元素,继续该方法找到第三大元素,这样一共进行了5+1+1+1=8次排序。(是否六次就可以,剩下的每次只需要一次比较即可)
先把25个数分成ABCDE五组分别进行排序(5),得到:A1 A2 A3 A4 A5; B1 B2 B3 B4 B5; C1 C2 C3 C4 C5; D1 D2 D3 D4 D5; E1 E2 E3 E4 E5; 分别取出各组的最大元素进行排序(1),假设得到:A1 B1 C1 D1 E1,即A1为top 1;只需再对A2 A3 B1 B2 C1这五个数进行一次排序(1),即可得到top 2, top 3;一共需要排序5+1+1=7次。
6、 编程题
一个升序数组,找出给定数字在数组中出现的首末位置
思路:二分查找分别找到首尾出现的位置