如何回答行為類問題
行為類問題很容易被大家忽視,但是這類問題也是面試官考察的重點(diǎn)之一,甚至?xí)绊憣δ慵夹g(shù)水平的評分,需要足夠的重視。
回答要具體,以免顯得自大
比如:
- 團(tuán)隊(duì)里的大部分工作都是我做的
- 我實(shí)現(xiàn)了項(xiàng)目中的文件系統(tǒng),這部分是整個(gè)項(xiàng)目中非常有挑戰(zhàn)性的,因?yàn)椤?br> 很明顯第二種回答令人印象更深刻,而且不像第一種那樣顯得有點(diǎn)自大。
不要陷入細(xì)節(jié)
很多人對自己的技術(shù)很有信心,非常積極地給面試官講解自己用到的技術(shù)。但是面試官可能對你的技術(shù)細(xì)節(jié)不感興趣,甚至面試官不了解這方面的技術(shù),導(dǎo)致效果不好。這時(shí)候不如把精力更多的放在“效果”展示上,以使自己的工作看起來更加有成果,更加“高大上”。
比如:
通過收集大部分用戶的使用習(xí)慣并應(yīng)用Rabin-Karp算法,我成功把搜索時(shí)間從O(n)降低到了O(log n)。如果您感興趣,我可以更詳細(xì)的講解一下。
使用S.A.R方法回答問題
S.A.R: Situation(問題情況)、Action(采取的措施)、Response(效果)
比如:講一下你和隊(duì)友之間發(fā)生的一次比較有挑戰(zhàn)性的溝通問題
S:在一次做項(xiàng)目的時(shí)候,我有三個(gè)隊(duì)友,其中一個(gè)隊(duì)友表現(xiàn)有點(diǎn)“消極”,他在討論期間很少發(fā)言,做起自己負(fù)責(zé)的模塊很費(fèi)勁。
A:有一天我很自然的跟他聊了起來,然后慢慢將話題引向了做項(xiàng)目上。我問了一些比較開放式的問題,比如覺得項(xiàng)目進(jìn)展怎么樣,對哪一個(gè)模塊更感興趣等等。他選了一些相對簡單的模塊,但是主動提出做一些文檔相關(guān)的工作。我慢慢意識到他其實(shí)并不是消極,而是對項(xiàng)目了解不透徹,以及沒有信心。之后我就幫助他分解需要完成的模塊,并且在他取得進(jìn)展的時(shí)候及時(shí)表揚(yáng)他,慢慢提高他的自信心。
R:雖然之后他依然是團(tuán)隊(duì)里的短板,但是他的進(jìn)步也很明顯。他開始按時(shí)完成自己的任務(wù),并且積極地參加討論。我們也愿意在以后的項(xiàng)目中繼續(xù)跟他合作。
總結(jié)一下可以發(fā)現(xiàn),S.A.R回答問題的方式可以讓面試者清楚地了解問題所在,以及你解決問題的方式和最后的效果,并從中體會到你的能力。
如何回答技術(shù)問題
技術(shù)問題是重中之重,但是不要過于緊張。正常情況下面試者很難第一時(shí)間給出正確答案,所以當(dāng)你遇到一個(gè)很棘手的問題時(shí),不要慌,大膽地向面試官說出你的解題思路。
不要急著“蓋棺定論”,如果面試官沒有卡時(shí)間,你可以不斷的改進(jìn)你的算法,修改bug,直到趨于完美。
對于技術(shù)問題,我們可以通過五個(gè)步驟來解決問題:
Step 1: 問問題
拿到問題后,作為面試者難免會有一些疑問或者不確定的地方,大膽地問出來。
比如:設(shè)計(jì)一個(gè)列表的排序算法。
Q:什么類型的列表,array list or linked list?
A:An array。
Q:列表中的數(shù)據(jù)是什么類型?數(shù)字?字符?還是string?
A:數(shù)字。
Q:……
A:……
通過這樣的問問題,會讓算法設(shè)計(jì)起來簡單許多。
Step 2:設(shè)計(jì)算法
設(shè)計(jì)算法時(shí)注意以下幾個(gè)問題:
- 時(shí)間和空間復(fù)雜度
- 如果數(shù)據(jù)量過大會怎么樣
- 你設(shè)計(jì)的算法會帶來哪些“負(fù)面”影響(比如你改進(jìn)的二叉搜索樹會不會導(dǎo)致插入、刪除效率降低)
- 如果有“負(fù)面”影響,你是否做出了最正確的妥協(xié)
- 你是否充分利用了面試官提供的全部信息(比如數(shù)據(jù)類型是年齡,0~130)
Step 3:偽代碼
書寫偽代碼能夠幫你理清思路,避免真正寫代碼的時(shí)候犯很多錯(cuò)誤。但是在寫偽代碼之前需要和面試官說明(或者在草稿紙開頭注明),以免他們誤解你不想寫實(shí)際代碼。
Step 4:代碼
寫代碼不要太著急,要有條不紊。注意以下幾點(diǎn):
- 不要吝嗇構(gòu)造數(shù)據(jù)結(jié)構(gòu):比如要求你找出一群人中年齡最小的一個(gè),你可以定義一個(gè)Person數(shù)據(jù)結(jié)構(gòu)。這樣面試者會覺得你有面向?qū)ο蟮乃枷搿?/li>
- 代碼要整潔:不要寫得太擁擠或者涂抹很嚴(yán)重,影響面試者理解你的代碼。
Step 5:測試
考慮以下幾個(gè)測試點(diǎn):
- 邊緣值:最大值,負(fù)值,0,null等
- 用戶異常輸入:如果用戶傳入null或負(fù)值會怎樣?
- 正常值:不要忘了測試正常值
如果算法很復(fù)雜,不要等到最后才測試,可以寫代碼過程中每個(gè)函數(shù)或每個(gè)重要點(diǎn)測試。