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、 編程題
一個升序數組,找出給定數字在數組中出現的首末位置
思路:二分查找分別找到首尾出現的位置