1. 程式人生 > >筆試面試(2)阿里巴巴2014秋季校園招聘-軟體研發工程師筆試題詳解

筆試面試(2)阿里巴巴2014秋季校園招聘-軟體研發工程師筆試題詳解

第一部分: 單選題

1. 假設把整數關鍵碼K雜湊到N個槽列表,以下哪些雜湊函式是好的雜湊函式

          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的整數

解析:

    首先,D最複雜,當然首選D。。

    D選項使用的是隨機數法+除留餘數法。

  • 開放地扯法: 公式 Hi=(H(key)+di) MOD m i=1,2,...,k(k<=m-1)  其中,m為雜湊表的表長。di 是產生衝突的時候的增量序列
     
  • 雜湊法:設計二種甚至多種雜湊函式,可以避免衝突,但是衝突機率還是有的。
  • 鏈地址法:拉出一個動態連結串列代替靜態順序儲存結構,可以避免雜湊函式的衝突,不過缺點就是連結串列的設計過於麻煩,增加了程式設計複雜度。此法可以完全避免雜湊函式的衝突。 
  • 建立一個公共溢位區

答案:D

2. 下面排序演算法中,初始資料集的排列順序對演算法的效能無影響的是:

          A: 堆排序 B:插入排序

          C: 氣泡排序 D:快速排序

解析:

  • 插入排序:最優時間複雜度On)最差時間複雜度On^2)平均時間複雜度On^2
  • 氣泡排序:最優時間複雜度On)最差時間複雜度On^2)平均時間複雜度
    On^2
  • 快速排序:最優時間複雜度Onlogn)最差時間複雜度On^2)平均時間複雜度Onlogn
  • 堆排序:最優時間複雜度Onlogn)最差時間複雜度Onlogn)平均時間複雜度Onlogn))

答案:A

3. 下面說法錯誤的是:

         A: CISC計算機比RISC計算機指令多

        B: 在指令格式中,採用擴充套件操作碼設計方案的目的是為了保持指令字長不變而增加定址空間

        C:增加流水線段數理論上可以提高CPU頻率

        D:馮諾依曼體系結構的主要特徵是儲存程式的工作方式

解析: 

A:RISC設計原則:指令條數儘可能少,一般為幾十條指令;定址方式儘可能少;採用等長指令,不管功能複雜的還是簡單的指令,均用同一長度;設計儘可能多的通用暫存器

B:在指令格式中,採用擴充套件操作碼設計方案的目的是為了保持指令字長不變而增加指令操作的數量

C:流水線設計可最大限度地利用了CPU資源,使每個部件在每個時鐘週期都在工作,從而提高了CPU的運算頻率。CPU採用級數更多的流水線設計可使它在同一時間段內處理更多的指令,有效提高其執行頻率。

答案:B

4. 不屬於馮諾依曼體系結構必要組成部分是:

        A:CPU B: Cache C:RAM D:ROM

解析:

    馮諾依曼體系結構:

答案:B

5. 一個棧的入棧序列式ABCDE則不可能的出棧序列是:

        A:DECBA B:DCEBA  C:ECDBA  D:ABCDE

解析:騰訊2014筆試題也有這一題,畫一下。。

答案:C

6.你認為可以完成編寫一個C語言編譯器的語言是:

A:彙編 B:C語言 C:VB D:以上全可以

解析:彙編肯定的可以的;任何語言都是可以自解釋的,也就是可以用自己編寫編譯器解釋自己,所以B也是對的;C應該也可以,不過答案已經出來了。

答案:D

7. 關於C++/JAVA類中的static成員和物件成員的說法正確的是:

A:static成員變數在物件構造時候生成

B: static成員函式在物件成員函式中無法呼叫

C: 虛成員函式不可能是static成員函式

D: static成員函式不能訪問static成員變數

解析:

    A:static成員變數在類的定義時初始化,不可以在物件的建構函式中初始化

    B:static成員函式在物件成員函式中可以呼叫,同屬於一個類作用域

    C:static成員函式不可以宣告為const和virtual

    D:static成員函式只能訪問static成員變數

答案:C

8:


解析:不會。。女朋友教我的

