算法面試中這些你不知道的小技巧 — 如何準備算法面試踏施、如何回答算法面試題

這篇文章主要介紹算法面試的一些問題疤估、以及如何準備算法面試钱烟。 開始之前糊啡,記得點贊收藏加關(guān)注哦 发框,我這里也準備了很多面試熱門知識點和大廠面試題框咙,希望對大家有幫助嚷辅!有需要的朋友可以加q群:580763979? ? ??備注:簡書? ?免費領(lǐng)取~

算法面試不僅僅是正確的回答問題

對于面試中遇到的大多數(shù)問題簿姨,都能有一個合理的思考路徑

什么是算法面試?

讓大家在面對面試中的算法問題時簸搞,有一個合理的思考路徑

不代表能夠“正確”回答每一個算法問題扁位,但是合理的思考方向其實更重要,也是正確完成算法面試問題的前提

算法面試優(yōu)秀不意味著技術(shù)面試優(yōu)秀

技術(shù)面試優(yōu)秀不意味著能夠拿到Offer

什么是給出合理的思考路徑?

算法面試的目的不是給出一個“正確”答案趁俊,而是展示給面試官你思考問題的方式域仇。

“正確”本身是一個相對概念

算法面試不是高考。

把這個過程看作是和面試官一起探討一個問題的解決方案寺擂。

對于問題的細節(jié)和應(yīng)用環(huán)境暇务,可以和面試官溝通泼掠。

這種溝通本身很重要,它暗示著你思考問題的方式垦细。

例子

我們需要對一組數(shù)據(jù)進行排序

設(shè)計排序接口择镇,標準庫的設(shè)計,業(yè)務(wù)中排序算法括改。

排序是基礎(chǔ)操作腻豌,很重要。

解決

快速排序算法:O(nlogn)

忽略了算法使用的基礎(chǔ)環(huán)境叹谁。要動態(tài)選擇饲梭。

(向面試官提問):這組數(shù)據(jù)有什么樣的特征?

有沒有可能包含有大量重復(fù)的元素焰檩?

如果有這種可能的話憔涉,三路快排是更好地選擇。

普通數(shù)據(jù):普通快速排序就行了析苫;java語言標準庫排序使用的三路快排兜叨。

是否大部分數(shù)據(jù)距離它正確的位置很近?是否近乎有序衩侥?

如果是這樣的話国旷,插入排序是更好地選擇。

按照業(yè)務(wù)發(fā)生順序,先發(fā)生先完成,幾乎有序茫死,插入排序是更好的選擇跪但。

是否數(shù)據(jù)的取值范圍非常有限?比如對學(xué)生成績排序峦萎。

如果是這樣的話屡久,計數(shù)排序是更好地選擇。高考成績?nèi)≈捣秶邢蓿河嫈?shù)排序更好爱榔。

(向面試官提問):對排序有什么額外的要求被环?

是否需要穩(wěn)定排序?

如果是的話详幽,歸并排序是更好地選擇筛欢。

(向面試官提問):數(shù)據(jù)的存儲狀況是怎樣的?

是否是使用鏈表存儲的唇聘?

如果是的話版姑,歸并排序是更好地選擇。

快排依賴于數(shù)組的隨機存取雳灾。

(向面試官提問):數(shù)據(jù)的存儲狀況是怎樣的漠酿?

數(shù)據(jù)的大小是否可以裝載在內(nèi)存里?

數(shù)據(jù)量很大谎亩,或者內(nèi)存很小炒嘲,不足以裝載在內(nèi)存里,需要使用外排序算法匈庭。

對一組數(shù)據(jù)進行排序小結(jié)

有沒有可能包含有大量重復(fù)的元素夫凸?

是否大部分數(shù)據(jù)距離它正確的位置很近?是否近乎有序阱持?

是否數(shù)據(jù)的取值范圍非常有限夭拌?比如對學(xué)生成績排序。

是否需要穩(wěn)定排序衷咽?

是否是使用鏈表存儲的鸽扁?

數(shù)據(jù)的大小是否可以裝載在內(nèi)存里?

什么是“正確”的回答一個算法問題

正確除了你能把代碼編出來運行出正確的結(jié)果镶骗。正確還包含對問題的獨到見解桶现;優(yōu)化;代碼規(guī)范鼎姊;容錯性骡和;

不僅僅是給出解決算法問題的代碼,還要把上面因素包括。

如果是非常難的問題相寇,對你的競爭對手來說慰于,也是難的。

關(guān)鍵在于你所表達出的解決問題的思路唤衫。

甚至通過表達解題思路的方向婆赠,得出結(jié)論:這個問題的解決方案,應(yīng)該在哪一個領(lǐng)域佳励,我可以通過查閱或者進一步學(xué)習(xí)解決問題休里。

算法面試只是面試的一部分

算法面試只是技術(shù)面試的一部分。

根據(jù)你的簡歷和應(yīng)聘職位的不同植兰,勢必要考察其他技術(shù)方面份帐。

項目經(jīng)歷和項目中遇到的實際問題

解決能力,是否參與

深入思考

