2011阿里巴巴集團實習生招聘筆試題 C C

2021-06-29 13:14:54 字數 4037 閱讀 8456

答案為自己整理的,歡迎批評指正。

公共題

選擇題(每題5分)

1. 若一棵二叉樹具有10個度為2的結點,則該二叉樹的度為0的結點個數是(      )

a:9    b

:11     c:12     d:不確定 

2.下列排序演算法中,其時間複雜度和記錄的初始排列無關的是(      )

a:插入排序 (預先排序,執行時間為o(n))    b:堆排序     c:快速排序  (最壞情形o(n2))  d:氣泡排序 (最壞情形o(n2), 最優o(n))

3.已知中序遍歷的序列為abcdef,高度最小的可能的二叉樹的葉子是(     )a:

ace b:

acf c:

adf        d:cdf 

4.參加百年阿里培訓的n位同學結伴去西湖旁邊為遊人指路,兩人一組,他們打算先讓體重之和恰好為102公斤的同學一組,請給出乙個演算法找到這樣的組合,或者確定他們中不存在這樣的組合,其中最優的演算法時間複雜度為?(假設體重均為整數) (     )

a:o(log(n))   b:o(n)      c:o(n log(n))    d:o(n^2)

5.眾所周知資料結構中非常基本的樹結構包括二叉查詢樹(bst)。當我們把如下序列:10,5,19,4,13,7,6,3,1按順序建立一棵bst時,樹的最大深度是?(令根節點深度為0,執行不進行平衡的基本插入) (     )

a:5    b

:4    c:3     d:2 

6.阿里巴巴啟用了新的辦公大廈,這裡的一切都充滿了現代感;工程師們打算在娛樂區用大小相等的圓形材料分割出一些空間,使用a,b,c三個圓形材料,最多可以將空間分為八個區域(包括圓形以外的區域),如果給你五個圓形材料,你最多可以幫助工程師們分出多少個空間? (     )

a:20    b:22      c:26d:32

綜合題(每題15分)

1) 分析mergesort的原理以及演算法複雜度,並用最擅長的程式語言實現merge sort。

mergesort利用分治法的原理,依次減小問題的規模。時間複雜度為o(nlog(n)), 空間複雜度為o(n);

[cpp]view plain

copy

void

mergesort(

int*p, 

intn)  

void

msort(

int*p, 

int*temp, 

intleft, 

intright)  

}  void

merge(

int*p, 

int*temp, 

intleft, 

intrightbegin, 

intright)  

else

if(p[left] > p[rightbegin])  

}  while

(left < temparray)  

temp[pos++] = p[left++];  

while

(rightbegin <= right)  

temp[pos++] = p[rightbegin++];  

while

(pos-- >= begin)  

}  給定乙個數t,

以及n個整數,在這

n個數中找到加和為

t的所有組合,

例如t = 4, n = 6,這6

個數為[4, 3, 2, 2, 1, 1],

這樣輸出就有

4個不同的組合它們的加和為

4: 4, 3+1, 2+2, and 2+1+1.  

請設計乙個高效演算法實現這個需求。

[cpp]view plain

copy

#include

#include

using

namespace

std;  

void

find(

int*p, 

intn, 

intsum);  

void

qsort(

int*p, 

intn);  

intmain()  

void

find(

int*p, 

intn, 

intsum)  

void

findsum(

int*p, 

intn, 

intsum, vector<

int> &vec)  

if(sum < *p || n < 0)  

vec.push_back(*p);  

sum -= *p;  

findsum(p+1, n-1, sum, vec);  

sum += *p;  

vec.pop_back();  

while

(*p == *(p+1) && n>0) 

//跳過重複的數字

findsum(p+1, n-1, sum, vec);  

}  void

qsort(

int*p, 

intn)  

}  }  swap(p+j+1, p+n-1);  

qsort(p, j+1);  

qsort(p+j+2, n-j-2);  

}  void

swap(

int*a, 

int*b)    

熱點題聊聊近期最吸引你的網際網路事件,談談你對此事件的看法。

c&c++部分

選擇題(每題5分)

1、int main(void)

printf("%d\n",count); return0;

}請問最終輸出的count值為(    )a:3b:4c

5d:8

2、在32位作業系統中,我們定義如下變數

int (*n)[10];

請問呼叫函式sizeof(n),返回值為(     )a

4b:40c:8d:80

3、int main(void)

請問最終輸出的i值為(    )a:2b

3c:4d:5

4、以下敘述中正確的是(     )

a:可以在乙個函式中定義另乙個函式b:main()函式必須放在其他函式之前

c

構成c++語言程式的基本單位是類d:所有被呼叫的函式一定要在呼叫之前進行定義

綜合題(每題15分)

有10億個數,這些數的值都在0~1000萬之內。請使用定義乙個資料結構實現這些數字的儲存,並實現函式get_bigger_count( unsigned value ),輸入乙個值value,返回這10億個數中比value值大的數的數目。

要求:不能使用stl,請盡量考慮效能與資源的占用。  

思路:建立乙個包含1000萬個元素的陣列,然後遍歷10億個數字,陣列用來統計對應數字出現的次數。

如果10億個數字中0~1000萬是隨機出現的,可以滿足需求。如果有乙個數字出現的次數非常的,則陣列可能溢位。 

**:

2011阿里巴巴集團實習生招聘筆試題 C C

公共題 選擇題 每題5分 1.若一棵二叉樹具有10個度為2的結點,則該二叉樹的度為0的結點個數是 a 9 b 11 c 12 d 不確定 2.下列排序演算法中,其時間複雜度和記錄的初始排列無關的是 a 插入排序 預先排序,執行時間為o n b 堆排序 c 快速排序 最壞情形o n2 d 氣泡排序 最...

阿里巴巴實習生 招聘內推

我們是阿里國際化中臺事業部,全球化是阿里巴巴經濟體的核心戰略之一,也是阿里商業作業系統的重要組成部分。在阿里有很多的國際化戰場,包括東南亞電商lazada,以及全球賣的速賣通aliexpress,同時還有daraz等眾多電商市場。未來通過中颱的能力建設,幫助業務和業務之間更好的互通,實現技術研發的網...

阿里巴巴2011屆實習生招聘筆試題及分析

完整試題 參考 下面的 分析 是我給出的。選擇題 每題5 分 1.若一棵二叉樹具有 10個度為 2的結點,則該二叉樹的度為 0的結點個數是 a 9 b 11c 12 d 不確定 2.下列排序演算法中,其時間複雜度和記錄的初始排列無關的是 a 插入排序 b 堆排序 c 快速排序 d 氣泡排序 3.已知...