【過程】
七點不到半點接到電話,開始話面:
問: C++重載、重寫是什麼?怎麼實現的?
答:重載是編譯期編譯函數時,根據參數類型和個數來決定編譯出的函數符號,從而實現重載(C不支持重載);重寫是針對C++多態,通過虛函數表實現。
問:如何寫一個類,使其不能被繼承?
答:C++1標準支持final關鍵字,通過它可以限制;另外一個方法是通過模板(具體見《劍指offer》,當時沒有答出來)。
思考:不能被繼承,那麼就不能讓子類可調用基類的構造函數,但必須考慮的是,不能影響正常的類實例化。
問:memcpy 聲明是怎樣的?如何實現?
void *memcpy(void *dest, const void *src, size_t n);
答:如上(當時有點緊張,說成char類型了;還說有memncpy= =,尷尬),實現memcpy 要考慮內存存在重疊的問題。
問:字符串刪除,不能亂序。
答:掃描字符串,用兩個指針,一邊掃描一邊複製,這樣時間複雜度是O(n)。
思考:當時沒有真正GET到題意,就開始含糊的說,到後面才知道是刪除所有重複字符,搞到很尷尬。
問:查找樹節點到跟節點的路徑。
答:遍歷樹,用棧保存路徑。
【總結】
1.一面感覺很注重基礎,在學習知識時必須瞭解其原理,多思考。
2.面試過程決不能慌,對面試官的問題有疑問,一定要問。
3.對不真正瞭解的東西,不要隨意說出來,不然面試官會問你。(比如上面我說模板可以解決這個問題,但實際怎麼做我忘記了,當面試官問怎麼實現,我也沒回答出來)
4.面試前的幾天不要玩,一定全面沉醉在學習當中,不然毫無狀態啊!(不過,當時我也是沒意想到有畫面,放假這幾天在玩)