2008-12-13 66 views
10

好奇地得到人們的想法。我經常進行面試,並且在我的職業生涯中有足夠的反思,並且我注意到了一系列廣泛的問題。我做了這個特定的C++,但值得注意的是,我有人問我通過電話的算法複雜性問題,我甚至不是說哈希查找與二叉樹的複雜性是什麼,我的意思是更像分析問題,例如「想象有4只蜜蜂,每隻嗡嗡響的唧唧喳喳叫。」什麼樣的面試問題適用於C++手機屏幕?

現在我個人更喜歡讓手機屏幕更具體一點,並留下白板的抽象問題。因此,在進行C++手機訪談時,您會發現哪些話題,尤其是高級開發人員?

我知道還有另一個類似於此的線程,但坦率地說,它似乎完全錯過了關於手機屏幕這一點,而不是面對面的採訪。此外,這是更具體的C++。

+1

無論你做什麼,請不要問微軟橫向思考的難題。如果你這樣做,請不要在面談中再次提問。 – zaratustra 2008-12-13 22:13:36

+0

爲什麼我從來沒有被問過這類問題?我有幾個智商測試(樂趣),但沒有像這樣。我所有的採訪都像是朋友之間的聊天。它是文化嗎? – Guge 2008-12-13 22:22:26

+0

@Guge:沒有被問到相關的技術問題,例如這裏提到的那些問題,而是採取一個很好的聊天方式,可能表明在招聘方面嚴重缺乏知識。如果提供一個職位,你可能需要考慮一下。 – Reunanen 2008-12-14 10:56:06

回答

12

我會問資源/內存管理,因爲它是C++中的一個重要主題,它不需要具體的代碼。只需勾畫一個簡單的假設場景,並詢問他們如何確保即使面對錯誤/異常,也能釋放一些重要資源。假設他們正在開發一個網絡應用程序,他們如何確保我們正確關閉套接字?當然,正確的答案是將它包裝在RAII對象中,但不要直接詢問他們(這很容易讓谷歌「RAII」,而上述問題「你如何確保資源得到正確釋放」實際上表明你是否或者他們不知道適當的技術,如果他們回答「在try/catch中包裝所有東西」,他們可能會遇到問題,這很好地與關於堆和堆棧之間差異的問題聯繫在一起。我們也可以提出一些關於異常安全性的簡單問題,它不需要任何真正的代碼。一般來說,我會討論所有各種C++習慣用法可能是一個好主意,因爲其中許多不需要太多實際的代碼,但仍然是重要的語言特定的概念。

看看他們是否知道智能指針(最好是給他們一個智能指針被調用的情況,看看他們如何解決問題),也可能是模板/元程序(在後一種情況下,可能只是找到如果他們意識到這是可能的,而不是要求他們在手機上編寫實際元程序)

您可能還想詢問一些未定義行爲的常見區域(執行後a和b的值是什麼或者分配一個由10個元素組成的數組,並將10或11添加到數組指針中,並在每種情況下詢問結果是什麼(+ = 10是合法的,爲您提供了一個過去結束指針,+ = 11是未定義的)。或者給他們一個場景,他們需要複製大量對象,並詢問他們如何做到這一點(一次只進行一個for循環複製每個元素,memcpy或std :: copy是明顯的答案。請注意memcpy的注意事項,對於非POD物體是不安全的)

或者詢問一般的編碼風格。他們如何看待迭代器?他們喜歡普通的舊循環嗎?他們知道如何使用std :: for_each或std :: transform嗎?

編輯: 似乎a = b++ + b++(是不確定的行爲,順便說一句,答案)特別建議,產生了大量的意見。也許人們讀了太多內容。正如OP所說,他傾向於詢問具體的(不是抽象的,並且易於解釋/回答/通過電話討論)的問題,這些問題會揭示一些關於受訪者的C++技能,這是一個簡單的(是的,也許nitpicky)的例子。其背後的原因是1)它有一個直觀的含義,這是錯誤的,2)在你意識到這一點之前,你必須具有一定的C++經驗。當然還有3),通過電話問短而容易。它不需要任何人編寫代碼。不,它不會透露應聘者是否是「優秀的程序員」,但根據我的理解,這也不是目標。如果有人誤解了它,那並不意味着什麼,但是如果它們正確的話,你可以確信自己知道一些C++。但是如果你再次閱讀我的答案,你會發現這只是我認爲應該表達的一類問題的一個簡單例子。 C++充滿了未定義的行爲,即使在看起來完全無害且直觀的代碼中。要求候選人識別某些的實例可能是有用的,無論是「在同一個表達式中修改同一個變量兩次」的例子,還是其他的東西。

5

我想知道人們是否真的瞭解他們使用的工具。而且我還發現,「高級」開發人員在他們的知識上可能存在嚴重差距。

你可以考慮要求

  • 什麼是虛函數表是。
  • 模板如何工作
  • 堆和堆棧之間的區別是什麼。對這個答覆的深度可能相當明顯!

的「你真的需要採訪我」回答最後一個問題將涵蓋

  • 分配 - 限制,用例,失效模式,效率,資源清理,析構函數
  • 堆棧調用-frames - 當函數被調用,參數,回溯時發生什麼
+0

絕對像堆/堆棧問題。你可以花很多時間討論這個問題。 – ApplePieIsGood 2008-12-13 22:19:15

1
  • 設計模式的C/C++
  • 虛函數
  • 多形性從斯科特·邁耶的系列
  • 關於模板
  • 概念
  • 基礎。 (非特別訂購)

最後但並非最不重要的。我會給出一些示例問題,我告訴他們設計類。只是接口。

3

作爲手機屏幕對C++職務的一部分,我已經採取了問「誰是Bjarne的Stroustrup的」。

我覺得很神奇,很多很多人自稱是高級C++開發者無法識別。提示英語使用者:在問你問題之前,請閱讀他的常見問題解答並聽取正確的發音。