【求職】網易 2018 校招測試開發工程師筆試卷

一、選擇題

1.下面關於進程和線程的關係不正確的是?( )

A. 線程是進程的一個實體,可作爲系統獨立調度和分派的基本單位。

B. 一個進程中多個線程可以併發執行。

C. 線程可以通過相互之間協同來完成進程所要完成的任務。

D. 線程之間不共享進程中的共享變量和部分環境。

2.下述有關虛函數和純虛函數說法錯誤的是?( )

A. 被virtual 關鍵字修飾的成員函數,就是虛函數

B.在基類中實現純虛函數的方法是在函數原型後加“=0” virtual void funtion1()=0

C.同時含有純虛擬函數的類稱爲抽象類,它可以被實例化,但是對象不可以調用純虛函數

D. 使用純虛函數的意義是在很多情況下,基類本身生成對象是不合情理的

3.下面程序的功能是輸出數組的全排列,選擇正確的選項,完成其功能。( )

1

2

void perm(int list[], int k, int m)

{

3 if ( )

4

5

6

7

8

9

10

11

{

copy(list,list+m,ostream_iterator(cout," "));

cout<<endl;

return;

}

for (int i=k; i<=m; i++)

{

swap(&list[k],&list[i]);

12 ( );

13

14

swap(&list[k],&list[i]);

}

15 }

A. k!=m 和 perm(list,k+1,m)

B. k==m 和 perm(list,k+1,m)

C. k!=m 和 perm(list,k,m)

D. k==m 和 perm(list,k,m)

4.從1000000000000 個數中選擇最小的 20 個數,用以下哪種排序算法比較方便?( )

A. 歸併排序

B. 插入排序

C. 快速排序

D. 堆排序

5.以下意圖哪個是用來描述 OBSERVER(觀察者)?( )

A. 使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係

B. 將抽象部分與它的實現部分分離,使它們都可以獨立地變化

C. 定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時, 所有依賴於它的對象都得到通知並被自動更

D. 用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象

6.某單鏈表中最常用的操作是在最後一個元素之後插入一個元素和刪除鏈表中給定的元素,則下列選項中正確的

是?( )

A. 若僅有頭指針,則插入操作及刪除操作均是 O(n)的

B. 增加尾指針既能提升插入操作的效率,也能提升刪除操作的效率

C. 既有頭指針又有尾指針,則插入操作及刪除操作均是 O(1)的

D. 既有頭指針又有尾指針,則插入操作及刪除操作均是 O(n)的

7.將一個整數序列整理爲升序,兩趟處理後序列變爲 10,12,21,9,7,3,4,25,則採用的排序算法可能是?( )

A. 插入排序

B. 選擇排序

C. 快速排序

D. 堆排序

8.單鏈表的每個結點中包括一個指針 next,它指向該結點的後繼結點。現要將指針 q 指向的新結點插入到指針 p 指向

的單鏈表結點之後,下面的操作系列中哪一個是正確的?( )

A. q=p->next;p->next=q->next

B. p=p->next=q->next;p->next

C. q->next=p->next;p->next=q;

D. p->next=1;q->next=p->next

9.哪一個方法不能用於 linux 的進程通信?( )

A. 命名管道

B. 臨界區

C. 共享內存

D. 信號量

10.linux 查看系統IP 地址以及網卡流量可以使用以下哪個命令?( )

A.ipconfifig

B. ifconfifig

C. netstat

D. ss

11.截取logfifile 文件中含有suc 的行,並且只輸出最後一列,下列操作正確的是?( )

A. grep -o ‘suc’ logfifile | awk ‘{print $0}’

B. grep ‘suc’ logfifile | awk ‘{print $0}’

C. grep ‘suc’ logfifile | awk ‘{print $NF}’

D. grep -o ‘suc’ logfifile | awk ‘{print $NF}’

12.python 函數func1 如下:

def func1(foo):

def __dec():

print “Start…”

foo()

print “End…”

return __dec

func2 函數調用如下:

1

2

3

@func1

def func2():

print “I am python function”

那麼 func2 函數正確的輸出是?( )

A. Start…\nEnd…

B. I am python function\n

C. Start…\nI am python function\n End…比特職讀會

D. Start…\nEnd…\nI am python function

13.對於SQL 語句select * from t where a=100 and b=200,哪個索引可以使用到?( )

A. 索引idx_b(b)

B. 索引 idx_b_a(b,a)

C. 索引 idx_a_b(a,b)

D. 都可以

14.關於Android 廣播,下列說法錯誤的是?( )

A. 廣播的註冊分靜態註冊和動態註冊

B. 廣播分爲一般廣播sendBroadcast,有序廣播 sendOrderBroadcast,和粘性廣播sendStickyBroadcast.

C. LocalBroadcastManager 是本地廣播,發送的廣播只有本 APP 會接收到,其他APP 的廣播無法到達通過

LocalBroadcastManager 註冊的 Receiver 中

D. 無法禁止其他 app 的廣播到達自己的 broadcastReceiver 中

15.針對登陸頁面(包含手機號碼輸入框和密碼輸入框)的測試用例,下列哪個說法是不正確的?( )

A. 手機號碼輸入框測試用例裏,應包含是否只能輸入數字

