阿里巴巴歷年筆試面試70題 6 10

2021-07-02 22:33:40 字數 1903 閱讀 5814

6、25匹賽馬,5個跑道,也就是說每次有5匹馬可以同時比賽。問最少比賽多少次可以知道跑得最快的5匹馬

將馬分成a、b、c、d、e五組。

第1-5次比賽:各組分別進行比賽,決出各組名次

a1、a2、a3、a4、a5,

b1、b2、b3、b4、b5,

。。。。

。。。。。。e4、e5。

第6次比賽:a1、b1、c1、d1、e1,

第一名是跑的最快的。

第7次比賽:將上次第一名所在組的下一號馬再和剩餘的4匹1號馬比賽,

第一名是跑的第二快的馬,由於只有4個名額,所以跑的最慢的馬和所在組剩餘的馬全部被淘汰。

第8次比賽:將上次第一名所在組的下一號馬、上次第二名所在組的下一號馬和剩餘的3匹馬比賽,

第一名是跑的第三快的馬,由於只有3個名額,所以跑的最慢的兩匹馬和所在組剩餘的馬全部被淘汰。

在剩下的比賽中分別淘汰慢的,將排名稍後的加進來比賽,最多跑到第10次就可以選出最快的5匹馬。如果在某一次比賽中排名前幾的是同一組的且和已經選出的馬加一起大於等於5,就可以提前決出前5名。

所以8-10次就可以選出最快的5匹馬。

7、有乙個函式int getnum(),每執行一次可以從乙個陣列v[n]裡面取出乙個數,n未知,當數取完的時候,函式返回null。現在要求寫乙個函式int get(),這個函式執行一次可以從v[n]裡隨機取出乙個數,而這個數必須是符合1/n平均分布的,也就是說v[n]裡面任意乙個數都有1/n的機會被取出,要求空間複雜度為o(1)。

from:

解法:

設定乙個整形num

,用來存放

get()

返回的數。呼叫

getnum()

從v[n]取數,按一定概率存入num中(覆蓋以前的),直到getnum()返回null。

設getnum

取的第i

個數為numi

,numi

存入num

中的概率為

pi。設

pi=1/i ( i已知時,所以這個概率很容易做到)。則

numi保留,並

最後返回的情況是,

numi

被存入num

中,且numj(i不被存入

num。

其概率為:

p(numi)=pi*(1- pi+1) * (1 - pi+2)* ...(1 - pn)=1/i * (i/(i+1)) * ((i+1)/(i+20)*....((n-1)/n) = 1/n。

int getrand()

return nval;

}

8、給定一段產品的英文描述,包含m個英文本母,每個英文單詞以空格分隔,無其他標點符號;再給定n個英文單詞關鍵字,請說明思路並程式設計實現方法

string extractsummary(string description,string key words)

點評:掃瞄過程始終保持乙個[left,right]的range,初始化確保[left,right]的range裡包含所有關鍵字則停止。然後每次迭代:

1). 試圖右移動left,停止條件為再移動將導致無法包含所有關鍵字。

2). 比較當前range's length和best length,更新最優值。

3). 右移right,停止條件為使任意乙個關鍵字的計數+1。

4). 重複迭代。

程式設計之美有最短摘要生成的問題,與此問題類似,讀者可作參考。

9、乙個http伺服器處理一次請求需要500毫秒,請問這個伺服器如何每秒處理100個請求。

多執行緒?

10、三次握手

阿里巴巴筆試題

1 有乙個虛擬儲存系統,若程序在記憶體中佔3頁 開始時記憶體為空 若採用先進先出 fifo 頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?a 7 b 8 c 9d 10 2 設有乙個順序棧s,元素s1 s2 s3 s4 s5 s6依次進棧...

阿里巴巴筆試題

題意 給定一串數字 判斷是否存在這三個元素,它們將數字串分為四個子串,其中每個子串的數字之和均相同 該3個元素不納入計算 要求時間複雜度和空間複雜度均不能超過o n 思路 奇妙的利用了單調性,列舉第一段的和,第一段的和確定了,那麼接下來的2,3,4段的和就都確定了,什麼單調性呢?就是i右移,j,k都...

阿里巴巴筆試題

1 有乙個虛擬儲存系統,若程序在記憶體中佔3頁 開始時記憶體為空 若採用先進先出 fifo 頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?a 7 b 8 c 9d 10 2 設有乙個順序棧s,元素s1 s2 s3 s4 s5 s6依次進棧...