這次微軟的兩道面試題,先做個記錄,待以後實現
1. 維護這樣一個樹的數據結構
R..
R
R..
R
R
R
R
每個節點表示一個運行程序,子節點表示程序實例,內部節點表示其子節點的運行情況。
每個節點的狀態
ready fail inprocess succeeded
併爲類分配一個函數RunOneProcess,具體操作如下:
1. 如果節點是一個葉節點,並處於ready或fail狀態,則反覆調用改程序,直到成功返回。(注意,每個葉節點可能定義不同的程序,並且用戶可以自定義。)如果處於succeeded狀態,則不執行返回
2. 如果是內部節點,如果處於succeeded狀態,則不執行。否則依次調用其子節點的運行,並將自己置爲inprocess狀態,直到有一個子節點執行成功,則結束本次執行。如果其子節點均處於succeeded狀態,則將自己狀態置爲succeeded狀態。
注意,RunOneProcess每次只能執行一個process
2. 魔術棒功能
一個平面圖,一個點,實現魔術棒的高效算法。
如果做測試,測試用例設計。