唯品會 java 面試

來源:果殼範文吧 8.47K

昨天去參加了唯品會實習生的筆試,我做的是java方向的筆試題:

唯品會 java 面試

總共分為三部分,筆試時間是1個小時:

第一部分是不定項選擇(每題4分):總共10個題,都是一些java的基礎知識,大概有陣列的定義以及一些形參的使用方法等;

第二部分是簡答題,總共四個小題,每題10分

(1)、作業系統中段頁式的選址方式

參考:在段頁式系統中,為了獲得一條指令或資料,須三次訪問記憶體。第一次訪問是訪問記憶體中的段表 ,從中取得頁表始址;第二次訪問是訪問記憶體中的頁表,從中取出該頁所在的物理塊號,並將該塊號 與頁內地址一起形成指令或資料的實體地址;第三次訪問才是真正從第二次訪問所得的地址中,取出指 令或資料。

(2)、程序間的通訊方式有哪幾種,有什麼區別

參考:(1)管道(Pipe):管道可用於具有親緣關係程序間的通訊,允許一個程序和另一個與它有共同祖先的程序之間進行通訊。

(2)命名管道(named pipe):命名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfifo或系統呼叫mkfifo來建立。

(3)訊號(Signal):訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發生,除了用於程序間通訊外,程序還可以傳送訊號給程序本身;linux除了支援Unix早期訊號語義函式sigal外,還支援語義符合Posix.1標準的訊號函式sigaction(實際上,該函式是基於BSD的,BSD為了實現可靠訊號機制,又能夠統一對外介面,用sigaction函式重新實現了signal函式)。

(4)訊息(Message)佇列:訊息佇列是訊息的連結表,包括Posix訊息佇列system V訊息佇列。有足夠許可權的程序可以向佇列中新增訊息,被賦予讀許可權的程序則可以讀走佇列中的訊息。訊息佇列克服了訊號承載資訊量少,管道只能承載無格式位元組流以及緩衝區大小受限等缺

(5)共享記憶體:使得多個程序可以訪問同一塊記憶體空間,是最快的可用IPC形式。是針對其他通訊機制執行效率較低而設計的。往往與其它通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。

(6)記憶體對映(mapped memory):記憶體對映允許任何多個程序間通訊,每一個使用該機制的程序通過把一個共享的檔案對映到自己的程序地址空間來實現它。

(7)訊號量(semaphore):主要作為程序間以及同一程序不同執行緒之間的同步手段。

(8)套介面(Socket):更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊。起初是由Unix系統的BSD分支開發出來的,但現在一般可以移植到其它類Unix系統上:Linux和System V的變種都支援套接字

(3)、hashMap、hashTable 的區別,ArrayList和LinkedList的區別

參考:Table的方法是同步的',HashMap未經同步,所以在多執行緒場合要手動同步HashMap這個區別就像Vector和ArrayList一樣。

Table不允許null值(key和value都不可以),HashMap允許null值(key和value都可以)。

Table有一個contains(Object value),功能和containsValue(Object value)功能一樣。

Table使用Enumeration,HashMap使用Iterator

yList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。

2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。

3.對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。

(4)、網路的七層結構?怎樣使用UDP實現TCP的可靠傳輸

參考:(1物理層,2資料鏈路層,3網路層,4傳輸層,5會話層,6表示層,7應用層)

要使用UDP來構建可靠的面向連線的資料傳輸,就要實現類似於TCP協議的超時重傳,有序接受,應答確認,滑動視窗流量控制等機制,等於說要在傳輸層的上一層(或者直接在應用層)實現TCP協議的可靠資料傳輸機制,比如使用UDP資料包+序列號,UDP資料包+時間戳等方法,在服務器端進行應答確認機制,這樣就會保證不可靠的UDP協議進行可靠的資料傳輸

第三部分是程式設計題,一題20分

1)用C語言建立一個連結串列,然輸出這個連結串列

(2)實現刪除一個節點的操作,要求時間複雜度為O(1)

熱門標籤