技術(shù)態(tài)度

面試前梳理自己簡歷上所寫到的項目:整理一下可能會問到的楣导。

你遇到的印象最深的bug是什么废境?

面向?qū)ο?/p>

設(shè)計模式

網(wǎng)絡(luò)相關(guān);安全相關(guān)筒繁;內(nèi)存相關(guān)噩凹;并發(fā)相關(guān);…

系統(tǒng)設(shè)計毡咏;scalability(大規(guī)模)

技術(shù)面試優(yōu)秀不意味著能夠拿到Offer

技術(shù)面試只是面試的一部分驮宴。面試不僅僅是考察你的技術(shù)水平,還是了解你的過去以及形成的思考行為方式呕缭。

關(guān)于過去:參與項目至關(guān)重要

項目經(jīng)歷:

工作人士

研究生

本科生

畢業(yè)設(shè)計

其他課程設(shè)計(大作業(yè))

如何找到項目堵泽?

實習(xí)

創(chuàng)建自己的項目

自己做小應(yīng)用:計劃表修己;備忘錄;播放器…

自己解決小問題:爬蟲迎罗;數(shù)據(jù)分析睬愤;詞頻統(tǒng)計…

“不是項目”的項目:一本優(yōu)秀的技術(shù)書籍的代碼整理等…(github)

分享:自己的技術(shù)博客;github等等

行為類問題

通過過去了解你的思考行為方式:

遇到的最大的挑戰(zhàn)纹安?

犯過的錯誤尤辱?

遭遇的失敗厢岂?

最享受的工作內(nèi)容光督?

遇到?jīng)_突的處理方式?

做的最與眾不同的事兒塔粒?

具體闡述:我在某某項目中遇到一個怎樣的算法問題:這個問題是怎樣的结借。它是我遇到的最大的挑戰(zhàn),我是如何克服解決的。

準備好合適的問題問面試官

整個小組的大概運行模式是怎樣的窗怒?

整個項目的后續(xù)規(guī)劃是如何的映跟?

這個產(chǎn)品中的某個問題是如何解決的?

為什么會選擇某些技術(shù)扬虚?標準努隙?

我對某個技術(shù)很感興趣,在你的小組中我會有怎樣的機會深入這種技術(shù)辜昵?

算法面試仍然是非常重要的一部分

如何準備算法面試

準備面試和準備算法面試 是兩個概念

算法面試荸镊,只是面試中的一個環(huán)節(jié)。

遠遠不需要啃完一本《算法導(dǎo)論》

強調(diào)理論證明

第一遍讀不需要弄懂證明

前幾遍閱讀應(yīng)該記住結(jié)論就行了堪置,不需要弄懂證明躬存。把更多的精力放在算法思想上。

針對算法面試舀锨,算法導(dǎo)論里面的理論推導(dǎo)和證明不是很重要的方面岭洲。

學(xué)習(xí)切忌完美主義

高級數(shù)據(jù)結(jié)構(gòu)和算法面試提及的概率很低

基礎(chǔ)的概念要知道,但是不需要實現(xiàn)等更深入的層面坎匿。

遠遠不需要到達信息學(xué)競賽的水平

算法面試的準備范圍

不要輕視基礎(chǔ)算法和數(shù)據(jù)結(jié)構(gòu)盾剩,而只關(guān)注“有意思”的題目

各種排序算法

基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法的實現(xiàn):如堆、二叉樹替蔬、圖…

基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的使用:如鏈表告私、棧、隊列承桥、哈希表驻粟、圖、Trie凶异、并查集…

基礎(chǔ)算法:深度優(yōu)先蜀撑、廣度優(yōu)先挤巡、二分查找、遞歸…

基本算法思想:遞歸屯掖、分治玄柏、回溯搜索襟衰、貪心贴铜、動態(tài)規(guī)劃…

例子

Intel的面試題:

初始序列為1 8 6 2 5 4 7 3的一組數(shù)采用堆排序,當建堆(小根堆)完畢時瀑晒,堆所對應(yīng)的二叉樹中序遍歷序列為:( )

A. 8 3 2 5 1 6 4 7

B. 3 2 8 5 1 4 6 7

C. 3 8 2 5 1 6 7 4

D. 8 2 3 5 1 4 7 6

樂視的面試題:

對一個含有20個元素的有序數(shù)組做二分查找绍坝,數(shù)組起始下標為1,則查找A[2]的比較序列的下標為()

A. 9苔悦、5轩褐、4、2

B. 10玖详、5把介、3、2

C. 9蟋座、6拗踢、2

D. 20、10向臀、5巢墅、3、2

考查二分查找法券膀。

阿里巴巴面試題

一組記錄排序碼為(5君纫、11、7芹彬、2蓄髓、3、17)舒帮,則利用堆排序方法建立的初始堆為()

A. (11会喝、5、7会前、2好乐、3、17)

B. (11瓦宜、5蔚万、7、2临庇、17反璃、3)

C. (17昵慌、11、7淮蜈、2斋攀、3、5)

D. (17梧田、11淳蔼、7、5裁眯、3鹉梨、2)