從A到Z的最短路徑一定會有兩條豎線

只看豎線組合 路線不能往回走 看上面的四條豎線 第一條,下面4條豎線都可以選擇,有4種走法 第二條,有4種 第三條,有3種 第四條,有2種 

答案:C

9:某程序在執行過程中需要等待從磁碟上讀入資料,此時程序的狀態將:

A: 從就緒變為執行  B:從執行變為就緒

C: 從執行變為阻塞  D:從阻塞變為就緒

解析:
  • 執行狀態(Running):程序佔用處理器資源;處於此狀態的程序的數目小於等於處理器的數目。在沒有其他程序可以執行時(如所有程序都在阻塞狀態),通常會自動執行系統的空閒程序。
  • 就緒狀態(Ready):程序已獲得除處理器外的所需資源,等待分配處理器資源;只要分配了處理器程序就可執行。就緒程序可以按多個優先順序來劃分佇列。例如,當一個程序由於時間片用完而進入就緒狀態時,排人低優先順序佇列;當程序由I/O操作完成而進入就緒狀態時,排入高優先順序佇列
  • 阻塞狀態(Blocked):當程序由於等待I/O操作或程序同步等條件而暫停執行時,它處於阻塞狀態
答案:C

10:下面演算法的時間複雜度為:

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!)

解析:做了n次乘法,時間複雜度為O(n)

答案:B

11: n從1開始,每個操作可以選擇對n加1或者對n加倍。若想獲得整數2013,最少需要多少個操作。

A:18    B:24   C:21  D;不可能

解析:逆推法,遇到偶數用除法

2013->2012->1006->503->502->251->250->125->124->62->31->30->15->14->7->6->3->2->1

正向只能是+1和×2,所以逆向只能-1和/2,由上過程可得18次

答案:A

12:對於一個具有n個頂點的無向圖,若採用鄰接表資料結構表示,則存放表頭節點的陣列大小為:

A: n  B: n+1    C: n-1   D:n+邊數

解析:圖的鄰接表表示

答案:A

13:


解析:不會,搬磚了。。對於幾何中的每個字串取hash可以看作是同分布的獨立重複事件,所以每一個事件出現10的概率都是p=1/1024,那麼當出現的時候,期望的次數就是1/p,1024.

答案:A.

14:如下函式,在32bit系統foo(2^31-3)的值是:

Int foo(int x){

Return x&-x;

}

A: 0   B: 1  C:2 D:4

解析:我很2地把2^31理解為2的31次方。。不好意思解釋了,大家直接參考這邊吧:

對於x & -x的含義:返回值為0,表示x=0;返回值為1,表示x為奇數;返回值為其他數,表示x為x與2^64的最大公約數,即二進位制中從右到左的第一個1出現的位數

擴充套件:x & (x-1) 表示x進進制中1的個數,每執行一次x = x&(x-1),會將x用二進位制表示時最右邊的一個1變為0,因為x-1將會將該位(x用二進位制表示時最右邊的一個1)變為0


答案:C

15:對於順序儲存的線性陣列,訪問節點和增加節點刪除節點的時間複雜度為:

A: O(n),O(n)    B:O(n),O(1)     C:O(1),O(n)     D:O(n),O(n)

解析:基礎

答案:C

16:在32為系統環境,編譯選項為4位元組對齊,那麼sizeof(A)和sizeof(B)是:

Struct A{

    Int a;

    short b;

    int c;

    char d;

};

Struct B{

    int a;

    short b;

    char c;

    int d;

};

A: 16,16    B:13,12   C:16,12   D:11,16

解析:記憶體對齊,B中b和c佔用一個4位元組,A中b和c各佔一個4位元組。

答案:C

17:袋中有紅球,黃球,白球各一個,每次任意取一個放回,如此連續3次,則下列事件中概率是8/9的是:

A: 顏色不全相同     B:顏色全不相同    C:顏色全相同    D:顏色無紅色

解析:

顏色不全相同:1 - ( 1/3 * 1/3 * 1/3 ) * 3 = 8/9

顏色全不相同:1/3 * ( 1 - 1/3 ) * ( 1 - 1/3 - 1/3 ) = 2/9

