阿里巴巴2017實習生筆試題

Wi-Fi Linux CPU 計算複雜性理論 猿圈oxcoder 2017-06-25

1 [單選題]

關於c++的inline關鍵字,以下說法正確的是()

A使用inline關鍵字的函數會被編譯器在調用處展開

B可以在同一個項目的不同源文件內定義函數名相同但實現不同的inline函數

C定義在Class聲明內的成員函數默認是inline函數

D優先使用Class實現的內inline函數的實現

參考答案:D

解析:

A項錯誤,因為使用inline關鍵字的函數只是用戶希望它成為內聯函數,但編譯器有權忽略這個請求,比如:若此函數體太大,則不會把它作為內聯函數展開的。

B項錯誤,頭文件中不僅要包含inline函數的聲明,而且必須包含定義,且在定義時必須加上inline。【關鍵字inline必須與函數定義體放在一起才能使函數成為內聯,僅將inline放在函數聲明前面不起任何作用】

C項錯誤,inline函數可以定義在源文件中,但多個源文件中的同名inline函數的實現必須相同。一般把inline函數的定義放在頭文件中更加合適。

D項正確,類內的成員函數,默認都是inline的。【定義在類聲明之中的成員函數將自動地成為內聯函數】

EF項無意思,不管是class聲明中定義的inline函數,還是class實現中定義的inline函數,不存在優先不優先的問題,因為class的成員函數都是inline的,加了關鍵字inline也沒什麼特殊的。

2 [單選題]

對N個數進行排序,在各自最優條件下以下算法複雜度最低的是()

A快速排序

B堆排序

C冒泡排序

D插入排序

E選擇排序

F歸併排序

參考答案:D

阿里巴巴2017實習生筆試題

3 [單選題]

甲乙兩個一樣大小的杯子各自分別裝著小於一半容積的水和酒精.現將甲杯子裡的一部分水倒入乙杯子;之後將乙杯子的混合液倒入一些到甲杯子,此時甲杯子的液體恢復到最初的狀態.假定水和酒精混合之後的體積等於混合之前的體積之和。那麼以下說法正確的是()

A甲杯子裡的酒精體積等於乙杯子裡的水的體積

B甲杯子裡的酒精的體積等於乙杯子裡的酒精的體積

C甲杯子裡的水的體積等於乙杯子裡的酒精的體積

D甲杯子裡的水的體積等於乙杯子裡的水的體積

E甲杯子裡的液體高於乙杯子裡的液位

F以上都不對

參考答案:A

解析:

最初,甲杯子只有酒精,乙杯子只有水。

最後,甲杯子恢復到最初的高度,只是混入了一些酒精。

所以從乙杯子拿出多少酒精給甲杯子,乙杯子就有多少甲杯子的水。

ps:題目已經假設 酒精和水混合後等於兩者容量之和

4 [單選題]

main()

{

char*a[]={"work","at","alibaba"};

char**pa=a;

pa++;

printf("%s",*pa);

}

下列程序的執行結果是()

A at

B atalibaba

C ork

D orkatalibaba

E編譯錯誤

F運行溢出

參考答案:A

解析:阿里巴巴2017實習生筆試題

5 [單選題]

一個黑盒子裡有若干紅球和黑球,隨機取出一個球是紅球的概率是p.現在從黑盒子中拿出等量的紅球和黑球后,隨機取出一個球是紅球的概率是q,如果p<q,那麼以下說法正確的是()

A最初紅球的個數小於黑球的個數

B最初紅球的個數大於黑球的個數

C最初紅球的個數是黑球的的2倍

D最初紅球的個數是黑球的1/2

E無法判斷最初紅球和黑球誰多誰少

參考答案:B

解析:極端想,假如拿過只後只剩下黑球,那麼再次取紅球的概率將為0,所以剩下的肯定只能是紅球,此時概率為1,當然會大於p。所以紅球一定比黑球多

6 [單選題]

以下二叉樹的後序遍歷結果是()

阿里巴巴2017實習生筆試題

A (ABCDEF)

B (ABDECF)

C (FCEDBA)

D (DEBFCA)

E (FEDCBA)

F (EDBFCA)

參考答案:D

7[單選題]

在TCP/IP建立連接過程中,客戶端和服務器端的狀態轉移說法錯誤的是?

A經歷SYN_RECV狀態

B經歷SYN_SEND狀態

C經歷ESTABLISHED狀態

D經歷TIME_WAIT狀態

E服務器在收到syn包時將加入半連接隊列

F服務器接受到客戶端的ack包後將從半連接隊列刪除

參考答案:D

解析:

