參加IT公司的技術面試時,遇到不會的問題應該如何和面試官溝通?

本人是應屆生,曾先後面試過微軟總部和google總部,均以失敗告終。原因是演算法問題沒有回答上。對於在自己能力範圍內的題目可能稍微提示一下就會做了,但是那些超出能力範圍的問題,事後分析答案之後 感覺當時不可能將提示和答案聯繫在一起。

舉兩個例子,有一次面試官問我如何找出字元串中的最長迴文子串,我隨便寫了一個O(n^2)的演算法,他問有沒有O(n)的。然後我就一直傻站在白板前直到結束,我是知道有一個O(n) mancher"s algorithm,但是太久沒看過了,細節忘記寫不出來。還有一次面試官問了一個問題,看題目應該是用動態規劃求解,面試官最後也確認是dp, 但是狀態轉移方程一直想不出來,然後再次傻站在白板前直到結束。

我想知道對於這種超出能力範圍的問題有什麼應對辦法,應該如何跟面試官溝通得到儘可能多的有利信息,還是說遇到這種情況就只能回去努力下次再來? 謝謝!


分兩種情況:

第一,你應該會但不會的。比如基礎知識不紮實,比如你簡歷中上寫的項目經驗中肯定會遇到的技術點相關問題等等,這個時候不要不懂裝懂,是很容易被看穿的,反而造成第一印象不好。實事求是,不會就是不會。可以想想你為什麼不會,是平時沒有學習,還是其他原因。如果是平時懶得學習,這種原因就沒必要說了,如果是其他原因,可以和面試官聊聊。

第二,面試官知道你肯定不會的。 在對你有一定了解之後,面試官會出一些你可能從來沒有解決過的問題,本質上就是為了考察你的解決問題的能力。這個時候,你只需要給出一個具體的思路,不用擔心答對或答錯。題主舉的例子,就是犯了這種錯誤。兩次面試,你都是傻站著,你自己腦子裡想的,沒有和面試官溝通,別人不知道你想什麼。最好的辦法就是把你的思路說出來,具體的細節,你可以和面試官交流,把面試當作聊天,而不是考試,最好的結果是,你和面試官一起努力,解決了這個問題。就算沒有解決,那也好過於你傻站著,至少在面試官眼裡,你已經在努力地解決問題了。


年輕的時候參加面試,有一次也遇到同樣的難處,我的回答是:「這個我現在不知道,不過給我一天時間我就可以知道」,入職以後這哥們說「當時我就看中你這一點了——如此無知還如此自信,夠無恥」。

我不能說你應該這麼做,我只能說我再次遇到這種問題我也會這樣處理。因為不懂裝懂、不會裝會是很尷尬的。作為被面試的人,被考倒是很正常的事情,不必不好意思。就像初一的同學和高一的同學打架,打不過是正常的。

既然技術方面被考倒了,那就展現你的自信和風度吧。


後來當老師了,在課堂上也會被學生問到不會的問題,以同樣的態度處置,並沒有發現學生因此鄙視我嘛......

像什麼「這位同學的問題很有代表性,我們下次上課的時候再一起講」、「真是個好問題,這就是我們下次上課要講的內容」我是從來不說的,哈哈哈


最近面了兩個應屆生來答一把。兩個應屆生,一個博士一個碩士,大背景是我們組很少很少招應屆生,所以對應屆生還是挺嚴的。

兩個人的個性都很好,也都很聰明。我問了兩個人一個同樣的技術問題,兩個人都不會。區別來了,博士告訴我不會,我建議他去白板上試著寫code,然後函數定義就寫錯,我就提醒他,他試了很久都沒有寫對,期間沒有跟我交流,就跟題主一樣跟白板對上了。碩士呢,聽到我說的題目就說我去白板上寫寫看,先寫數學等式,寫對了,再寫函數定義,寫錯了,我就給提示,他並沒有立刻反應過來,但他開始跟我討論,有啟發立刻又在白板上刷刷寫,一邊寫一邊跟我解釋他的思路,最後算是寫個半對吧。其實這個技術問題我不期待他們能寫出來,看著很簡單,但沒有工作經驗的人基本不會。我要看的不是他們技術多好,而是給了一個新的題目,他們領悟有多快。工作節奏很快,一個應屆生能一個月上手還是3個月區別很大。最後發了offer給碩士而不是博士。

