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