TCP建立連接時,首先客戶端和服務器處於close狀態。然後客戶端發送SYN同步位,此時客戶端處於SYN-SEND狀態,服務器處於lISTEN狀態,當服務器收到SYN以後,向客戶端發送同步位SYN和確認碼ACK,然後服務器變為SYN-RCVD,客戶端收到服務器發來的SYN和ACK後,客戶端的狀態變成ESTABLISHED(已建立連接),客戶端再向服務器發送ACK確認碼,服務器接收到以後也變成ESTABLISHED。然後服務器客戶端開始數據傳輸

8 [單選題]

假設在n進制下,下面的等式成立,n值是()240*12=2880

A 19

B 18

C 17

D 16

E 15

F 以上都對

參考答案:F

解析:假設為n進值則 [2*(n^2)+4*(n^1)+0] * [1*n+2]=2*(n^3)+8*(n^2)+8*(n^1)

化簡後居然為很等式 ,n為任一值

9 [單選題]

下面關於系統調用的描述中,錯誤的是()

A系統調用把應用程序的請求傳輸給系統內核執行

B系統調用中被調用的過程運行在"用戶態"中

C利用系統調用能夠得到操作系統提供的多種服務

D是操作系統提供給編程人員的接口

E系統調用給用戶屏蔽了設備訪問的細節

F系統調用保護了一些只能在內核模式執行的操作指令

參考答案:B

解析:用戶空間與系統空間所在的內存區間不一樣,同樣,對於這兩種區間,CPU的運行狀態也不一樣。在用戶空間中,CPU處於"用戶態";在系統空間中,CPU處於"系統態"。

10 [單選題]

關於linux的I/O複用接口select和epoll,下列說法錯誤的是()

A select調用時會進行線性遍歷,epoll採用回調函數機制,不需要線性遍歷

B select的最大連接數為FD_SETSIZE

C select較適合於有大量併發連接,且活躍鏈接較多的場景

D epoll較適用於有大量併發連接,但活躍連接不多的場景

E epoll的效率不隨FD數目增加而線性下降

F epoll通過共享存儲實現內核和用戶的數據交互

參考答案:C

解析:

select 和 epoll效率差異的原因:select採用輪詢方式處理連接,epoll是觸發式處理連接。

Select:

1.Socket數量限制:該限制可操作的Socket數由FD_SETSIZE決定,內核默認32*32=1024.

2.操作限制:通過遍歷FD_SETSIZE(1024)個Socket來完成調度,不管哪個Socket是活躍的,都遍歷一遍。

Epoll

1.Socket數量無限制:該模式下的Socket對應的fd列表由一個數組來保存,大小不限制(默認4k)。

2.操作無限制:基於內核提供的反射模式,有活躍Socket時,內核訪問該Socket的callback,不需要遍歷輪詢。

但當所有的Socket都活躍的時候,所有的callback都被喚醒,會導致資源的競爭。既然都是要處理所有的Socket,

那麼遍歷是最簡單最有效的實現方式。

11 [單選題]

有無限的水源,一個5L無刻度桶和一個7L無刻度桶,則只利用這兩個無刻度桶,將不能獲得()L水

A 2

B 3

C 6

D 8

E 11

F以上均能獲得

參考答案:F

解析:只要滿足5a+7b=t即可。a, b可取任意整數,t就是能獲得的容量數。

12 [單選題]

7的2014次方這個整數的十位數字數是()

A 0

B 1

C 3

D 4

E 5

F 7

參考答案:D

解析:7^0=01

7^1=07

7^2=49

7^3=x43

7^4=x01

從此進入以4為週期的循環,2014=4*503+2,所以末尾2位應該是49。

13 [單選題]

在100-999這900個自然數中,若將組成這個數的三個數字認為是三條線段的長度,那麼是三條線段組成一個等腰三角形(包括等邊)的共有()個.

A 45

B 91

C 121

D 142

E 156

F 165

參考答案:F

解析;

先考慮等邊三角形情況

則a=b=c=1,2,3,4,5,6,7,8,9,此時n有9個

再考慮等腰三角形情況,若a,b是腰,則a=b

當a=b=1時,c<a+b=2,則c=1,與等邊三角形情況重複;

當a=b=2時,c<4,則c=1,3(c=2的情況等邊三角形已經討論了),此時n有2個;

當a=b=3時,c<6,則c=1,2,4,5,此時n有4個;

當a=b=4時,c<8,則c=1,2,3,5,6,7,有6個;

當a=b=5時,c<10,有c=1,2,3,4,6,7,8,9,有8個;

由加法原理知n有2+4+6+8+8+8+8+8=52個

同理,若a,c是腰時,c也有52個,b,c是腰時也有52個

所以n共有9+3×52=165個

14 [單選題]

下面哪個不是線性表?

A循環鏈表

B隊列