顏色全相同:    ( 1/3 * 1/3 * 1/3 ) * 3 = 1 /9

顏色無紅色:    ( 1 - 1/3 ) * ( 1 - 1/3 ) * ( 1 - 1/3 ) = 8/27

答案:A

18:一個洗牌程式的功能是將n張牌的順序打亂,以下關於洗牌程式的功能定義說法最恰當的是:

A: 每張牌出現在n個位置上的概率相等

B: 每張牌出現在n個位置上的概率獨立

C: 任何連續位置上的兩張牌的內容獨立

D: n張牌的任何兩個不同排列出現的概率相等

答案:A

19:用兩種顏色去染排成一個圈的6個棋子,如果通過旋轉得到則只算一種,一共有多少種染色:

A: 10 B:11 C:14: D:15

解析:應該有14種方案,設只有黑白兩色,預設白色,那麼,用p(n)表示有n個黑棋的種類

p(0)=p(6)=1

p(1)=p(5)=1

p(2)=p(4)=3 //相鄰的一種,隔一個的一種,兩個的一種

p(3)=4 //都相鄰的一種,BB0B的一種,BB00B的一種,B0B0B的一種,一共4種

綜上是14種

答案:C

20:遞迴式的先序遍歷一個n節點,深度為d的二叉樹,則需要棧空間的大小為:

A: O(n) B:O(d)  C:O(logn)  D:(nlogn)

解析:根節點訪問到葉子節點後就回溯了。所以所需要棧的最大空間為樹的深度。

答案:B

第二部分:多選

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

解析:語句執行順序組合,但是執行緒內的子句順序不可變。

答案:ABD

22.關於Linux系統的負載,以下表述正確的是:

A: 通過就緒和執行的程序數來反映

B: 通過TOP命令檢視

C: 通過uptime檢視

D: Load:2.5,1.3,1.1表示系統的負載壓力在逐漸變小

答案:BC(對於A不確定)

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)

答案:D

解釋:歸併排序的平均時間複雜度O(nlogn),最壞O(nlogn)

24:假設函式rand_k會隨機返回一個【1,k】之間的隨機數(k>=2),並且每個整數出現的概率相等。目前有rand_7,通過呼叫rand_7()和四則運算子,並適當增加邏輯判斷和迴圈控制邏輯,下列函式可以實現的有:
A:rand_3 B:rand_21  C:rand_23  D:rand_49

答案:ABCD

解釋:對於rand_xx<7)的直接截斷,只要rand數大於x直接忽略,保證rand_x能夠做到概率相等。而對於其他的則採用7×rand_7+rand_7,可以-7得到rand_49,然後截斷成rand_42,統一除以2,則是rand_21,其他類似。

第三部分 填空與問答

25、某二叉樹的前序遍歷序列為-+a*b-cd/ef,後序遍歷序列為abcd-*+ef/-,問其中序遍歷序列是___。

答案:a+b*c-d-e/f

26、某快取系統採用LRU淘汰演算法,假定快取容量為4,並且初始為空,那麼在順序訪問以下資料項的時候1,5,1,3,2,4,1,2出現快取命中的次數是___。最後快取中即將準備淘汰的資料項是___。

答案:3,3

解釋:(LRU是Least Recently Used 近期最少使用演算法。)1-》1,5-》5,1-》5,1,3-》5,1,3,2-》1,3,2,4-》3,2,4,1-》3,4,1,2-》

首先1調入記憶體,然後5調入記憶體,然後1調入記憶體(命中快取),然後3調入記憶體,然後2調入記憶體,然後4調入記憶體(將最少使用的5置換出記憶體),然後1調入記憶體(命中快取),然後2調入記憶體(命中快取)。最後,最少使用的3將面臨被置換出的危險。

27、兩個較長的單向連結串列a和b,為了找出節點node滿足node in a並且node in b。請設計空間使用盡量小的演算法(用c/c++,java 或者虛擬碼)

答案:除了遍歷,沒有想到更好的辦法。。網上搜的一種做法,感覺不對啊。。有答案的歡迎指點。

