第一題,求一個(gè)整數(shù)轉(zhuǎn)化為二進(jìn)制后1的個(gè)數(shù)。
解析:這不編程之美原題么。。
直接答n&(n-1)的做法,面試官看了看,覺得這個(gè)方法有問題。。。
我說了下原理,舉了幾個(gè)例子。然后就沒了
第二題,判斷兩個(gè)字符串是否相似,相似的定義是由相同的字符組成的,比如abc和acb、bca等等是相似的。
解析:說了下基于哈希表的方法,面試官說“不能開辟多余空間”。我又說可以排個(gè)序,然后挨個(gè)
比較,面試官說“這樣時(shí)間復(fù)雜度也上去了”。
面試官:我這個(gè)判斷相似的函數(shù)要運(yùn)行很多次,可能好幾億次。而且我這個(gè)字符串可能特別
長。
我:既然要運(yùn)行這么多次,那開辟空間用哈希表不挺好么。。
面試官:我也不清楚有沒有更優(yōu)的方法,但可以設(shè)定一些條件,類似于矩陣的一階矩、二階
矩,然后判斷這兩個(gè)字符串是否滿足這些條件
……
第三題,寫組合數(shù):從{1,2,3,4,5}中選3個(gè)數(shù),輸出所有組合。然后擴(kuò)展到從n個(gè)數(shù)中選m個(gè)數(shù)
解析:必須寫非遞歸。跪了,折騰半天沒搞出來。
第四題,判斷兩個(gè)無環(huán)鏈表鏈表是否相交。
解析:這么老的題。。
兩個(gè)都走到頭,看看結(jié)尾的節(jié)點(diǎn)是不是一樣的。面試官說,這個(gè)方法不好。
又說了下把第一個(gè)鏈表的尾部接到第二個(gè)鏈表的頭部的方法。面試官說,這個(gè)也不好。我這
個(gè)鏈表特別長,可能走不到尾部
我:那有尾指針嗎?
面試官:沒有。
……
面試官:好吧,今天都到這了
此時(shí)已經(jīng)七點(diǎn)四十了,然后就讓撤了。最后從面試官的反饋上,感覺這面是掛了。
此次面試總結(jié):
感覺碰到這個(gè)面試官,問的還是挺水的。。都見過。。
無奈第三題只會(huì)寫遞歸的,而且第二題、第四題面試官也說有更好的方法。。
大家好好準(zhǔn)備吧。。