B. 登陸框和密碼框均應包含字母大小寫的測試

C. 需要對密碼的強度進行測試

D. 不需要對手機號碼的長度進行測試

16.關於白盒測試和黑盒測試,下列哪個說法是正確的?( )

A. 白盒測試一般由測試人員執行

B. 黑盒測試着重於測試軟件的功能,白盒測試着重於代碼

C. 白盒與黑盒是一樣的測試方法,只是測試對象不同

D. 黑盒測試可以取代白盒測試

17.關於迴歸測試,下列哪個說法是正確的?( )

A. 迴歸測試不需要進行全部用例的再測試

B. 迴歸測試需要選擇所有功能的高級別用例進行測試,並對已發現的 BUG 進行再次測試

C. 迴歸測試在整個測試周期中,並不是非常的重要

D. 迴歸測試不需要根據風險程度來測試

18.Java 是一門面向對象的編程語言,下面關鍵字中能夠表示 Java 面向對象的特性是?( )

A. extends, interface

B. volatite, implements

C. abstract, interface

D. static, void

19.定義字符串 String str = “用戶 1|用戶 2|用戶3|用戶 4”,現在想要對字符串根據字符“|”進行分割解析,下面哪種

分割方式是正確的?( )

A. str.split(“|”)

B. str.split(“|”)

C. str.split(“|”)

D. str.split(“|”)

20.在多線程編程中我們常常需要考慮到線程安全性,那麼在 java 集合中,下面哪些是屬於多線程安全的的集合

類?( )

A. HashMap, Vector

B. LinkedList, LinkedHashMap

C. CurrentHashMap, Vector

D. ArrayList, LinkedHashMap

二、編程題

1.彩色的磚塊

時間限制:C/C++ 1 秒,其他語言2 秒

空間限制:C/C++ 32M,其他語言64M

小易有一些彩色的磚塊。每種顏色由一個大寫字母表示。各個顏色磚塊看起來都完全一樣。現在有一個給定的字符

串 s,s 中每個字符代表小易的某個磚塊的顏色。小易想把他所有的磚塊排成一行。如果最多存在一對不同顏色的相鄰

磚塊,那麼這行磚塊就很漂亮的。請你幫助小易計算有多少種方式將他所有磚塊排成漂亮的一行。(如果兩種方式所

對應的磚塊顏色序列是相同的,那麼認爲這兩種方式是一樣的。) 例如: s = “ABAB”,那麼小易有六種排列的結果:

“AABB”,“ABAB”,“ABBA”,“BAAB”,“BABA”,“BBAA” 其中只有"AABB"和"BBAA"滿足最多隻有一對不同顏色的相鄰磚

塊。

輸入描述:

輸入包括一個字符串s,字符串s 的長度length(1 ≤ length ≤ 50),s 中的每一個字符都爲一個大寫字母(A 到Z)。

輸出描述:

輸出一個整數,表示小易可以有多少種方式。

輸入例子 1:

ABAB

輸出例子 1:

2

2.操作序列

時間限制:C/C++ 2 秒,其他語言4 秒

空間限制:C/C++ 32M,其他語言64M

小易有一個長度爲 n 的整數序列,a_1,…,a_n。然後考慮在一個空序列 b 上進行 n 次以下操作: 1、將a_i 放入 b 序列的末

尾 2、逆置 b 序列 小易需要你計算輸出操作 n 次之後的 b 序列。

輸入描述:

輸入包括兩行,第一行包括一個整數n(2 ≤ n ≤ 2*10^5),即序列的長度。

第二行包括n 個整數a_i(1 ≤ a_i ≤ 10^9),即序列a 中的每個整數,以空格分割。

輸出描述:

在一行中輸出操作n 次之後的b 序列,以空格分割,行末無空格。

輸入例子 1:

4

1 2 3 4

輸出例子 1:

4 2 1 3

3.堆棋子

時間限制:C/C++ 1 秒,其他語言2 秒

空間限制:C/C++ 32M,其他語言64M

小易將 n 個棋子擺放在一張無限大的棋盤上。第 i 個棋子放在第x[i]行y[i]列。同一個格子允許放置多個棋子。每一次

操作小易可以把一個棋子拿起並將其移動到原格子的上、下、左、右的任意一個格子中。小易想知道要讓棋盤上出

現有一個格子中至少有 i(1 ≤ i ≤ n)個棋子所需要的最少操作次數.

輸入描述:

輸入包括三行,第一行一個整數n(1 ≤ n ≤ 50),表示棋子的個數

第二行爲n 個棋子的橫座標x[i](1 ≤ x[i] ≤ 10^9)

第三行爲n 個棋子的縱座標y[i

1 ≤ y[i] ≤ 10^9)

輸出描述:

輸出n 個整數,第i 個表示棋盤上有一個格子至少有i 個棋子所需要的操作數,以空格分割。行末無空格

如樣例所示:

對於1 個棋子: 不需要操作

對於2 個棋子: 將前兩個棋子放在(1, 1)中

對於3 個棋子: 將前三個棋子放在(2, 1)中

對於4 個棋子: 將所有棋子都放在(3, 1)中

輸入例子 1:

4

1 2 4 9

1 1 1 1

輸出例子 1:

0 1 3 10

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