28、當儲存資料量超出單節點資料管理能力的時候,可以採用的辦法有資料庫sharding的解決方案,也就是按照一定的規律把資料分散儲存在多個數據管理節點N中(節點編號為0,1,2,,,,N-1)。假設儲存的資料時a  請完成為資料a計算儲存節點的程式。

答案:進行一次雜湊,獲取節點編號即可。原題中有給出程式碼,很簡單,這裡不再給出。

29、宿舍內5個同學一起玩對戰遊戲。每場比賽有一些人作為紅方,另一些人作為藍方。請問至少需要多少場比賽,才能使任意兩個人之間有一場紅方對藍方和藍方對紅方的比賽? 

解析:

一次劃分中,某方可以有1人,另一方有4人或某方有2人,另一人有3人。

要使任意兩個人之間有一場紅方對藍方和藍方對紅方的比賽,假設5個同學為A,B,C,D,E,相當有有向圖的5個節點,任意兩個節點間有兩個方向的邊連線。

即總的節點關係有(5個節點中選取兩個節點)A(5,2)=5*4=20個關係。

而一次比賽(一次劃分)能夠生成的關係(一方兩人一方三人的劃分)c(2,1)*c(3,1)=2*3=6或者(一方四人一方一人的劃分)c(4,1)*(c(1,1)=4*1=4,

所以一場比賽(一次劃分)最多生成的關係次數為6

所以需要20/6=3.33..即至少需要4場比賽

相關推薦

筆試面試2阿里巴巴2014秋季校園招聘-軟體研發工程師試題

第一部分: 單選題 1. 假設把整數關鍵碼K雜湊到N個槽列表,以下哪些雜湊函式是好的雜湊函式           A: h(K)=K/N;           B: h(K)=1;           C: h(K)=K mod N;           D: h(K)=

筆試面試3阿里巴巴2014試題(9月22北京

   第一部分 單選題(前10題,每題2分;後10題,每題3分。選對得滿分,選錯倒扣1分,不選得0分) 1、一次記憶體訪問,SSD硬碟訪問和SATA硬碟隨機訪問的時間分別是()    A、幾微秒,幾毫秒,幾十毫秒B、幾十納秒,幾十毫秒,幾十毫秒    C、幾十納秒

筆試面試4百度2014軟體開發工程師試題

一.簡答題 1.簡述iso的7層設計 解析: 應用層:提供應用程式間通訊表示層:處理資料格式、資料加密等會話層:建立、維護和管理會話運輸層:建立主機端到端連線網路層:定址和路由選擇資料鏈路層:介質訪問,鏈路管理物理層:位元流傳輸 2.如何在多個程序間進行資料共享(至

阿里巴巴2015秋季校園招聘前端開發工程師線上試題及答案

前幾天是阿里巴巴秋季校園招聘線上筆試的第一天,本著學習和共享的精神,本人上網百度了其中一份前端線上筆試題,並且寫出了自己的答案,發上來,供大家參考。 總的來說,這一次的題目相比以前的題目,最大的特點是新,居然直接考了nodejs,這是出乎很多人的意料的。廢話不多說,接下

國內物聯網平臺2——阿里雲物聯網套件

                     國內物聯網平臺(2)——阿里雲物聯網套件  作者:馬智 架構 資料通道 為裝置和物聯網應用程式提供釋出和接收訊息的安

資料庫筆試面試第一版——根據題目完成以下50道SQL語句

已知有如下4張表: 學生表:STUDENT(S#,SNAME,SAGE,SSEX) 課程表:COURSE(C#,CNAME,T#) 成績表:SC(S#,C#,SCORE) 教師表:TEACHER(T#,TNAME) 其中,S#代表學號,SNAME代表學生姓名,SAG

一步一個腳印筆試面試—google2013年校園招聘試題答案

  (注:答案全部自己個人,希望指正討論)   1.單項選擇題 1.1    使用C語言將一個1G位元組的字元陣列從頭到尾全部設定為字元'A',在一臺典型的當代PC上,需要花費的CPU時間的數量級最接近:     &

阿里巴巴JAVA程式設計規範之異常日誌

反例:public int f(){ returnInteger物件},如果為null,自動解箱拋NPE。 2)資料庫的查詢結果可能為null。 3)集合裡的元素即使isNotEmpty,取出的資料元素也可能為null。 4)遠端呼叫返回物件,一律要求進行NPE判斷。 5)對於Session中獲取的資料,建

