劍指offer

一童太、面試的流程

1.1 面試官說

1.初級程序員米辐,偏重考察算法和數(shù)據(jù)結(jié)構(gòu),基本功书释;高級程序員翘贮,關(guān)注專業(yè)技能和項目經(jīng)驗。
2.面試前要做好準備爆惧,對公司近況狸页、項目情況有所了解,體現(xiàn)熱情扯再,要準備合適的問題
3.不要過于緊張芍耘,解決問題,首先要清除要解決的問題叔收,開始做一些整體的設(shè)計和規(guī)劃齿穗,寫完以后要自己review,并借助一些測試用例來走幾遍代碼饺律,找出可能的錯誤

1.2 面試形式

電話面試

  • 電話面試窃页,可能搞突襲,在投出簡歷的一兩個星期內(nèi)复濒,要保證手機電池至少連續(xù)通話一個小時脖卖。
  • 要盡量用形象化的語言把細節(jié)講清楚。
  • 聽不清或者聽不懂巧颈,要大膽pardon

共享桌面遠程面試

  • 看中編程習(xí)慣和調(diào)試能力
  • 良好的編程習(xí)慣包括 1畦木、思考清楚再開始編碼 2、良好的代碼命名和縮進習(xí)慣 3砸泛、能夠單元測試

現(xiàn)場面試

  • 規(guī)劃路徑十籍、估算出行時間
  • 得體衣服
  • 注意面試邀約里的面試流程,如果很長可帶提神飲料
  • 準備幾個問題

1.3 面試環(huán)節(jié)

行為面試

5-10min唇礁,是一個warm up勾栗。
應(yīng)聘者可以利用這幾分鐘調(diào)整自己的情緒,進入面試的狀態(tài)盏筐。

  • 自我介紹
    最開始最有個自我介紹围俘,30min-1分鐘介紹自己的主要學(xué)習(xí)、工作經(jīng)歷即可。
    面試官會對照簡歷去詳細了解他感興趣的項目界牡。
  • 項目經(jīng)驗
    應(yīng)聘者在準備簡歷的時候簿寂,需要根據(jù)STAR模型描述自己經(jīng)歷過的每一個項目
  1. Situation 項目的背景:項目的規(guī)模、開發(fā)軟件的功能宿亡、目標用戶
  2. Task 自己完成的任務(wù):注意如果只是參與了常遂,不要用“負責(zé)”二字。
  3. Action 為了完成任務(wù)挽荠,自己做了哪些工作烈钞,是怎么做的。這里可以做詳細介紹坤按。比如我要面開發(fā),要將基于什么工作在哪個平臺下應(yīng)用了哪些技術(shù)馒过。
  4. Result 自己的貢獻:最好能用數(shù)字說明臭脓,如果參與了功能開發(fā),可以說按時完成了多少功能腹忽;如果是優(yōu)化来累,可以說性能提高百分之多少
    除此之外,常問的問題包括:
    在項目中遇到的最大問題是什么窘奏,你是怎么解決的嘹锁。
    從這個項目中你學(xué)到了什么
    什么時候會和其他團隊成員有什么樣的沖突,你們是解決沖突的着裹。
    tips:在面試時领猾,在介紹項目經(jīng)驗是,不必詳細描述項目的背景骇扇,而是要突出自己完成的工作和取得的成績摔竿。
  • 應(yīng)聘者掌握的技能
    要注重“了解”、“熟悉”少孝、“精通”的區(qū)別继低。
    “了解”是對一個技術(shù)知識上過課或者看過書,但是沒有做過實際的項目稍走。一般不建立在簡歷中列出知識付錢了解過的技能袁翁,除非這個技術(shù)應(yīng)聘的職位的確需要。
    簡歷中婿脸,我們描述的技能的掌握程度大部分應(yīng)該是“熟悉”粱胜。在實際項目中,使用一項技術(shù)有較長的時候盖淡,能夠通過查閱文檔獨立解決大部分問題年柠,我們就熟悉它了。對于畢業(yè)應(yīng)屆生而言,畢設(shè)所用到的技能冗恨,可以用“熟悉”答憔,對于已經(jīng)工作的,在項目開發(fā)過程中所用到的的技能掀抹,可以用“熟悉”
    精通:使用一項技術(shù)得心用手虐拓,在項目開發(fā)中,當同學(xué)同事向我們請教這個領(lǐng)域的問題我們也有信心傲武、有能力去解決蓉驹,才可以說是“精通”。不要充大說精通揪利,本領(lǐng)大不到家會適得其反态兴。
  • 為何跳槽
    應(yīng)屆生可能用不到,也許會和問為什么不要去實習(xí)過的單位吧疟位。
    避免提到老板太苛刻瞻润、同事難相處、加班太頻繁甜刻、工資太低绍撞。
    筆者給我的答案四,現(xiàn)在的工作做了一段時間得院,已經(jīng)沒有太多激情了傻铣,因此需要尋求一份更有挑戰(zhàn)的工作。需要具體論述為什么有些眼圈現(xiàn)在的支委祥绞,以及面試的支委我為什么有興趣等非洲。

