如何回答行為類問(wèn)題
行為類問(wèn)題很容易被大家忽視樊销,但是這類問(wèn)題也是面試官考察的重點(diǎn)之一,甚至?xí)绊憣?duì)你技術(shù)水平的評(píng)分声诸,需要足夠的重視酱讶。
回答要具體,以免顯得自大
比如:
- 團(tuán)隊(duì)里的大部分工作都是我做的
- 我實(shí)現(xiàn)了項(xiàng)目中的文件系統(tǒng)彼乌,這部分是整個(gè)項(xiàng)目中非常有挑戰(zhàn)性的泻肯,因?yàn)椤?br> 很明顯第二種回答令人印象更深刻,而且不像第一種那樣顯得有點(diǎn)自大慰照。
不要陷入細(xì)節(jié)
很多人對(duì)自己的技術(shù)很有信心灶挟,非常積極地給面試官講解自己用到的技術(shù)。但是面試官可能對(duì)你的技術(shù)細(xì)節(jié)不感興趣焚挠,甚至面試官不了解這方面的技術(shù)膏萧,導(dǎo)致效果不好。這時(shí)候不如把精力更多的放在“效果”展示上蝌衔,以使自己的工作看起來(lái)更加有成果榛泛,更加“高大上”。
比如:
通過(guò)收集大部分用戶的使用習(xí)慣并應(yīng)用Rabin-Karp算法噩斟,我成功把搜索時(shí)間從O(n)降低到了O(log n)曹锨。如果您感興趣,我可以更詳細(xì)的講解一下剃允。
使用S.A.R方法回答問(wèn)題
S.A.R: Situation(問(wèn)題情況)沛简、Action(采取的措施)、Response(效果)
比如:講一下你和隊(duì)友之間發(fā)生的一次比較有挑戰(zhàn)性的溝通問(wèn)題
S:在一次做項(xiàng)目的時(shí)候斥废,我有三個(gè)隊(duì)友椒楣,其中一個(gè)隊(duì)友表現(xiàn)有點(diǎn)“消極”,他在討論期間很少發(fā)言牡肉,做起自己負(fù)責(zé)的模塊很費(fèi)勁捧灰。
A:有一天我很自然的跟他聊了起來(lái),然后慢慢將話題引向了做項(xiàng)目上统锤。我問(wèn)了一些比較開(kāi)放式的問(wèn)題毛俏,比如覺(jué)得項(xiàng)目進(jìn)展怎么樣炭庙,對(duì)哪一個(gè)模塊更感興趣等等。他選了一些相對(duì)簡(jiǎn)單的模塊煌寇,但是主動(dòng)提出做一些文檔相關(guān)的工作焕蹄。我慢慢意識(shí)到他其實(shí)并不是消極,而是對(duì)項(xiàng)目了解不透徹阀溶,以及沒(méi)有信心腻脏。之后我就幫助他分解需要完成的模塊,并且在他取得進(jìn)展的時(shí)候及時(shí)表?yè)P(yáng)他银锻,慢慢提高他的自信心迹卢。
R:雖然之后他依然是團(tuán)隊(duì)里的短板,但是他的進(jìn)步也很明顯徒仓。他開(kāi)始按時(shí)完成自己的任務(wù),并且積極地參加討論誊垢。我們也愿意在以后的項(xiàng)目中繼續(xù)跟他合作掉弛。
總結(jié)一下可以發(fā)現(xiàn),S.A.R回答問(wèn)題的方式可以讓面試者清楚地了解問(wèn)題所在喂走,以及你解決問(wèn)題的方式和最后的效果殃饿,并從中體會(huì)到你的能力。
如何回答技術(shù)問(wèn)題
技術(shù)問(wèn)題是重中之重芋肠,但是不要過(guò)于緊張乎芳。正常情況下面試者很難第一時(shí)間給出正確答案,所以當(dāng)你遇到一個(gè)很棘手的問(wèn)題時(shí)帖池,不要慌奈惑,大膽地向面試官說(shuō)出你的解題思路。
不要急著“蓋棺定論”睡汹,如果面試官?zèng)]有卡時(shí)間肴甸,你可以不斷的改進(jìn)你的算法,修改bug囚巴,直到趨于完美原在。
對(duì)于技術(shù)問(wèn)題,我們可以通過(guò)五個(gè)步驟來(lái)解決問(wèn)題:
Step 1: 問(wèn)問(wèn)題
拿到問(wèn)題后彤叉,作為面試者難免會(huì)有一些疑問(wèn)或者不確定的地方庶柿,大膽地問(wèn)出來(lái)。
比如:設(shè)計(jì)一個(gè)列表的排序算法秽浇。
Q:什么類型的列表浮庐,array list or linked list?
A:An array。
Q:列表中的數(shù)據(jù)是什么類型兼呵?數(shù)字兔辅?字符腊敲?還是string?
A:數(shù)字维苔。
Q:……
A:……
通過(guò)這樣的問(wèn)問(wèn)題碰辅,會(huì)讓算法設(shè)計(jì)起來(lái)簡(jiǎn)單許多。
Step 2:設(shè)計(jì)算法
設(shè)計(jì)算法時(shí)注意以下幾個(gè)問(wèn)題:
- 時(shí)間和空間復(fù)雜度
- 如果數(shù)據(jù)量過(guò)大會(huì)怎么樣
- 你設(shè)計(jì)的算法會(huì)帶來(lái)哪些“負(fù)面”影響(比如你改進(jìn)的二叉搜索樹(shù)會(huì)不會(huì)導(dǎo)致插入介时、刪除效率降低)
- 如果有“負(fù)面”影響没宾,你是否做出了最正確的妥協(xié)
- 你是否充分利用了面試官提供的全部信息(比如數(shù)據(jù)類型是年齡,0~130)
Step 3:偽代碼
書(shū)寫(xiě)偽代碼能夠幫你理清思路沸柔,避免真正寫(xiě)代碼的時(shí)候犯很多錯(cuò)誤循衰。但是在寫(xiě)偽代碼之前需要和面試官說(shuō)明(或者在草稿紙開(kāi)頭注明),以免他們誤解你不想寫(xiě)實(shí)際代碼褐澎。
Step 4:代碼
寫(xiě)代碼不要太著急会钝,要有條不紊。注意以下幾點(diǎn):
- 不要吝嗇構(gòu)造數(shù)據(jù)結(jié)構(gòu):比如要求你找出一群人中年齡最小的一個(gè)工三,你可以定義一個(gè)Person數(shù)據(jù)結(jié)構(gòu)迁酸。這樣面試者會(huì)覺(jué)得你有面向?qū)ο蟮乃枷搿?/li>
- 代碼要整潔:不要寫(xiě)得太擁擠或者涂抹很?chē)?yán)重,影響面試者理解你的代碼俭正。
Step 5:測(cè)試
考慮以下幾個(gè)測(cè)試點(diǎn):
- 邊緣值:最大值奸鬓,負(fù)值,0掸读,null等
- 用戶異常輸入:如果用戶傳入null或負(fù)值會(huì)怎樣串远?
- 正常值:不要忘了測(cè)試正常值
如果算法很復(fù)雜,不要等到最后才測(cè)試儿惫,可以寫(xiě)代碼過(guò)程中每個(gè)函數(shù)或每個(gè)重要點(diǎn)測(cè)試澡罚。