C棧

D關聯數組

E空字符串數組

F雙向鏈表

參考答案:D

15 [單選題]

下面的哪種排序算法在算複雜度平均不是O(nlogn)的?

A快速排序

B桶排序

C合併排序

D二叉樹排序樹排序

E堆排序

參考答案:B

解析:

桶排序的平均時間複雜度為線性的O(N+C),其中C=N*(logN-logM)。如果相對於同樣的N,桶數量M越大,其效率越高,最好的時間複雜度達到O(N)。 當然桶排序的空間複雜度 為O(N+M),如果輸入數據非常龐大,而桶的數量也非常多,則空間代價無疑是昂貴的。此外,桶排序是穩定的。阿里巴巴2017實習生筆試題

16 [單選題]

某創業團隊的一個很大的辦公室(障礙和遮擋可以忽略)裡有一個WIFI源,有1個工位由於距離WIFI源太遠而接收不到信號.為了提高該工位的聯網質量,準備在工位和WIFI信號源之間安裝一個無線AP(相當於中繼的,可以中轉該工位上的計算機和WIFI之間的信號).只考慮從WIFI發出的信號,如果AP離WIFI源太近,就起不到中繼的作用,如果AP離工位太遠則可能連不上WIFI.因此AP有一個最佳的安裝位置,那麼關於AP最佳安裝位置的說法正確的是()

A如果WIFI源功率越大,那麼AP最佳安裝位置越靠近WIFI源

B如果WiFi源功率越大,那麼AP最佳的安裝位置越靠近工位

C WIFI源功率和AP最佳安裝位置無關.

D AP最佳安裝位置在工位和WIFI信號源連線之外

E AP最佳安裝位置在工位和WIFI信號源連線中點

F以上說法都不對

參考答案:B

解析:

無線AP是用於接收WiFi信號,並將之傳遞給工位的。將WiFi源信號強弱範圍看作一個圓,那麼WiFi源功率越大,所能輻射到的範圍也即圓的半徑越大,越靠近工位。無線AP就是要物盡其用,在能接收到WiFi信號的前提下,將信號傳遞給工位,故在WiFi源功率越大時,AP最佳位置越靠近工位

17[單選題]

有100個金幣,分給10個人.第一個金幣等概率地分給10個人之一.之後的每一個金幣分配給第K個人的概率正比於這個人已經持有的金幣數+1.在這樣的分配機制下,關於每個人最終的金幣個數的分佈的說法錯誤的是()

A每個人得到的金幣的個數的期望是相等的

B每個人的金幣個數接近均勻分佈

C第一個金幣給哪個人,哪個人的最終金幣個數的期望就會更大

D在中間的某個階段金幣個數越多的人,未來獲得金幣的可能性越大

參考答案:B

解析:

A。由於第一個金幣是隨機等概率給人,所以每個人拿到第一個金幣的概率是一樣的,所以每個人的期望相同。

B。這種馬太效應的分佈模式怎麼可能是均勻分佈呢

C。第一個拿到金幣的人,拿到第二個金幣的概率要比其他人高一倍。

D。中間某個階段拿到較多金幣的人,他後面拿到金幣的概率也比其他人高

18 [單選題]

在自由交換的情況下,只考慮偏好,小張用自己的小刀換了小王的橡皮.關於這個交換以下說法錯誤的是:

A小張覺得橡皮比小刀更好

B小王覺得小刀比橡皮更好

C小張和小王總的財富里沒有發生變化

D小張和小王的效用值增加了

E如果把小王換成小吳,那麼這個交換可能就不會發生

F小刀和橡皮等值

參考答案:F

解析:

選項AB是對稱的,所以肯定正確,由AB可以看出題目的意圖是,這次交換靠的是物品的相對價值相當(小張覺得橡皮比小刀更好,小王覺得小刀比橡皮更好),但明顯最後一個選項等值指的是他們的絕對價值

所以,選最後一項

19 [單選題]

struct st

{

int *p;

int i;

char a;

};

int sz=sizeof(struct st);

如下C程序,在64位處理器上運行後sz的值是什麼?

A 24

B 20

C 16

D 14

E 13

F 12

參考答案:C

解析:

考點:1.struct的對齊原則,注意不同的編譯器有不同的效果。

2。不同的數據類型在32位和64位下所佔字節的區別

32位編譯器:

char :1個字節

char*(即指針變量): 4個字節(32位的尋址空間是2^32, 即32個bit,也就是4個字節。同理64位編譯器)

short int : 2個字節

int: 4個字節

unsigned int : 4個字節

float: 4個字節

double: 8個字節

long: 4個字節

long long: 8個字節

unsigned long: 4個字節

64位編譯器:

char :1個字節

