【求職】 網易 2018 校園招聘 Java 開發工程師(BJ)筆試卷

一、單選題

1.以下哪些方法或場景不會導致 java 線程阻塞?( )
A. 調用wait() 方法
B. 系統IO 阻塞
C. 調用notify()方法
D. 調用sleep(1000) 方法
2.假設現在有一個數組長度爲 80,使用選擇排序爲其排序,再已經排序了 40 次的情況下,那麼現在有多
少項被保證處於最後的位置(永遠不再移動)( )
A. 20
B. 39
C. 40
D. 41
E. 60
3.一個數組求其最長遞增子序列(LIS),例如數組{3, 1, 4, 2, 3, 9, 4, 6}的LIS是{1, 2, 3, 4, 6},長度爲 5,假
設數組長度爲 N,求數組的 LIS的長度,那麼最好的解法情況下,時間複雜度和空間複雜度都是多少?( )
A. 時間: O(N^2), 空間:O(N)
B. 時間: O(NlogN), 空間:O(N)
C. 時間: O(N), 空間:O(N)
D.時間: O(N), 空間:O(NlogN)
E. 時間: O(NlogN), 空間:O(NlogN)
4.以下哪個排序算法中,元素的比較次數元素與元素的初始排列無關( )
A. 希爾排序
B. 快速排序
C. 歸併排序
D. 直接插入排序
E. 選擇排序
5.下面關於歸併排序的說法錯誤的有( )
A. 將k 個已經排序的數組歸併成一個大的排序的結果數組。這些數組可能數量比較大,以至於不能直接
裝載到內存中,可以選擇最小堆 k 路歸併排序來優化算
B. 歸併排序是穩定的排序
C. 在實際中,歸併排序比快速排序要快,因爲它的比較次數少,所以大部分排序算法底層是歸併排序
D. 對於長度爲 N 的數組,使用歸併排序,時間複雜度最差也是 O(NlogN)
6.用二分法查找長度爲 129 的排好序的線性表,最多需要比較多少次才能查找到所需要的元素。( )
A. 7
B. 8
C. 9
D. 128
E. 65
7.下面關於內存管理方式錯誤的有?()
A. 頁式管理把內存空間按頁的大小劃分成片或者頁面,然後把頁式虛擬地址與內存地址建立一一對應的
頁表
B. 頁式管理採用請求調頁或預調頁技術來實現內外存存儲器的統一管理
C. 段頁式管理是段式管理與頁式管理方案結合而成的,具有它們兩者的優點,所以使執行速度提升了。
D. 段式管理優點是可以分別編寫和編譯,可以針對不同類型的段採取不同的保護,可以按段爲單位來進
行共享,包括通過動態鏈接進行代碼共享
8.( )完成域名到 IP 地址的映射,( )實現MAC 到 IP 地址的映射
A. DNS,ARP
B. DNS,RARP
C. ICMP,ARP
D. ICMP,RARP
E. FTP,ARP
9.以下關於TCP協議說法正確的有?()
A. TCP協議有擁塞控制功能,但是不能進行流量控制
B. TCP在視頻流傳輸方面取代了 UDP 的功能
C. TCP建立連接需要3 次握手,3 次握手也可能對其造成被 flood 攻擊的可能
D. TCP是HTTP,FTP,TFTP的底層實現協議
10.以下不屬於線程共享的內容是?()
A. 代碼段(code segment)
B. 進程用戶ID 與進程組 ID
C. 進程打開的文件描述符
D. 數據段(data section)
E. 棧空間
11.下面關於HashMap 和Hashtable 說法錯誤的有?()
A. HashMap 不能保證元素的順序,HashMap 能夠將鍵設爲 null
B. Hashtable 不能將鍵和值設爲 null,否則運行時會報空指針異常錯誤
C. HashMap 線程不安全,Hashtable 線程安全
D. HashMap 使用鍵/值得形式保存數據,但是允許一次只插入鍵或者值
12.下面關於線程的方法敘述錯誤的是?()
A. run()方法用來執行線程體中具體的內容
B. sleep()方法用來使線程進入睡眠狀態
C. start()方法用來啓動線程對象,使其進入就緒狀態
D. suspend()方法用來使線程掛起,要通過 start()方法使其重新啓動
13.下面關於java static 的描述錯誤的有?()
A. static 表示“全局”或者“靜態”的意思,用來修飾成員變量和成員方法,但是不能來修飾代碼塊
B. static int arr[] = new int[5];arr 裏面的數字全部都會初始化爲 0
C. 對於靜態變量在內存中只有一個拷貝,JVM只爲靜態分配一次內存,在加載類的過程中完成靜態變量
的內存分配,可以通過對象來訪問
D. static 對象可以在它的任何對象創建之前訪問,無需引用任何對象
14.下面哪些是合法的 java 數組聲明?( )
(a) int a();
(b) float b[];
© double[] c;
(d) counter d[];
A. a 和b
B. a 和c 和d
C. b 和c
D. c 和d
15.下面 java 代碼的輸出爲?()
1.import java. util .HashMap;
2.import java.util. Iterator;
3.public class Main {
4.public static void main(String[] args) {
5.HashMap map = new HashMap< Integer, Integer>();
6.map. put(1, “wangyi”);
7.changeHashMap (map);
8.for (Iterator it = map. keySet(). iterator(); it.hasNext()😉 {
9.object key = it.next();
10.System. out. print1n(key + “=” + map.get(key));
11. }
12.}
13.static void changeHashMap(HashMap map) {
14.map = new HashMap<Integer, String>();
15.map.put(1, “163”);
16. }
17.}
A. 1=wangyi
B. 1=1 63
C. 1=
D. 編譯出錯
16.在當前目錄下查找深度爲 2 級目錄,並且創建時間是 7 天前的文件,然後刪除,正確的是:( )
A. find -maxdepth +2 -mtime +7 -type file -exec rm
B. find -maxdepth 2 -mtime +7 -type f | xargs rm
C. find -maxdepth +2 -mtime -7 -type file -exec rm
D. find -maxdepth 2 -mtime 7 -type f | xargs rm
17.下面關於進程說法正確的是:( )
A. 同步進程必定是阻塞的,異步進程必定是非阻塞的
B. 同步進程必定是非阻塞的,異步進程必定是阻塞的
C. 進程同步異步,和阻塞非阻塞沒有直接關係
D. 進程同步異步,和阻塞非阻塞有着必然關係
18.已知shell 腳本num.sh 如下:
#!/bin/bash
n=0
function foo1(){
((n++))
echo $n
}
function foo2(){
((n–))
echo $n
}
echo $n
foo1
foo2
那麼運行sh num.sh 結果正確的是:( )
A. 0 1 0
B. 0 0 0
C. 0 1 -1
D. 1 0 0
19.有一個記錄工人和部門的表 relation(dep_id, worker_id),字段表示部門id 和工人 id,希望計算得到每
個部門的工人個數信息,下面的 sql 語句正確的是有一個記錄工人和部門的表 relation(dep_id,
worker_id),字段表示部門 id 和工人id,希望計算得到每個部門的工人個數信息,下面的sql 語句正確的是 ( )
A. select dep_id,sum(work_id) from relation
B. select dep_id,count(work_id) from relation
C. select dep_id,sum(work_id) from relation group by dep_id
D. select dep_id,count(work_id) from relation group by dep_id
20.下面哪個註解是在spring 中用作事務控制?( )
A. @Transaction
B. @Transactional
C. @Service
D. @Autowired

二.編程題

1.工作方案
牛牛手中有s 份工作需要完成,牛牛準備將工作分給三位員工。考慮到三位員工還有其他工作需要做,牛牛
規定他們每人必須要參與的工作數量分別是 a,b,c。 牛牛需要制定詳細的工作方案,需要滿足每份工作至
少有一個人做,同一份工作可以由兩個或者三個人共同參與。牛牛一下意識到可能的工作方案很多,牛牛
需要你幫他計算一下一共有多少種不同的工作方案(對於兩種方案,如果某份工作分配的人或者人數不一
樣就考慮爲不一樣的工作方案)。
對於輸入樣例,s = 3, a = 3, b = 1, c = 1 a 要參與所有三份工作,b 和c 各自有三種選擇,所以不同的工作方案
是3 * 3 * 1= 9 如果s = 3, a = 1, b = 1, c = 1 相當於對三個員工做全排列,所以不同的工作方案是 3 * 2 * 1 = 6
輸入描述:
輸入包括一行,一行包括4 個正整數s,a,b,c(1 ≤ s ≤ 50, 1 ≤ a, b, c ≤ s),分別表示需要完成的工
作份數,每個員工必須要參與的工作數量。
輸出描述:
輸出一個正整數,表示不同的方案種數,答案可能很大,輸出答案對 1000000007 取模。
輸入例子 1:
3 3 1 1
輸出例子1:
9
2.數軸
牛牛非常喜歡和朋友們一起玩。 牛牛有n 個朋友當前在一根數軸上,每個朋友當前在整數x[i]座標位置。
牛牛向他們發出一個移動的信號,每個朋友就向左或者向右移動 s 距離(每個朋友的選擇是獨立的,都可以選
擇向左或者向右)。 爲了在一起玩耍方便,牛牛希望移動之後最左邊的朋友和最右邊的朋友距離最近,牛牛
想知道最近距離爲多少。
例如牛牛有三個朋友分別所在數軸座標爲-7, 4, 7, s = 5 那麼第一個朋友-7 向右移動 s,變爲-2 第二個朋友4
向左移動s,變爲-1 第三個朋友 7 向左移動s,變爲2。 現在最左和最右的朋友距離是 4,沒有比這個更優的方
案了。
輸入描述:
輸入包括兩行,第一行兩個正整數 n 和s(2 ≤ n ≤ 50, 0 ≤ s ≤ 10^8),表示朋友的個數和移動的距離。
第二行包括n 個正整數x[i](-10^8 ≤ x[i] ≤ 10^8),表示初始時每個朋友所在的座標位置。
輸出描述:
輸出一個正整數,表示移動之後最左邊的朋友和最右邊的朋友最小距離爲多少。
輸入例子 1:
3 5 4 -7 7
輸出例子 1:
4
3.骰子游戲
小易參加了一個骰子游戲,這個遊戲需要同時投擲 n 個骰子,每個骰子都是一個印有數字 1~6 的均勻正方
體。
小易同時投擲出這 n 個骰子,如果這n 個骰子向上面的數字之和大於等於 x,小易就會獲得遊戲獎勵。
小易想讓你幫他算算他獲得獎勵的概率有多大。
輸入描述:
輸入包括兩個正整數n 和x(1 ≤ n < 25, 1 ≤ x < 150),分別表示骰子的個數和可以獲得獎勵的最小數字
和。
輸出描述:
輸出小易可以獲得獎勵的概率。
如果概率爲1,輸出1,如果概率爲 0,輸出 0,其他以最簡分數(x/y)的形式輸出。
輸入例子 1:
3 9
輸出例子 1:
20/27

求職必備刷題官網:https://github.com/bennyrhys/interview
【更多互聯網公司筆試面試真題請關注“讓我遇見相似的靈魂”公衆號】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章