再說題主,犯了個很多中國人會犯的錯誤,就是不會交流。面試中一定會遇到難題,這個時候會什麼要趕緊說出來討論,反應要快,個性要好。一般應屆生我的期待就是有潛力,如果面試中遇到難題都不會靠交流來解決問題,實際工作中我怎麼能確定對方能解決問題呢。

另外對於面試官的態度,不要太當真,不要影響到自己的解題思路。我面試人從來都是滿口誇獎,不管對方讓我多麼想吐槽這水平也好意思來,我都是滿臉笑容告訴對方太棒了,不會不要緊,不要緊張,能回答到這個程度真的不錯了。回頭該打低分打低分。也有同事總是一臉挑剔問問題,就算再滿意也不會表露出來。


謝邀,正常。

如果是有超出能力範圍的題,一般是在考查潛力和可塑性,面試官在挖掘你的深度廣度到底有多深多廣,不僅僅考查這個職位的勝任度。

對於面試官來說,常見的解答方法很多人都會,沒有驚喜。他要的是少見而有一定難度的。就像你舉例一的情況,這其實不算超出範圍,讀書的時候,都遇到過一題多解。

當然傻站著肯定是不行了,你實在不知道,可以問面試官要些提示(態度要誠懇,之前做過的,現在有點緊張,一時真有點想不起來,可以提示下嗎?或者我先說一下大致的思路您聽聽看是否正確),在提示下答出來也比完全不會要好,還可以試著把話題引向你會的的領域,影響面試官,如果能被你帶著走,你就抓住了面試的主導權。

還有你的面試準備可能還不夠,一些專業的網站上都會有很多面試題,例如leetcode,CSDN,博客園等,還有其他人面試後的分享,多搜搜多看看,大致的面試套路也就心中有數了。


還是得分具體的問題

比如面試官問HashMap是如何設計的?GC回收過程,這類問題答不出來說明基礎不紮實

但是如果問HashMap為什麼要像現在這麼設計,有什麼可以改進的地方,GC為什麼要這麼設計等等,就是考更底層的知識還有你的想法,答不出來沒有關係,但是答出來有理有據,絕對是一大亮點


說自己不知道能有多難?

那很難! 但要終於內心?

可以讓他幫你解惑 !

這樣他至少認為你是個好學的人 可塑之才


刷leetcode 他們也是在裡面找的題 可能以後項目用不到 但是這幾道演算法題可以刷好多人 如果你還能在時間複雜度 空間複雜度上優化思路 那基本面試過了


好像遇到過兩次,都是很乾脆的說我不知道


感覺大家最經常說的面試技巧就是把思路說出來?

你記得演算法名字但是記不得內容或者是知道該用DP但是什麼地方想不起來都說出來呀,不說出來干站著面試官想給hint都不知道你是卡在哪裡了。。。


應屆生不考經驗,只考解決問題的能力和知識點。其實還考心理素質。

你失誤的地方和值得改進的地方是一樣的,

寫之前沒有交流。你需要和interviewer取得共識,n平方是不是已經是可以接受的了。

次優答案要求絕對正確,沒有任何bug。畢竟大家都知道的東西,只是實現,根本不需要動腦筋,那就看誰更嚴謹

在已然知道有O(n)解的時候,從基礎開始,空間換時間嗎,把n平方的矩陣列出來,看是否可以改進。如果實在沒頭緒,讓interviewer提示。

交流能力和思考能力遠比做題重要。做錯了比不做重要。


不懂就請教面試官 但是如果計算機科班不會冒泡 那就

多學習 多看書 不會的就學習 沒關係的


如果這個問題,是面試官為了增加難度,刻意提問的。可以試著問一下可以用手機百度或者谷歌不?畢竟工作中不是考試,遇見不會的東西總得想著方法去解決,至少要告訴他你的學習和解決辦法,總比什麼都不做強。


Manacher"s algo不會讓你自己寫吧,說一下知道就好了,畢竟你白板寫出來他可能也看不出有啥問題。


推薦閱讀:

成為一個優秀的測試工程師需要具備哪些知識和經驗?
計算機網路該怎麼學?表示不管看自頂向下,還是謝希仁,都是一個感覺:太抽象,看完就忘?
對於程序猿來說,代碼和妹子哪個重要?
程序員不想找有壓力的工作,心態是不是有問題了?
如何使 Windows XP 像 Windows 7 那樣自動換桌面背景?

TAG:面試 | 演算法 | IT行業 | 面試技巧 | 面試問題 |