第一次實習面試中碰到的一些算法題目

非科班出身,生平第一次關於編程職位的面試,雖然面試官人很好,一直在引導我怎麼思考,但是答的還是一般。而且今年一直在學統計,代碼也生疏了好多,c++的代碼寫的太爛了。。。


回憶了一下幾道算法題:

1.給定一個數組:int array[100000],每個元素都不一樣,取最大的10個元素
因爲是個topk的問題,一開始答的可以用隨機快排或者建一個堆進行排序,但是這樣沒有用到題目給出的一些條件。後來想到都是數可以用count排序,但是這樣想來想去用到的方法都是排序。

太緊張,沒聽懂他的解決方案敲打


2.還是這個數組取中位數

取中位數的話就是找出一個樹位於中間的位置,然後左邊所有的數比它小,右邊所有的數比它大。這樣就想到了快排。

(1)隨便選一個數a1,如果排完之後的位置在中位數的位置50000左邊,那麼下一次快排選一個比a1大的數排

(2)如果排完之後在右邊,就選一個比它小的數排,這樣一直排下去,可以選的數的範圍就越來越窄,最終可以得到中位數


3.這題好像是說把幾個無序的文件排序輸出,但是文件在外部,內存不夠存儲所有的文件

用到了歸併排序,每次對少量的子序進行排序


4.找出單向鏈表的中間節點, 偶數時返回兩個中間點的前一個的指針

這個用兩個指針a1,a2,一開始指向表頭。依次開始訪問鏈表的各個節點,然後a2移動兩次,a1移動一次,最後a2到表尾的時候,a1就是中間點了。


之後就是圍繞簡歷問的一些項目有關的問題了。。。

額,之前都不知道面試會怎麼面,以爲會各種邏輯題,前一天晚上還惡補了一堆邏輯測試,什麼安全過河之類的問題。結果哭

還是很想去做這個實習的,有機會可以在實踐中用到hadoop還是很令人興奮的啊!!!

錄了就買機票回國!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章