E. (17、7穿稳、11存皂、3、5逢艘、2)

F. (17旦袋、7、11它改、3疤孕、2、5)

百度面試題

在圖采用鄰接表存儲時搔课,求最小生成樹的Prim算法的時間復(fù)雜度為( )

O(n)

O(n+e)

O(n^2)

O(n^3)

重點關(guān)注

基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的使用:如鏈表胰柑、棧、隊列爬泥、哈希表柬讨、圖、Trie袍啡、并查集…

基礎(chǔ)算法:深度優(yōu)先踩官、廣度優(yōu)先、二分查找境输、遞歸…

基本算法思想:遞歸蔗牡、分治、回溯搜索嗅剖、貪心辩越、動態(tài)規(guī)劃…

選擇合適的OJ(Online judge):在線判題系統(tǒng)

不要選擇過于偏向程序設(shè)計競賽的OJ

*面向競賽難度過高

選擇合適的oj

leetcode

Online Portal for IT Interview

真實的面試問題

www.leetcode.com

HankeRank

注意

在學(xué)習(xí)和實踐做題之間,要掌握平衡

基礎(chǔ)算法實現(xiàn)與算法思想

如何回答算法面試問題

解決算法面試問題的整體思路

注意題目中的條件

給定一個有序數(shù)組…(二分法)

有一些題目中的條件本質(zhì)是暗示

設(shè)計一個O(nlogn)的算法(分治:在一顆搜索樹中完成任務(wù)信粮,對于數(shù)據(jù)排序)

無需考慮額外的空間(用空間換時間上的優(yōu)化)

數(shù)據(jù)規(guī)模大概是10000(O(n^2)就可以)

當沒有思路的時候

自己給自己幾個簡單的測試用例黔攒,試驗一下

不要忽視暴力解法。暴力解法通常是思考的起點。

例子

LeetCode 3 Longest Substring Without Repeating Characters

在一個字符串中尋找沒有重復(fù)字母的最長子串

如”abcabcbb”督惰,則結(jié)果為”abc”

如”bbbbb”不傅,則結(jié)果為”b”

對于字符串s的子串s[i…j]

使用O(n^2)的算法遍歷i,j,可以得到所有的子串s[i…j]

使用O(length(s[i…j]))的算法判斷s[i…j]中是否含有重復(fù)字母

三重循環(huán):復(fù)雜度O(n^3)赏胚,對于n=100的數(shù)據(jù)访娶,可行

優(yōu)化算法

遍歷常見的算法思路

遍歷常見的數(shù)據(jù)結(jié)構(gòu)

空間和時間的交換 (哈希表)

預(yù)處理信息(排序)

在瓶頸處尋找答案:O(nlogn) + O(n^2) ; O(n^3)

O(n^2)能否優(yōu)化。

什么樣的問題使用什么樣的思路和數(shù)據(jù)結(jié)構(gòu)觉阅。

實際編寫問題

極端條件的判斷:

數(shù)組為空崖疤?

字符串為空?

數(shù)量為0留拾?

指針為NULL?

代碼規(guī)范:

變量名

模塊化

復(fù)用性

總結(jié)

我這里也準備了一線大廠面試資料和超多超硬核的PDF技術(shù)文檔戳晌,以及我為大家精心準備的多套簡歷模板(不斷更新中),希望大家都能找到心儀的工作痴柔!

有需要的朋友可以加q群:580763979? ? ??備注:簡書? ?免費領(lǐng)取~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市疫向,隨后出現(xiàn)的幾起案子咳蔚,更是在濱河造成了極大的恐慌,老刑警劉巖搔驼,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谈火,死亡現(xiàn)場離奇詭異,居然都是意外死亡舌涨,警方通過查閱死者的電腦和手機糯耍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囊嘉,“玉大人温技,你說我怎么就攤上這事∨ち唬” “怎么了舵鳞?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琢蛤。 經(jīng)常有香客問我蜓堕,道長,這世上最難降的妖魔是什么博其? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任套才,我火速辦了婚禮,結(jié)果婚禮上慕淡,老公的妹妹穿的比我還像新娘背伴。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布挂据。 她就那樣靜靜地躺著以清,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崎逃。 梳的紋絲不亂的頭發(fā)上掷倔,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音个绍,去河邊找鬼勒葱。 笑死,一個胖子當著我的面吹牛巴柿,可吹牛的內(nèi)容都是我干的凛虽。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼广恢,長吁一口氣:“原來是場噩夢啊……” “哼凯旋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钉迷,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤至非,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后糠聪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荒椭,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年舰蟆,在試婚紗的時候發(fā)現(xiàn)自己被綠了趣惠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡身害,死狀恐怖味悄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情题造,我是刑警寧澤傍菇,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站界赔,受9級特大地震影響丢习,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淮悼,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一咐低、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袜腥,春花似錦见擦、人聲如沸钉汗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽损痰。三九已至,卻和暖如春酒来,著一層夾襖步出監(jiān)牢的瞬間卢未,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工堰汉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辽社,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓翘鸭,卻偏偏與公主長得像滴铅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子就乓,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容