技術(shù)面試

技術(shù)面試,一般占據(jù)一小時的面試的40-50min就谜。
是面試的重頭戲怪蔑。
應(yīng)聘者的5種素質(zhì):
1. 基礎(chǔ)知識扎實全面

  • 編程語言的熟練程度
  • 數(shù)據(jù)結(jié)構(gòu),熟練掌握鏈表丧荐、樹缆瓣、棧、隊列虹统、哈希表等數(shù)據(jù)結(jié)構(gòu)和它們的操作弓坞。很多面試管喜歡問鏈表(插入、刪除)车荔、樹(遍歷)的問題渡冻。
  • 查找和排序算法,重點掌握二分查找忧便、歸并排序族吻、快速排序。少數(shù)公司要求熟練掌握動態(tài)規(guī)劃和貪婪算法。
    2. 能寫出正確超歌、完整砍艾、魯邦的高質(zhì)量代碼
  • 面試官會格外關(guān)注邊界條件特殊輸入(null巍举、空字符串)脆荷、錯誤處理等看似細枝末節(jié)但實則至關(guān)重要的地方,來考察應(yīng)聘者是否注重代碼質(zhì)量懊悯。
  • 解決以上問題的最好辦法就是在動手寫diamante之前想好測試用例蜓谋,只有把各種可能的輸入實現(xiàn)都想好了,才能在寫代碼的時候把各種情況做相應(yīng)的處理炭分。
  • 寫完代碼中桃焕,也不要立刻交給面試官檢查,而是要在心理默默地運行捧毛,當之前的輸入的測試用例是否都能得到合理的輸出覆旭。
  • 簡單的問題,一定要注重細節(jié)岖妄,寫出完整、魯棒的代碼
    3. 能思路清晰的分析寂祥、解決復(fù)雜問題
    幾個簡單的方式幫助自己形成思路:
  • 舉例讓抽象問題具體化:舉幾個簡單的例子讓自己理解問題荐虐,說不準能發(fā)現(xiàn)抽象的規(guī)律
    -畫圖讓抽象問題形象化: 試著用圖形表示抽象的數(shù)據(jù)結(jié)構(gòu)
  • 分解使復(fù)雜問題簡單化:試著把復(fù)雜的問題分解成若干簡單的子問題,再一一解決丸凭。許多遞歸的思路福扬,包括分治法和動態(tài)規(guī)劃都屬此類。
    4. 能從時間惜犀、空間復(fù)雜度兩方面優(yōu)化算法效率
  • 如何分析效率
  • 熟悉各種數(shù)據(jù)結(jié)構(gòu)的優(yōu)缺點铛碑,選擇合適的數(shù)據(jù)結(jié)構(gòu)解決問題
  • 熟練掌握常用的算法
    5. 具備優(yōu)秀的溝通能力、學(xué)習(xí)能力虽界、發(fā)散思維能力等
  • 在面試過程中汽烦,應(yīng)聘者還應(yīng)該主動提問,以弄清題目的要求莉御,表現(xiàn)自己的溝通能力撇吞。
  • 考察學(xué)習(xí)能力會問:最近在看什么書、從中學(xué)習(xí)到什么新技術(shù)礁叔;拋出一個新概念牍颈,觀察應(yīng)聘者是否能在較短的時間內(nèi)理解這個新概念,并解決相關(guān)的問題琅关。(思考煮岁、提問、再思考)
  • 知識遷移能力
    面試官會現(xiàn)問題各簡單的問題,再問一個很復(fù)雜但是和前面簡單的問題相關(guān)的問題画机。他期望應(yīng)聘者從簡單問題中得到啟示冶伞。
  • 抽象建模能力和發(fā)散思維能力
    限制不得使用常規(guī)方法,考察創(chuàng)新能力

應(yīng)聘者提問

