1. 程式人生 > >筆試面試集錦

筆試面試集錦

阿里巴巴第二道(研發類)
筆試題1,原題大致描述有一大批資料,百萬級別的。資料項內容是:使用者ID、科目ABC各自的成績。其中使用者ID為0~1000萬之間,且是連續的,可以唯一標識一條記錄。科目ABC成績均在0~100之間。有兩塊磁碟,空間大小均為512M,記憶體空間64M。
1) 為實現快速查詢某使用者ID對應的各科成績,問磁碟檔案及記憶體該如何組織;
2) 改變題目條件,ID為0~10億之間,且不連續。問磁碟檔案及記憶體該如何組織;

3) 在問題2的基礎上,增加一個需求。在查詢各科成績的同時,獲取該使用者的排名,問磁碟檔案及記憶體該如何組織。
筆試題
2:程式碼實現計算字串的相似度。
點評:和計算兩字串的最長公共子序列相似。

設Ai為字串A(a1a2a3 … am)的前i個字元(即為a1,a2,a3 … ai
設Bj為字串B(b1b2b3 … bn)的前j個字元(即為b1,b2,b3 … bj)
設 L(i , j)為使兩個字串和Ai和Bj相等的最小操作次數。
當ai等於bj時 顯然L(i, j)=L(i-1, j-1)
當ai不等於bj時
若將它們修改為相等,則對兩個字串至少還要操作L(i-1, j-1)次
若刪除ai或在Bj後新增ai,則對兩個字串至少還要操作L(i-1, j)次
若刪除bj或在Ai後新增bj,則對兩個字串至少還要操作L(i, j-1)次
此時L(i, j)=min( L(i-1, j-1), L(i-1, j), L(i, j-1) ) + 1