阿里巴巴開發的德魯伊連線池 druid配置 號稱世界第一

java程式很大一部分要操作資料庫,為了提高效能操作資料庫的時候,有不得不使用資料庫連線池。資料庫連線池有很多選擇,c3p、dhcp、proxool等,druid作為一名後起之秀,憑藉其出色的效能,也逐漸印入了大家的眼簾。接下來本教程就說一下druid的簡單使用。 和dbcp類似,druid的配置項

網上收集的C++筆試題目2

說明:下劃線是我認為的答案,僅供參考。 【Q1】 Which of the following statements describe the results of executing the cod

數據挖掘筆試面試13

nic 簡化 tis con cos 常見面試題 tao 規劃 inf 【校招面經】機器學習與數據挖掘常見面試題整理 part9 2018年08月04日 22:10:31 稻蛙 閱讀數:203 八十、SVM的核函數 fro

數據挖掘筆試面試9

也有 描述 布朗 near || 數據 簡單的 開始 我只 【校招面經】機器學習與數據挖掘常見面試題整理 part4 2018年07月25日 12:43:21 稻蛙 閱讀數:149 五十一、Hinge loss Hinge

數據挖掘筆試面試5

梯度下降 分支 The gpo 得到 自己的 .org 優化方法 原則   前言:   找工作時(IT行業),除了常見的軟件開發以外,機器學習崗位也可以當作是一個選擇,不少計算機方向的研究生都會接觸這個,如果你的研究方向是機器學習/數據挖掘之類,且又對其非常感興

數據挖掘筆試面試7

tails 優缺點 oos learning 的區別 問題 tracking 同時 感知器 【校招面經】機器學習與數據挖掘常見面試題整理 part2 2018年07月25日 12:36:40 稻蛙 閱讀數:150 三十、隨機

數據挖掘筆試面試12

mod 反向 樹根 詳細 模型 word2vec 時代 只需要 當我 【校招面經】機器學習與數據挖掘常見面試題整理 part8 2018年08月04日 21:46:27 稻蛙 閱讀數:266 七十六、t-SNE from:

數據挖掘筆試面試10

求導 統計學 -i random statistic read 混合 max ood 【校招面經】機器學習與數據挖掘常見面試題整理 part5 2018年08月04日 15:58:45 稻蛙 閱讀數:105 五十九、計量經濟

數據挖掘筆試面試6

標準 重要 動態 我們 eat 但是 不變 最終 二次 【校招面經】機器學習與數據挖掘常見面試題整理 part1 2018年07月23日 00:12:13 稻蛙 閱讀數:938 註:以下是本人春招時看面經時收集的常見面試題,

阿里巴巴JAVA程式設計規範之MYSQL規約

(一) 建表規約 1. 【強制】表達是與否概念的欄位,必須使用is_xxx的方式命名,資料型別是unsignedtinyint  (1表示是,0表示否),此規則同樣適用於odps建表。  說明:任何欄位如果為非負數,必須是unsigned。 2. 【強制】表名、欄位名必

阿里巴巴JAVA程式設計規範之工程規約

開放介面層:可直接封裝Service介面暴露成RPC介面;通過Web封裝成http介面;閘道器控制層等。終端顯示層:各個端的模板渲染並執行顯示層。當前主要是velocity渲染,JS渲染,JSP渲染,移動端展示層等。 ·Web層:主要是對訪問控制進行轉發,各類基本引數校驗,或者不復用的業務簡單處理等。 ·S

老司機帶你玩轉面試2:Redis 過期策略以及快取雪崩、擊穿、穿透

![](https://cdn.geekdigging.com/Interview/mianshi_header_1.jpg) ## 前文回顧 建議前一篇文章沒看過的同學先看下前面的文章: [「老司機帶你玩轉面試(1):快取中介軟體 Redis 基礎知識以及資料持久化」](https://www.gee