char*(即指針變量): 8個字節

short int : 2個字節

int: 4個字節

unsigned int : 4個字節

float: 4個字節

double: 8個字節

long: 8個字節

long long: 8個字節

unsigned long: 8個字節

此處指針先佔用8字節。int佔用4字節,滿足要求不用補齊,char佔用一個字節,同時總的字節數必須滿足8的倍數即16

20 [單選題]

#include <iostream> #include <vector>using namespace std;int main(void){ vector<int>array; array.push_back(100); array.push_back(300); array.push_back(300); array.push_back(300); array.push_back(300); array.push_back(500); vector<int>::iterator itor; for(itor=array.begin();itor!=array.end();itor++) { if(*itor==300) { itor=array.erase(itor); } } for(itor=array.begin();itor!=array.end();itor++) { cout<<*itor<<""; } return 0;}

下面這個代碼輸出的是()

A 100 300 300 300 300 500

B 100 3OO 300 300 500

C 100 300 300 500

D 100 300 500

E 100 500

F程序錯誤

參考答案:C

解析:

vector::erase():從指定容器刪除指定位置的元素或某段範圍內的元素

vector::erase()方法有兩種重載形式

如下:

iterator erase( iterator _Where);

iterator erase( iterator _First, iterator _Last);

如果是刪除指定位置的元素時:

返回值是一個迭代器,指向刪除元素下一個元素;

如果是刪除某範圍內的元素時:返回值也表示一個迭代器,指向最後一個刪除元素的下一個元素;

在本題中,當 *itor==300成立時,刪除第一個值為300的元素,同時itor指向下一個元素(即是第二個值為300的元素),

在for(;;itor++)執行itor,itor指向第三個值為300的元素,進入下一個循環

進入循環滿足*itor==300,重複上面的過程,執行完循環,itor執行值為500的元素。

所有整個過程中,只刪除了2個值為300的元素。

21 [單選題]

下面關於一個類的靜態成員描述中,不正確的是()

A 靜態成員變量可被該類的所有方法訪問

B 該類的靜態方法只能訪問該類的靜態成員函數

C該類的靜態數據成員變量的值不可修改

D靜態成員無多態特性

參考答案:C

解析:

類的靜態成員屬於整個類 而不是某個對象,可以被類的所有方法訪問,子類當然可以父類靜態成員;

靜態方法屬於整個類,在對象創建之前就已經分配空間,類的非靜態成員要在對象創建後才有內存,所有靜態方法只能訪問靜態成員,不能訪問非靜態成員;

靜態成員可以被任一對象修改,修改後的值可以被所有對象共享。

22 [單選題]

給定的一個長度為N的字符串str,查找長度為P(P<N)的字符串在str中的出現次數.下面的說法正確的是()

A不存在比最壞時間複雜度O(NP)好的算法

B不存在比最壞時間複雜度O(N^2)好的算法

C不存在比最壞時間複雜度O(P^2)好的算法

D存在最壞時間複雜度為O(N+P)的算法

E存在最壞時間複雜度為O(log(N+P))的算法

F以上都不對

參考答案:D

解析:

樸素匹配算法 時間複雜度O((N-P+1)*P)

KMP匹配算法 時間複雜度為O(N+P)

23[單選題]

某體校選擇校服,每套校服都包括短袖運動衫,長袖運動衫,厚外套,運動長褲和運動短褲組成.每種運動服有3個備選方案.老師請了部分學生來挑選自己喜歡的校服.結果發現任意3個學生都至少在一種運動服上選擇互不相同,那麼老師最多邀請了()名學生參加挑選.

A 7

B 8

C 9

D 10

E 11

F 12

參考答案:B

解析:

每套校服都包括短袖運動衫,長袖運動衫,厚外套,運動長褲和運動短褲組成.“每種運動服”有個備選方案。說明校服一共有2^5=32種選擇方案。

任意3個學生都至少在一種運動服上選擇互不相同,假設有老師邀請了n個學生參加挑選,說明Cn 2 <32<Cn 3,得出n=8。

24 [單選題]

有4副相同的牌,每副牌有4張不同的牌.先從這16張牌中,隨機選4張出來.然後,在這4張牌中隨機選擇一張牌,然後把抽出的一張放回3張中,再隨機選擇一張牌.與上次選出的牌一樣的概率是()

A 1/4

B 1/3

C 2/5

D 1/2

E 2/3

F 3/4

參考答案:C

解析: 直接看第二次抽樣即可,與第一次抽的是同一張牌的概率是1/4,不同張的概率是3/4,同一張的話肯定是一樣,不同張的時候如果抽中一樣的牌的概率是3/15,所以答案是1/4+3/4 * 3/15 = 2/5

相關推薦

推薦中...