最后的5-10min色罚,至少準備1-2個問題碰缔,問的合適,是加分的好機會戳护。
不適合問的問題

  • 和自己的職位沒有關(guān)系的問題
  • 不要問薪水金抡,薪水是面試之后和HR談的
  • 不要打聽面試結(jié)果
    推薦問
  • 與招聘的職位和項目相關(guān)的問題
    問好這個問題首先需要對應(yīng)聘的職位或者項目背景有一定的了解。兩方面可以去了解:一是面試前做足功課腌且、到網(wǎng)上收集一些信息梗肝,做到對公司成立時間、主要業(yè)務(wù)铺董、職位要求都了然于胸巫击;二是面試官說過的話,不少面試官在面試之前都會簡單介紹與招聘職位相關(guān)的項目精续,其中會包含其他渠道無法得知的信息坝锰,比如項目進展情況,應(yīng)聘者可以從中找出一兩個點重付,然后提問

二顷级、面試需要的基礎(chǔ)知識

編程語言

面試編程語言通常有三個類型:

  1. 面試官直接詢問對某個語言的理解程度
  2. 面試官拿出事先準備好的代碼,讓應(yīng)聘者分析代碼的結(jié)果
    3.要求應(yīng)聘者寫代碼定義一個類型或者實現(xiàn)類型中的成員函數(shù)

數(shù)據(jù)結(jié)構(gòu)

  1. 數(shù)組和字符串是兩個最基本的數(shù)據(jù)結(jié)構(gòu)
    數(shù)組-簡單哈希表确垫,時間高效
    解決空間效率不高的問題弓颈,動態(tài)數(shù)組 ArrayList

  2. 鏈表和樹是面試中出現(xiàn)頻率最高的數(shù)據(jù)結(jié)構(gòu),要留意代碼的魯棒性
    要熟練掌握樹的前序遍歷删掀、中序遍歷翔冀、后序遍歷、層序遍歷披泪、二叉搜索樹纤子、堆、紅黑樹款票。
    棧是一個與遞歸緊密相關(guān)的數(shù)據(jù)解耦
    隊列和廣度優(yōu)先算法遍歷相關(guān)

算法和數(shù)據(jù)結(jié)構(gòu)

重點掌握二分查找计福、歸并排序和快速排序。
遞歸和循環(huán):很多算法都可以用遞歸和循環(huán)兩種方式來實現(xiàn)徽职。遞歸的實現(xiàn)方式代碼會比較簡潔象颖,但是性能不如基于循環(huán)的實現(xiàn)方式(由于函數(shù)調(diào)用自身,而函數(shù)調(diào)用是有時間和空間消耗的姆钉;每一次函數(shù)調(diào)用说订,都要在內(nèi)存棧中分配空間以保存參數(shù)抄瓦、返回地址即臨時變量,而且往棧中壓入和彈出數(shù)據(jù)都需要時間陶冷。)钙姊。在面試的時候,可以根據(jù)題目的特點埂伦,甚至是與面試官進行討論來選擇煞额。
位運算是一種特殊的算法,總共有與沾谜、或膊毁、抑或、左移基跑、右移5種位運算婚温。

如果面試題要求在排序的數(shù)組中查找一個數(shù)字或者某個數(shù)字的統(tǒng)計次數(shù),都可以嘗試二分查找
二分查找的循環(huán)實現(xiàn)

    int binarySearch(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1; // 注意

        while(left <= right) {
            int mid = (right + left) / 2;
            if(nums[mid] == target)
                return mid;
            else if (nums[mid] < target)
                left = mid + 1; // 注意
            else if (nums[mid] > target)
                right = mid - 1; // 注意
        }
        return -1;
    }

二分查找的遞歸實現(xiàn)

   public static int search(int[] nums, int target) {
        return search(nums,0,nums.length-1,target);
    }

    public static int search(int[] nums, int start, int end, int target) {
        int min = start;
        int max = end;
        int mid = (min + max) / 2;
        while (min < max) {
            if (nums[mid] == target) {
                return mid;
            }else if(nums[mid]<target){
                return search(nums,mid+1,max,target);
            }else {
                return search(nums,min,mid-1,target);
            }

        }
        return -1;
    }

哈希表和二叉排序樹的考察重點在于數(shù)據(jù)結(jié)構(gòu)而不是算法

  • 哈希表的最主要優(yōu)點是我們利用他查找數(shù)據(jù)O(1)的時間復(fù)雜度媳否,是最高效率的查找方式栅螟,缺點在于需要額外的空間。
  • 二叉排序樹算法對應(yīng)的數(shù)據(jù)結(jié)構(gòu)是二叉搜索書篱竭。
  • 關(guān)于排序力图,面試官會要求應(yīng)聘者比較插入排序、冒泡排序掺逼、歸并排序搪哪、快速排序等不同算法的優(yōu)勢,要求我們能從額外空間消耗坪圾、平均時間復(fù)雜度、最差時間復(fù)雜度等方面去比較

