- 相關(guān)推薦
哈爾濱阿里巴巴筆試題
1. 單選題
1. 假設(shè)把整數(shù)關(guān)鍵碼K散列到N個槽列表,以下哪些散列函數(shù)是好的散列函數(shù)
A: h(K)=K/N;
B: h(K)=1;
C: h(K)=K mod N;
D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的整數(shù)
2. 下面排序算法中,初始數(shù)據(jù)集的排列順序?qū)λ惴ǖ男阅軣o影響的是:
A: 堆排序 B:插入排序
C: 冒泡排序 D:快速排序
3. 下面說法錯誤的是:
A: CISC計算機比RISC計算機指令多
B: 在指令格式中,采用擴展操作碼設(shè)計方案的目的是為了保持指令字長不變而增加尋址空間
C:增加流水線段數(shù)理論上可以提高CPU頻率
D:馮諾依曼體系結(jié)構(gòu)的主要特征是存儲程序的工作方式
4. 不屬于馮諾依曼體系結(jié)構(gòu)必要組成部分是:
A:CPU B: Cache C:RAM D:ROM
5. 一個棧的入棧序列式ABCDE則不可能的出棧序列是:
A:DECBA B:DCEBA C:ECDBA D:ABCDE
6.你認為可以完成編寫一個C語言編譯器的語言是:
A:匯編 B:C語言 C:VB D:以上全可以
7. 關(guān)于C++/JAVA類中的static成員和對象成員的說法正確的是:
A:static成員變量在對象構(gòu)造時候生成
B: static成員函數(shù)在對象成員函數(shù)中無法調(diào)用
C: 虛成員函數(shù)不可能是static成員函數(shù)
D: static成員函數(shù)不能訪問static成員變量
8:看不清
9:某進程在運行過程中需要等待從磁盤上讀入數(shù)據(jù),此時進程的狀態(tài)將:
A: 從就緒變?yōu)檫\行 B:從運行變?yōu)榫途w
C: 從運行變?yōu)樽枞?D:從阻塞變?yōu)榫途w
10:下面算法的時間復(fù)雜度為:
Int f(unsigned int n)
{
If(n==0||n==1)
Return 1;
Else
Return n*f(n-1);
}
A: O(1) B:O(n) C:O(N*N) D:O(n!)
11: n從1開始,每個操作可以選擇對n加1或者對n加倍,
哈爾濱阿里巴巴筆試題
。若想獲得整數(shù)2013,最少需要多少個操作。A:18 B:24 C:21 D;不可能
12:對于一個具有n個頂點的無向圖,若采用鄰接表數(shù)據(jù)結(jié)構(gòu)表示,則存放表頭節(jié)點的數(shù)組大小為:
A: n B: n+1 C: n-1 D:n+邊數(shù)
13:不全
14:如下函數(shù),在32bit系統(tǒng)foo(2^31-3)的值是:
Int foo(int x)
{
Return x&-x;
}
A: 0 B: 1 C:2 D:4
15:對于順序存儲的線性數(shù)組,訪問節(jié)點和增加節(jié)點刪除節(jié)點的時間復(fù)雜度為:
A: O(n),O(n) B:O(n),O(1) C:O(1),O(n) D:O(n),O(n)
16:在32為系統(tǒng)環(huán)境,編譯選項為4字節(jié)對齊,那么sizeof(A)和sizeof(B)是:
Struct A
{
Int a;short b;int c;char d;
};
Struct B
{int a;short b;char c;int c;};
A: 16,16 B:13,12 C:16,12 D:11,16
17:袋中有紅球,黃球,白球各一個,每次任意取一個放回,如此連續(xù)3次,則下列事件中概率是8/9的是:
A: 顏色全相同 B:顏色全不相同C:顏色全相同D:顏色無紅色
18:一個洗牌程序的功能是將n張牌的順序打亂,以下關(guān)于洗牌程序的功能定義說法最恰當?shù)氖牵?/p>
A: 每張牌出現(xiàn)在n個位置上的概率相等
B: 每張牌出現(xiàn)在n個位置上的概率獨立
C: 任何連續(xù)位置上的兩張牌的內(nèi)容獨立
D: n張牌的任何兩個不同排列出現(xiàn)的概率相等
19:用兩種顏色去染排成一個圈的6個棋子,如果通過旋轉(zhuǎn)得到則只算一種,一共有多少種染色:
A: 10 B:11 C:14: D:15
20:遞歸式的先序遍歷一個n節(jié)點,深度為d的二叉樹,則需要棧空間的大小為:
A: O(n) B:O(d) C:O(logn) D:(nlogn)
第二部分:多選
21:兩個線程運行在雙核機器上,每個線程主線程如下,線程1:x=1;r1=y;線程2:y=1;r2=x;X和y是全局變量,初始為0。以下哪一個是r1和r2的可能值:
A: r1=1,r2=1
B: r1=1,r2=0
C:r1=0,r2=0
D:r1=0,r2=1
22.關(guān)于Linux系統(tǒng)的負載,以下表述正確的是:
A: 通過就緒和運行的進程數(shù)來反映
B: 通過TOP命令查看
C: 通過uptime查看
D: Load:2.5,1.3,1.1表示系統(tǒng)的負載壓力在逐漸變小
23:關(guān)于排序算法的以下說法,錯誤的是:
A: 快速排序的平均時間復(fù)雜度O(nlogn),最壞O(N^2)
B:堆排序平均時間復(fù)雜度O(nlogn),最壞O(nlogn)
C:冒泡排序平均時間復(fù)雜度O(n^2),最壞O(n^2)
D:歸并排序的平均時間復(fù)雜度O(nlogn),最壞O(n^2)
24:假設(shè)函數(shù)rand_k會隨機返回一個【1,k】之間的隨機數(shù)(k>=2),并且每個證書出現(xiàn)的概率相等,
資料共享平臺
《哈爾濱阿里巴巴筆試題》(http://www.ishadingyu.com)。目前有rand_7,通過調(diào)用rand_7()和四則運算符,并適當增加邏輯判斷和循環(huán)控制邏輯,下列函數(shù)可以實現(xiàn)的有:A:rand_3 B:rand_21 C:rand_23 D:rand_49
3.(6分)兩個較長的單向鏈表a和b,為了找出及誒單noed滿足node in a
并且node in b。請設(shè)計空間使用盡量小的算法(用c/c++,java 或者偽代碼)
答案網(wǎng)上找的
我們定義節(jié)點的距離為節(jié)點到鏈表開始所經(jīng)過的節(jié)點數(shù)。如果兩個鏈表長度相同,則相交節(jié)點其在兩個鏈表上的距離一定相等。對于長度不同的兩個鏈表,我們可以采用對齊的方式,使其向長度短的鏈表對齊。這樣就可以應(yīng)用上面的思路。具體算法如下:
struct node
{
int v;
node *next;
};
/*
返回鏈表的長度
鏈表為空 返回0
*/
size_t listLen(node * p)
{
size_t num = 0;
while (p!=NULL)
{
num++;
p = p->next;
}
return num;
}
// 如果找到了 則返回指針 指向公共節(jié)點
// 如果不存在 則返回空指針
node * findFirstCommenNode(node * pheada, node * pheadb)
{
size_t lenA = listLen(pheada);
size_t lenB = listLen(pheadb);
node * plistA = pheada;
node * plistB = pheadb;
//調(diào)整長度
//plistA 指向較長的一個
if (lenA < lenB)
{
plistB = pheada;
plistA = pheadb;
size_t t = lenA;
lenA = lenB;
lenB = t;
}
while(lenA > lenB)
{
plistA = plistA->next;
--lenA;
}
//一樣長了
//尋找公共節(jié)點
while (plistA!=NULL && plistA != plistB)
{
plistA = plistA->next;
plistB = plistB->next;
}
return plistA;
}
算法的空間復(fù)雜度O(1),時間復(fù)雜度O(m+n),效果不錯吧。
2、當存儲數(shù)據(jù)量超出單節(jié)點數(shù)據(jù)管理能力的時候,可以采用的辦法有數(shù)據(jù)庫sharding的解決方案,也就是按照一定的規(guī)律把數(shù)據(jù)分散存儲在多個數(shù)據(jù)管理節(jié)點N中(節(jié)點編號為0,1,2,,,,N-1)。
假設(shè)存儲的數(shù)據(jù)時a 請完成為數(shù)據(jù)a計算存儲節(jié)點的程序。
#define N 5
int hash(int element){
return element*2654435761;
}
int shardingIndex(int a){
int p = hash(a);
_________________________; //這里是空格
return p;
}
3、(8分)宿舍內(nèi)5個同學(xué)一起玩對戰(zhàn)游戲。每場比賽有一些人作為紅方,另一些人作為藍方。請問至少需要多少場比賽,才能使任意兩個人之間有一場紅方對藍方和藍方對紅方的比賽?
4、一個有10億條記錄的文本文件,已按照關(guān)鍵字排好序存儲。請設(shè)計算法,可以快速的從文件中查找指字關(guān)鍵字的記錄
【哈爾濱阿里巴巴筆試題】相關(guān)文章:
哈爾濱阿里巴巴筆試題目07-25
阿里巴巴程序筆試題09-28
阿里巴巴筆試題目09-11
哈爾濱萬科筆經(jīng)分享08-27
阿里巴巴校招筆試題07-31
阿里巴巴軟件測試常見筆試題05-21
阿里巴巴實習(xí)生筆試題09-18
阿里巴巴測試筆試題目09-15
360筆試題目06-27