1. 程式人生 > >阿里巴巴集團2014秋季校園招聘筆試題

阿里巴巴集團2014秋季校園招聘筆試題

               

轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11931173第一部分 單選題(前10題,每題2分;後10題,每題3分,共50分,選對得滿分,選錯倒扣1分,不選得0分)1、假設把整數關鍵碼K雜湊到有N個槽的散列表,以下哪些雜湊函式是好的雜湊函式()A、h(K)=K mod N;B、h(K)=1;C、h(K)=K/N;D: h(K)=(K+rand(N)) mod N, rand(N)返回一個0到N-1的整數2. 下面排序演算法中,初始資料集的排列順序對演算法的效能無影響的是()A、堆排序      B、插入排序C、氣泡排序    D、快速排序3、下面說法錯誤的是:A、CISC計算機比RISC計算機指令多B、馮諾依曼機體系結構的主要特徵是儲存程式的工作方式C、增加流水線段數理論上可以提高CPU頻率D、在指令格式中,採用擴充套件操作碼設計方案的目的是為了保持指令字長不變而增加定址空間

4、不屬於馮諾依曼機體系結構必要組成部分的是:A、CPU          B、Cache        C、RAM        D、ROM5、一個棧的入棧序列式ABCDE,則不可能的出棧序列是:A、DECBA          B、DCEBA          C、ECDBA       D、ABCDE6.你認為可以完成編寫一個C語言編譯器的設計語言是:A、組合語言        B、C語言       C、VB語言       D、以上皆可7. 關於C++/JAVA類中的static成員和物件成員的說法正確的是:A、虛成員函式不可能是static成員函式B、static成員函式在物件成員函式中無法呼叫C、static成員變數在物件構造時生成D、static成員函式不能訪問static成員變數8、

C、13個9、某程序在執行過程中需要等待從磁碟上讀入資料,此時該程序的狀態將:A、從就緒變為執行       B、從執行變為就緒C、從執行變為阻塞       D、從阻塞變為就緒10、下面演算法的時間複雜度為:

int f(unsigned int n)if(n == 0 || n == 1)  return 1else  return n*f(n-1);}
A、O(1)        B、O(n)        C、O(N*N)       D、O(n!)11、n從1開始,每個操作可以選擇對n加1或者對n加倍。若想獲得整數2013,最少需要多少個操作。A、24        B、21        C、18
      D、不可能12、對於一個具有n個頂點的無向圖,若採用鄰接表資料結構表示,則存放表頭節點的陣列大小為:A、n         B、n+1       C、n-1      D、n+邊數14:如下函式,在32bit系統foo(2^31-3)的值是:
