第一題是描述樹的深度遍歷,廣度遍歷和非遞迴實現的特點。基本資料結構,簡單。
第二題是改錯。程式如下:
1 typedef complex_t;
5 6 int alloc(complext_t * a,int num)
11 return 0;
12 }
13 14 unsigned long long compute()
22 23
24 cin>>pos;
25 while(pos>a[pos].num>>a[pos].imag;
27 cin>>a[pos+1].num>>a[pos+1].imag;
28 sum+=a[pos].num*a[pos].num+a[pos].imag*a[pos].imag;
29 sum+=a[pos+1].num*a[pos+1].num+a[pos+1].imag*a[pos+1].imag;
30 pos+=2;
31 }
32 return sum;
33 }
大概是這樣吧。我找出下面錯誤。
第六行:complex_t *變為complex_t * &
去掉第八至第九行。因為根據c++99new不再返回null,而是throw std::bad_alloc
18行的cin沒有檢查cin.fail()是不是返回true
19行應該用try...catch圍繞
24同理於18行
25行的條件可能導致越界訪問,所以應該改為pos第三題就開始有點難了,我是最後才做出來的。問題是乙個1k記憶體和1mhz和cpu(意味著它1秒鐘能改變10^6次狀態),問如何在不死迴圈的條件下讓它最長時間的執行,而且是因為某個狀態退出的。可以假設你的條件。
一 開始我毫無頭緒。最後終於醒悟,應該用最最底層的辦法做。就是在內存放著一段**,就這樣讓它跑。怎麼讓它跑得最長又不死迴圈呢?我想應該是讓除了**之 外的所有內存在乙個週期內加一位,也就是說把剩下的記憶體看作乙個巨大的整型,正如int是32位一樣,這個記憶體區域是***位。好了,我假設cpu是16 位的8086,初始狀態暫存器全部是0(考試的時候我犯傻了,居然寫32位x86)。
程式段放如下編碼:
start:
inc al 1b
jno start 3b;不溢位則重新增加
xor cx,cx 2b
overflow:
movb al,[data_start+cx] 3b;data_start是資料起始位址
inc al 1b
movb [data_start+cx],al 3b
xor ax,ax 2b
jno start 3b
inc cx 1b
jmp overflow 3b
於 是**段使用了1+3+2+3+1+3+2+3+1+3=22b,還剩1024-22=1002b記憶體用於資料儲存。另外還有1b的暫存器,所以是 1003b的儲存區域。另外假設改變記憶體狀態和改變暫存器狀態一樣只花乙個週期,還有忽略別的消耗(比如上面的xor cx,cx)這樣狀態會改變2^1003次,所以最長時間為2^(8*1003)/10^6。上面這段**會在越界訪問的時候退出。
然後就到了演算法題;第一題說的是編譯依賴問題。說的是乙個系統有n個元件組成,n個元件之間有依賴關係。為了解決依賴,必須確定編譯的順序。問演算法。
其 實這是著名的穿衣問題,問題是乙個人有**,褲子皮帶……這些東西,問人應該怎麼穿才能不變成超人!所以解決方法也是一樣的,就是拓撲排序。拓撲排序是先 對圖中所有子節點進行廣度優先的遍歷(鄭k說是深度遍歷,我敢肯定他錯了,因為深度遍歷得到的是一棵樹,而不是幾棵,依賴關係可能不只是一棵樹的),然後 在遍歷同時標記遍歷的起始時間和結束時間,然後對起始時間進行排序。
第二題是程式設計題。實現的是從字串返回乙個具有最長連續數字的子字串。比較簡單,但是我犯了至少3個邏輯錯誤,日,我真是個**,操。
第三題是系統題。設計乙個url儲存系統,特點是分布式資料庫,條件是快速訪問。
百度筆試題
一 選擇題 15分 共10題 1.在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是 a.shell排序 b.歸併排序 c.直接插入排序 d.選擇排序 2.以下多執行緒對int型變數x的操作,哪幾個需要進行同步 a.x y b.x c.x d.x 1 3.void func 中,變數val的記憶體...
百度筆試題
一 選擇題 15分 共10題 1.已知乙個線性表 38,25,74,63,52,48 採用的雜湊函式為hash key key mod 7,將元素雜湊到表長為7的雜湊表中儲存。請選擇後面兩種衝突解決方法分別應用在該雜湊表上進行等概率成功查詢的平均查詢長度,拉鍊法 線性探測法 a.1.0 b.1.5 ...
百度筆試題
1 完成函式 size t foo unsigned int a1,size t al1,unsigned int a2,size t al2 其中a1和a2都為無符號陣列,al1和al2為陣列的長度,陣列的長度為偶數。無符號陣列由一對數字區間組成。如下例 a1 為 0,1,3,6,10,20 a2...