2008-11-14 90 views
4

昨天我有電話面試問題。面試官問我是否遇到任何具有挑戰性的調試問題? 我告訴他我曾經遇到過調試別人代碼的問題,並且花了我3-4天的時間來解決這個問題。我使用了Windbg,符號和崩潰轉儲來解決問題。關於調試,多線程的面試問題

現在這足以說明了嗎?面試官期待什麼?

我不知道要告訴別人什麼,我面對這個問題相當長的一段時間回來,不能解釋所有的細節......

這個問題是非常非常普遍,我不知道什麼是正確的回答它?

一個問題,這是非常常見:

你已經工作在多線程應用程序?你怎麼能找到僵局? 回答:那麼發現死鎖,我們可以看看內存中的進程快照,並可以看看正在等待的線程。

然後下一個問題:你能做些什麼來避免死鎖?

  1. 使用WaitForMultipleObjects的
  2. 維持關鍵部分

的序列你們有什麼說什麼?

回答

19

面試的一般規則是使用STAR模型(​​我的合作社協調會是在這裏驕傲...):

小號 - 說明你在
T中的情況 - 解釋任務,提供足夠的信息,以便面試官瞭解問題。
A - 描述您爲解決問題所採取的措施。
[R - 什麼是你的行動

如果你提供了一個簡潔的回答,不要太短或太長的結果,面試的99.9%將得到滿足。

1

面試的問題(當然,至少是好的),不關心你,告訴你有知識,其解釋面試官的滿意,你真正知道它。

所以,雖然你可以解釋的WinDbg全部複雜性,他不會在意。他會關心你知道該怎麼做,並相信你。你只需提供足夠的信息來滿足這一點。另一種方法是實際調試的東西在他的面前來證明這一點,並且長期的採訪從來沒有持續:)

所以我想(從你所說的話),你知道你在說什麼,你做有這樣的經歷,你可以再做一次。因此,讓我們繼續討論下一個問題,以更多地瞭解您還知道些什麼。

有時你的方式,有點曖昧的許多答案,沒問題 - 我們只問另外一個又一個,直到我們發現我們是否認爲你是好足夠的作用,還是不行。

面試是隻喜歡在考試,是你的工作面試官的興趣,而不是結果。

3

其中一個主要原因死鎖在多線程應用程序,可能會發生的是循環等待在那裏保持兩種資源,它們中的每兩個不同的線程等待其他資源。 其他條件僵局出現沒有搶佔,保持並等待互斥。

避免僵局的最好辦法是維持鎖序。換句話說,讓線程能夠以特定的順序獲得鎖。這將限制線程陷入僵局。