三惑朦、高質(zhì)量的代碼

3.1 代碼的規(guī)范性

規(guī)范代碼書寫清晰
規(guī)范的代碼布局清晰
規(guī)范的代碼命名

3.2 代碼的完整性

在編碼之前兽泄,要先考慮測試用例:普通功能測試的測試用例、邊界值的測試用例漾月、各種可能出錯的測試用例
有三種錯誤處理方式:

  • 返回值:把錯誤信息傳遞給函數(shù)調(diào)用者病梢。缺點是不能發(fā)變得使用計算結(jié)果
  • 全局變量:設(shè)定一個全局變量,如果運行出錯梁肿,則設(shè)置這個全局變量蜓陌。缺點是,在調(diào)用出錯的時候忘記做相應(yīng)的錯誤處理吩蔑,容易留下隱患
  • 異常:運行出錯钮热,則拋出異常。優(yōu)點是邏輯清晰明了烛芬,缺點是有些語言不支持異常隧期。
    注意飒责,由于計算機表示小數(shù)(包括float和double型的小數(shù))都有誤差,所以不能直接用==判斷兩個小數(shù)是否相同仆潮。應(yīng)當:如果兩個小數(shù)的差值很小宏蛉,就可以認為他們是相等的。
    細節(jié):右移運算符代替除以2性置;左移代替乘以2拾并;a&0x1代替區(qū)域。位運算比乘除法及求余操作效率高很多鹏浅。

四嗅义、面試中的各項能力

1. 溝通能力

  • 無論是介紹項目經(jīng)驗還是介紹解題思路的時候,都需要邏輯清晰明了篡石,語言詳略得當芥喇,重點突出,觀點明確凰萨。
  • 知之為知之继控,不知為不知,對于不清楚的知識點胖眷,要勇敢承認武通,不要不懂裝懂
  • 外企,要注意提高自己的英文交流能力珊搀。

2.學(xué)習(xí)能力

兩種方式考察應(yīng)聘者的學(xué)習(xí)能力冶忱。
第一種方法是詢問應(yīng)聘者最近在看什么書或者在做什么項目,從中學(xué)習(xí)到了什么新技術(shù)境析。---從而了解其學(xué)習(xí)的愿望和學(xué)習(xí)能力囚枪。
第二種時拋出一個新概念,看應(yīng)聘者能不能在較短時間內(nèi)理解這個新概念并解決相關(guān)的問題劳淆。面試官期待應(yīng)聘者能夠通過思考链沼、提問、再思考的過程沛鸵,理解它們并最終解決問題括勺。

3.善于學(xué)習(xí)、溝通的人也善于提問曲掰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疾捍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子栏妖,更是在濱河造成了極大的恐慌乱豆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吊趾,死亡現(xiàn)場離奇詭異咙鞍,居然都是意外死亡房官,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門续滋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翰守,“玉大人,你說我怎么就攤上這事疲酌±澹” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵朗恳,是天一觀的道長湿颅。 經(jīng)常有香客問我,道長粥诫,這世上最難降的妖魔是什么油航? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怀浆,結(jié)果婚禮上谊囚,老公的妹妹穿的比我還像新娘。我一直安慰自己执赡,他們只是感情好镰踏,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沙合,像睡著了一般奠伪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上首懈,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天绊率,我揣著相機與錄音,去河邊找鬼究履。 笑死滤否,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挎袜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肥惭,長吁一口氣:“原來是場噩夢啊……” “哼盯仪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜜葱,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤全景,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后牵囤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爸黄,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡滞伟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炕贵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梆奈。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖称开,靈堂內(nèi)的尸體忽然破棺而出亩钟,到底是詐尸還是另有隱情,我是刑警寧澤鳖轰,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布清酥,位于F島的核電站,受9級特大地震影響蕴侣,放射性物質(zhì)發(fā)生泄漏焰轻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一昆雀、第九天 我趴在偏房一處隱蔽的房頂上張望辱志。 院中可真熱鬧,春花似錦忆肾、人聲如沸荸频。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旭从。三九已至,卻和暖如春场仲,著一層夾襖步出監(jiān)牢的瞬間和悦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工渠缕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸽素,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓亦鳞,卻偏偏與公主長得像馍忽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子燕差,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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