int foo(int x)return x&-x;}
A、0         B、1          C、2         D、415、對於順序儲存的線性陣列,訪問節點和增加、刪除節點的時間複雜度為:A、O(n),O(n)         B、O(n),O(1)         C、O(1),O(n)          D、O(1),O(1)16、在32位系統環境中,編譯選項為4位元組對齊,那麼sizeof(A)和sizeof(B)是:
struct A{ int a; short b; int c; char d;};struct B{ int a; short b; char d; int c;};
A、16,16               B、16,12            C、13,12       D、11,1617、袋中有紅球,黃球,白球各一個,每次任意取一個又放回,如此連續抽取3次,則下列事件中概率是8/9的是:A、顏色不全相同            B、顏色全相同          C、顏色全不同         D、顏色無紅色18、一個洗牌程式的功能是將n張牌的順序打亂,以下關於洗牌程式的功能定義說法最恰當的是:A、任何連續位置上的兩張牌的內容獨立B、n張牌的任何兩個不同排列出現的概率相等C、每張牌出現在n個位置上的概率相等D、每張牌出現在n個位置上的概率獨立19、用兩種顏色去染排成一個圈的6個棋子,如果通過旋轉得到則只算一種,一共有多少種染色模式。A、10         B、14         C、15         D、1620、遞迴式的先序遍歷一個n節點,深度為d的二叉樹,則需要棧空間的大小為:A: O(logn)           B:O(nlogn)          C:O(n)             D:(d)第二部分 不定向選項(4題,每題5分,完全正確計5分,漏選計2分,不選計0分,多選、錯選計-2分)轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/1193117321、兩個執行緒執行在雙核機器上,每個執行緒主執行緒如下,執行緒1:x=1;r1=y;執行緒2:y=1;r2=x;x和y是全域性變數,初始為0。以下哪一個是r1和r2的可能值:A、r1=0,r2=0B、r1=1,r2=0C、r1=1,r2=1D、r1=0,r2=122、關於Linux系統的負載(Load),以下表述正確的是:A: Load:2.5,1.3,1.1表示系統的負載壓力在逐漸減小B: 通過就緒和執行的程序數來反映C: 通過TOP命令檢視D: 通過uptime檢視23、關於排序演算法的以下說法,錯誤的是:A、歸併排序的平均時間複雜度O(nlogn),最壞時間複雜度O(n^2)B、堆排序平均時間複雜度O(nlogn),最壞時間複雜度O(nlogn)C、氣泡排序平均時間複雜度O(n^2),最壞時間複雜度O(n^2)D、快速排序的平均時間複雜度O(nlogn),最壞時間複雜度O(N^2)24、假設函式rand_k會隨機返回一個【1,k】之間的隨機數(k>=2),並且每個證書出現的概率相等。目前有rand_7,通過呼叫rand_7()和四則運算子,並適當增加邏輯判斷和迴圈控制邏輯,下列函式可以實現的有:A、rand_3         B、rand_21          C、rand_23         D、rand_47第三部分 填空與問答25、某二叉樹的前序遍歷序列為-+a*b-cd/ef,後序遍歷序列為abcd-*+ef/-,問其中序遍歷序列是:26、某快取系統採用LRU淘汰演算法,假定快取容量為4,並且初始為空,那麼在順序訪問以下資料項的時候,1、5、1、3、5、2、4、1、2,出現快取直接命中的次數是(),最後快取中即將準備淘汰的資料項是()27、有兩個較長的單向連結串列a和b,為了找出節點node滿足node in a 並且 node in b,請設計空間使用盡量小的演算法。(用C/C++/JAVA或偽碼錶示都可以)28、當儲存資料量超出單節點資料管理能力的時候,可以採取的辦法有資料庫sharding的解決方案,也就是按照一定的規律把資料分散儲存在多個數據管理節點N中(節點編號0.1.2...N-1)。假設儲存的資料是a,請完成為資料a計算儲存節點的程式。(沒學過C語言的同學也可以用偽碼完成)
#define N 5int hash(int element)return element*2654435761;}int shardingIndex(int a)int p = hash(a); //1 return p;}
空格1處:     p %= N;29、宿舍內5個同學一起玩對戰遊戲,每場比賽有一些人作為紅方,另一些人作為藍方,請問至少需要多少場比賽,才能使任意兩個人之間有一場紅方對藍方和一場藍方對紅方的比賽?答案為4場。第四部分 JAVA選做題1、以下每個執行緒輸出的結果是什麼?(不用關注輸出的順序,只需寫出輸出的結果集即可)2、一個有10億條記錄的文字檔案,已按照關鍵字排好序儲存,請設計演算法,可以快速的從檔案中查詢關鍵字的記錄。轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11931173C++選做題Part I假設你有一臺計算機,配置如下:48GB記憶體16核CPU,3.0GHz12塊2TB SATA硬碟有兩個資料檔案A和B,A的大小是40GB,B的大小是2TB,A和B的檔案格式一樣,都包含等長的100位元組的記錄,記錄的前20個位元組表示key,後80個位元組表示value,所有的key和value都由數字和大小寫字母組成(0-9 A-Z a-z),同一個檔案中的key沒有排序,也沒有重複。檔案A和B都切成了1GB(1*10^9位元組)的資料塊(名為A000001、A000002......A000010、B000001、B000002......B002000),均勻分佈在6塊硬碟上。請問如何用最快的方法找到A和B之間共同的key,以及他們對應的value值(建議輸出格式如下所示:<key><空格><A中對應value><空格><B中對應value>)請描述你的方法裡面用到的關鍵的資料結構和演算法,估算這個方法需要的記憶體空間和運算時間,並說明你的推導過程。Part II如果你有100臺伺服器,每臺配置如上描述,它們通過千兆網路組成一個叢集,任意兩臺之間的頻寬可以達到1000Mbps,同時假設檔案A和B的大小也放大100倍(各位4TB和200TB),並且被切分成1GB的碎片,均勻分佈在100臺伺服器上。請問如何用最快的方法找到A和B之間共同的key,以及他們對應的value值(建議輸出格式如下所示:<key><空格><A中對應value><空格><B中對應value>)請描述你的方法裡面用到的關鍵的資料結構和演算法,估算這個方法需要的記憶體空間、網路流和運算時間,並說明你的推導過程。轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11931173程式碼