個人 2020 iOS BAT面試心得:Bigo、字節、快手、伴魚、百度、微博等

ps:後面按照本身面試的時間順序來寫,記錄的面試題是我印象比較深入的,並不必定很全,暫時先提供面試題,後面考慮給出相應的題解。

面試

我面試了大大小小的各類公司,BAT、bigo、字節、快手、伴魚等,由於一些緣由,也拒面了一些公司,拿了幾家的offer。前端

伴魚

伴魚是我準備後參加的第一輪面試,有不少本身準備得不是很全,也沒有徹底進入面試狀態,面試結果不是很好,一面就掛了。web

一面

  • 算法題:判斷平衡二叉樹(easy)
  • 代碼閱讀題:(問輸出)
TestObject *object1 = [[TestObject alloc] init];
__block TestObject *object2 = [[TestObject alloc] init];
object1.name = @"Mike";
object2.name = @"Sean";
__block int vi = 1;

void (^handler)(NSString *) = ^(NSString *name) {
    object1.name = name;
    object2.name = name;
    vi = 2;
}
handler(@"Lucy");

NSLog(object1.name);
NSLog(object2.name);
NSLog(@"%i", vi);

引伸:面試

  • 若是__block int vi = 1; 這句改爲int vi = 1會怎樣,爲何
  • 代碼中的block是什麼block,爲何算法

    • weak的實現原理
    • weak弱引用表是可變的麼仍是不可變的
    • weak是在何時置nil的,若是同時有不少對象對性能影響大怎麼辦
    • UIView 和 CALayer的關係和區別
    • UIView 和 CALayer在動畫上的區別
    • frame和bounds在什麼狀況下是不相等的
    • bounds x,y 必定是0,0麼,爲何
    • bounds 改爲 (50, 50, width, height)會發生什麼,view自己,子View?

58

58我面了不少次,一開始面的基礎研發部門,後來給我轉到了企業工具研發,中間時間拖得有點長,直接拒面了。swift

一面

  • 說下你在開發過程當中遇到過的內存泄漏
  • NSTimer 怎麼處理內存泄漏
  • Delegate什麼狀況下會出現內存泄漏,怎麼解決
  • Delegate和Notification的區別
  • 多線程相關後端

    • iOS中有哪些多線程技術
    • 若是有兩個同步任務嵌套會怎樣
    • 常見的鎖,爲何要加鎖
    • C依賴AB任務執行完才能執行,你怎麼設計
    • 讀寫鎖底層怎麼實現
  • JavaScriptCore相關數組

    • 什麼是JavaScriptCore,JS和Native是怎麼進行通訊的
    • 你知道hybrid麼,說說你日常怎麼使用的(由於沒怎麼接觸過直接說的不會)
  • 後面就是聊天了,中間穿插問了下動態庫和靜態庫的卻別

二面(終面)

58這個部門的面試就兩輪,二面是羣面(幾我的輪流面你),第一次接觸這種面試形式,壓力仍是有點的。緩存

  • 對個人項目表感興趣,前面聊了很多項目的內容,問了下項目的背景,作了啥以及有哪些收益
  • 瞭解業內性能優化是怎麼作的麼
  • 你項目中是怎麼作性能優化的
  • ReactNative相關安全

    • RN的原理
    • RN和flutter的區別
    • 你知道RN拆包麼,RN爲何要拆包
    • JS是單線程的是怎麼和native多線程進行交互的(這個問題有點奇葩)
    • JS和native通訊的數據結構是什麼
    • 大家公司對於線上JSError作了哪些事情是怎麼處理的
  • 你有什麼想問的麼

一個創業公司

這個創業公司全程都是在聊天,後面問了些和iOS沒多大關係的問題,而後就發了口頭offer。性能優化

  • 聊天:在公司中學到了啥,爲啥要來北京等
  • 有一個10個G的文件裏面每一行都有數字,對這些數字進行排序(兩種方法)
  • 怎麼將彩色的圖片專程黑白的
  • Web渲染和Native渲染有什麼異同點

拼多多

拼多多應該是本身面的一個相對較大的公司,面試過程當中和麪試官有了點小分歧,後面問我源碼在哪一個文件哪一行,後面問得問題也基本上是我以前沒怎麼接觸過的。

一面

  • 算法: 手寫LFU(用字典寫了二十多分鐘,面試官讓優化只知道能夠用雙鏈表優化,可是集體沒能寫出來)
  • 一個操做若是耗時5s後返回nil,不然返回一個字符串,你怎麼設計(要求手寫代碼)
  • GCD中常見的操做(要求寫代碼)
  • Struct中有一些成員變量佔多少字節
  • 一個OC對象在iOS中所佔內存的字節數(這邊和麪試官爭了下,我說是iOS中至少16個字節,由於內存對齊,面試官問你肯定我說我肯定,而後就有了後面的問題)
  • 你看過alloc的源碼麼,你剛剛說的代碼是在哪一個文件哪一行
  • dealloc的整個過程
  • NSURLSession相關的內容(具體忘了)
  • web和native怎麼共享cookie
  • xx(前司)有動態庫打包麼,你看過xx ipa(前司app)的結構麼
  • 內聯函數和普通函數的區別
  • 怎麼hook一個C函數
  • 有什麼想問的麼

百度

百度問得和iOS相關的較少,CS基礎相對較多。

一面

  • 聊項目:主要問了項目的技術棧選擇,以及項目中有哪些難點
  • http header 和 body
  • GET和POST請求
  • GET請求參數必定是放在URL中的麼
  • HTTPS (TLS是啥,怎麼創建鏈接等)
  • 動態庫和靜態庫的區別
  • +load 和 initialized方法的區別
  • +load的調用時機
  • +load分類中的處理
  • 分類的實現機制
  • 分類和類別的區別
  • 分類中添加屬性
  • 關聯對象的原理
  • 算法:有一個很大的整形數據,轉成二進制求1的個數(由於前面聊比較多,只要求說了下思路)

二面

  • 聊項目:本身項目偏後端,問了不少和後端相關的內容,後續問的問題也基本上要求從客戶端和後端雙重角度回答
  • 你瞭解的網絡協議
  • HTTP和TCP、UDP的聯繫
  • HTTP和HTTPS的區別
  • HTTPS的原理
  • 在HTTPS創建鏈接的時候都用了哪些加密算法,爲何要這麼設計
  • 常見的加密算法
  • 對稱加密算法和非對稱加密算法的區別
  • 說說點擊一個按鈕後打開一個web頁面從發送網絡請求到頁面展現都作了啥
  • 爲何能經過一個URL就能請求到對應的資源(域名解析等)
  • 若是客戶端上有個按鈕,點擊會觸發一次網絡請求,在短期內快速點擊,怎麼處理(從客戶端以及服務端角度思考)
  • 知道什麼是HTTPDNS麼
  • GET請求和POST的區別,POST請求參數能放在URL中麼爲啥
  • 你瞭解的HTTP請求響應狀態碼
  • 說說爲何要設計304這個狀態碼
  • Web登陸時怎麼保持會話狀態的
  • 你知道cookie和session的區別麼
  • 你知道常見的網絡攻擊麼
  • 什麼是中間人攻擊原理,怎麼預防
  • 日常用過抓包工具麼,說說抓包的原理
  • 若是讓你設計一個HTTPS抓包你回怎麼設計
  • 進程和線程的區別是啥
  • 進程的通訊機制
  • 進程A和進程B經過管道通訊的話是在同一個管道麼
  • 多線程容易出現的問題,怎麼解決
  • 死鎖產生的條件以及對應的解決方案
  • 自旋鎖和互斥鎖的卻別
  • 什麼是虛擬內存,虛擬內存和物理內存的關係和區別
  • 行間的換頁算法有哪些
  • LRU、LFU
  • 繼續問項目,爲啥要作這些東西,碰到了什麼難點
  • 你以爲你的優點和缺點是啥
  • 本身的將來規劃
  • 還有什麼想問的麼

三面

  • 百度三面中主要問的和職業規劃相關的內容,沒有太多的參考價值,這邊再也不敘述

騰訊

由於一開始是在音樂的流程裏,約面時間相對較晚,pcg那邊想和我先聊下,而後再作選擇,因而騰訊面了騰訊音樂和PCG兩個部門

PCG

pcg在音樂以前面,面完一面後說一面過了,可是由於流程在音樂,因此讓我選擇一個流程走,我選了音樂,後來音樂掛了後沒有好意思去舔回來。

一面

  • 聊項目
  • category的實現原理
  • weak的實現原理
  • 開發中遇到的crash
  • 怎麼處理這些crash的,有什麼好的解決方案麼
  • 循環引用問題,怎麼解決
  • NSTimer相關,和runLoop的關係
  • NSTimer、CADisplayLink以及GCD Timer的對比
  • 算法:求N!

騰訊音樂

騰訊音樂感受業務不是不少口,感受面試官不知道問我什麼好,一面後就沒有後續了。

一面

  • 前面聊項目:背景收益等
  • 想看機會的緣由
  • RN是這麼作到和native通訊的
  • 若是讓你實現RN的效果你會怎麼設計(這個問題看你功底了)
  • Native是怎麼將方法暴露出去的
  • 需求中的難點,你是怎麼解決的
  • A調用了B方法都作了什麼事情
  • ISA指針
  • 64位後怎麼獲取ISA指針
  • runloop、runtime工做中有接觸過嘛
  • 手指觸摸屏幕後系統都作了哪些事情
  • 怎麼監聽頁面的卡頓
  • 怎麼監聽函數執行時間
  • 還有什麼想問的麼

微博

微博有點迷,感受面試官就是對着題庫問問題,感受本身回答還OK,可是一面後不了了之了。

一面

  • 基本上都是一些iOS的基礎,和本文面經提到的高度重複,再也不敘述。

Bigo

Bigo整個流程推動很快,一面二面都在當天完成,可是bigo三面後掛了,有點迷,我猜想是由於二面的算法題沒有給出最優解。

一面

  • 算法(三道手寫)

    • 字符串轉整形
    • 反轉鏈表(遞歸和非遞歸)
    • 將兩個有序鏈表合併成一個有序鏈表
  • iOS基礎:

    • Objective-C的內存管理
    • ARC和MRC的區別
    • Timer的使用,怎麼避免循環引用
    • autoreleasePool的底層實現機制
    • autoreleasePool的底層數據結構,爲何要這麼設計
    • iOS中常見的多線程技術
    • 常見的鎖,有什麼區別
    • 若是讓你設計讀寫鎖,你怎麼設計
  • RN、flutter、weex:

    • 你怎麼看待這些動態化技術
    • RN、flutter以及weex的區別
    • RN怎麼和native通訊的
  • 後面簡單聊了下將來的規劃

二面

  • 算法: 山脈數組找目標值(要求logN的時間複雜度)
  • QA發現了一個按鈕沒法響應點擊事件,多是什麼緣由致使的(說了五種狀況好像沒有答到面試官要的點)
  • iOS響應者鏈,怎麼尋找最合適的響應者,若是爲nil會怎麼辦
  • frame和bounds的區別
  • 若是bounds的origin不是00會怎樣
  • 你日常用過Charles麼,說說Charles的抓包原理
  • Charles能抓HTTPS麼,怎麼實現
  • HTTPS怎麼創建鏈接的
  • 中間人攻擊,怎麼避免
  • 多線程通常會有什麼問題,請舉個例子
  • 爲何會形成上述問題以及解決方案
  • 主隊列和主線程的關係
  • 全局併發隊列必定在主線程上運行的麼
  • 項目相關,用了什麼技術,有哪些難點,怎麼處理的

三面

  • 自我介紹
  • 爲啥想看機會
  • 聊了下項目
  • 怎麼看待RN、Flutter
  • 日常有看過什麼技術書籍嗎
  • 有看過開源框架嗎
  • 工做中遇到最難的事情後面是怎麼解決的
  • 有什麼想問的麼

看完文章若是你正在跳槽或者正準備跳槽不妨動動小手,添加一下我們的交流羣1012951431來獲取一份詳細的大廠面試資料爲你的跳槽多添一份保障。

貝殼找房

貝殼找房也感受有點迷,和麪試官感受聊很不錯,問得問題都很開放,很考驗功底,最後還問我你感受你過了麼。可是一面後就沒有而後了。

一面

  • 自我介紹
  • 聊項目
  • GCD 看你能說些啥
  • Runtime看你能說些啥
  • 內存管理看你能說些啥
  • 幾個簡單的鏈表問題(具體忘了)
  • 有什麼想問的,以及根據簡歷給個人一些建議(簡歷偏向全棧,意思是我工做時間還不是很長,須要有深度,廣度相關的能夠後續再考慮)

完美世界

完美的面試有點匆忙,面試的問題也頗有深度,後續由於必需要去現場面試,出於安全因素考慮,沒有去面下去。

一面

  • 自我介紹
  • 項目中遇到的問題,怎麼解決的
  • 聊了聊OC中的內存管理
  • 一個對象何時會引用計數+1,何時引用計數-1
  • 對象A copy後生成字符串對象B AB引用計數是怎樣的
  • 若是A是可變的呢
  • 關鍵字,readonly有了解嗎
  • 修飾對象的默認關鍵字是啥
  • category相關,category是怎麼實現的
  • category的結構
  • category中的方法會覆蓋原來類的方法嗎
  • category中怎麼區分開類方法和實例方法的
  • category的方法是怎麼插入到類(元類)對象方法列表中的
  • 同時最多執行5個任務怎麼設計
  • AFN中 success 和 fail block是在子線程仍是主線程
  • 不經過回到主隊列的方式回到主線程(有點沒get到點)
  • SDWebImage的下載原理
  • 若是有兩個相同的url,SDWebImage是怎麼處理的
  • 算法:有個view有不少子view,沒個子view中也有不少子view,找出全部的按鈕,並切圓角(圖的BFS)

滴滴

滴滴效率是真的高,面試流程一夜走完,當晚出結果,從面試到發offer僅僅用了4天左右的時間。

一面to終面

  • 主要涉及iOS(runtime、runloop、內存管理等)
  • 計算機網絡(HTTP、HTTPS、TCP/UDP等)
  • 操做系統(進程線程、進程通訊、中斷的一些機制以及一些換頁算法等)
  • 算法基礎(常見的一些鏈表、樹以及數組算法題)

ps:面試題以前均有涉及,再也不詳寫

猿輔導

猿輔導面試仍是有點難度的,算法寫完還要跑case,第二道題目跑case不正確,看代碼debug,後面由於時間不夠沒有給出正確結果,後面就沒有後續了。

一面

  • 聊項目(主要是項目中的一些技術點)
  • 聊對大前端的見解(weex、RN、Flutter對比等)
  • JS是怎麼實現繼承的,什麼是JS的原型鏈
  • iOS內存管理(引用計數、修飾詞、weak和assign的區別)
  • runtime(什麼是runtime,爲啥要有runtime,你用runtime作過什麼事情)
  • 怎麼進行方法的交換
  • +load在何時調用的,對啓動的影響
  • 代碼題:ABCDE五個任務,D依賴AB的執行,E依賴BC的執行,怎麼設計
  • GCD信號量,線程同步等
  • Runloop是啥,爲啥要設計runloop,runloop和線程的關係
  • Timmer爲啥會有內存泄漏的現象,Runloop會持有Timmer麼
  • 什麼是source0和source1,分別作什麼事情
  • 怎麼監測app卡頓
  • UIView 和 CALayer的區別,爲何要這麼設計
  • 隱式動畫和顯示動畫的區別
  • 算法:兩題LC medium(都要求寫完跑case)

    • 給定一個數字n 求出所有集合(n = 3 輸出 [[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]])
    • Lc 200 求島嶼個數

高德

這邊有個小插曲,由於以前高強度的面試,後面拿了幾個不錯的offer後就不太想繼續面了,感受面試狀態也是一個正態分佈的曲線,拒了高德面試後hr找我聊了下,而後又答應繼續面試,後面由於本身確實沒有發揮出正常的水平,致使一面掛了,不過hr後來請我喝了杯咖啡仍是蠻開心的。

一面

  • 聊項目
  • JS是怎麼和Native通訊的
  • 模塊表是怎麼生成的
  • JS函數注入怎麼作的
  • RN 和 Weex 的區別
  • HTTP 請求頭
  • HTTP 狀態碼
  • 分類和extension區別
  • 分類的實現機制
  • 分類同名方法的調用
  • 關聯對象,策略有哪些,關聯對象的key爲啥要用static修飾(這個沒有get到點)
  • GCD、NSThread以及NSOperation的區別,怎麼取消任務
  • GCD block內存管理
  • 本身實現一個函數,其中有個形參是block,這個block是何時進行copy的,必定會進行copy操做嘛
  • 手指點在高德地圖上的一個按鈕,會發生什麼 ,具體說明
  • 怎麼找到最合適的view
  • 如過有多個子VC,是先VC仍是先View
  • Runloop是怎麼監聽到點擊事件的
  • Runloop和線程的關係,Runloop能單獨存在嘛
  • 怎麼作到線程保活
  • A包含B包含C,怎麼作才能讓C的點擊響應區域是 以C對角線爲半徑的圓弧(要說出具體實現方式)
  • 代碼題:

    • 下方代碼中三個數組中的p.name是啥,爲何
Person *p = [[Person alloc] init];
p.name = @"zhangsan";

NSArray *a = @[p];
NSArray *b = [a copy];
NSArray *c = [a mutableCopy];

Person *p2 = [c firstObject];
p2.name = @"lisi";
  • 下方代碼會有什麼問題,爲何
NSNotificationCenter *__weak center = [NSNotificationCenter defaultCenter];
id __block token = [center addObserver:kDdiRegisterNotification
                                object:nil
                                 queue:[NSOperationQueue mainQueue]
                            usingBlock:^(NSNotification *note) {
                                    [self getDataWithComplete:completeBlock];
                                    [center removeObserver:token];
                                 }];

字節跳動

字節面了兩個部門,一個是頭條還有一個是抖音,字節是在我回去動了個小手術後面的,面試也不是很在狀態。

頭條

一面(交叉面)

  • 首先是一組代碼,問有啥代碼風格不妥的地方(代碼忘記了)
  • MRC 和 ARC 的區別
  • ARC有什麼缺點
  • MRC 下 寫setter方法
  • 代碼題:(一、輸出什麼 二、若是是在自線程中會怎麼樣)
NSLog(@"1");
dispatch_sync(^{
    NSLog(@"2");
});
NSLog(@"3");
  • 你理解的id 以及 id 和 void *區別
  • 函數指針和指針函數的區別
  • CALayer 和 UIView的關係
  • 蘋果爲何要這麼設計
  • frame、bounds、center
  • layoutIfNeeded、layoutSubViews、setNeedsDisplay區別
  • 響應者鏈(順便說了下完整的手指觸摸屏幕會發生什麼引出了後續runloop相關問題)
  • runloop source0 和 source1都是啥
  • runloop和線程的關係
  • OC 消息發送機制(提到了isa、類對象,引出下面問題)

    • 寫下類的結構
    • isa在32爲和64位的區別
    • 什麼是元類爲啥要這麼設計
  • category 和 extension 的區別
  • +load方法
  • 算法題 判斷鏡像二叉樹

二面

  • 自我介紹
  • 聊項目
  • Weex和RN以及flutter的區別
  • 要是收到了內存警告怎麼辦
  • 循環引用和內存泄露
  • Block形成循環引用的原理
  • Runloop和Timer的關係
  • Runloop能有不少Timer麼
  • 什麼是source0 和 source1
  • Timer必定是準時的嗎,爲何
  • FPS怎麼監控,上傳時機
  • 算法:兩數之和(要求空間複雜度O(1))

抖音

抖音面試有點迷,感受面試官和我徹底在兩個頻道,面試官問的內容我明明回答了可是他恕我啥都不會,不知道是否是沒有get到他的點。

一面

  • 聊項目
  • iOS中+load 和 initialized區別
  • iOS修飾屬性經常使用的修飾符
  • weak和strong的區別
  • strong和unsafe_unretained區別
  • 什麼是單例
  • 對象的比較
  • 算法:開根號(要求跑case)

快手

快手也是在我動完小手術後面的,我感受面試發揮正常,和麪試官聊也不錯,可是玄學的是本身仍是掛了,後面有其餘BG想撈也不想面了。

一面

  • 自我介紹
  • 在學校都作了哪些項目
  • 聊公司項目
  • 常見的crash
  • 怎麼處理這些crash
  • 怎麼設計一個crash日誌回撈系統
  • Objc爲啥要設計消息發送機制,直接調函數很差嗎
  • 怎麼獲取函數的堆棧
  • 怎麼監控APP卡頓
  • APP啓動作了哪些事情怎麼優化
  • +load
  • 怎麼進行業務解耦
  • APP性能優化相關
  • 設計一個下載任務

    • 能夠並行也能夠串行
    • 有最大的併發數量
    • 能夠斷點續傳
    • 如何解耦
    • 緩存怎麼設計(說了LRU、LFU)

• 微信底部四個tab 包含首頁讓你實現要多久,爲何(這個真的沒有明白是想問啥)

• 算法:鏈表反轉

總結

一天四輪的面試確實是高強度的,一天下來整我的會很疲憊,致使前面拿到了一些offer後,緊繃的弦立刻就鬆懈下來了,後面幾輪高德、字節以及快手的面試都沒有發揮出本身應有的水平,所幸的是總體結果差強人意。面試須要不斷覆盤總結,不至於此次面試問的問題不懂下次還不懂,還有知識須要不斷積累,不能再臨時抱佛腳了。

簡歷

簡歷決定着你可否有面試機會,一份好的簡歷可讓你事半功倍。

  • 能夠去網上找一份簡歷模板
  • 簡歷儘可能精簡,最好能控制在一頁A4紙
  • 要作一些取捨,校園經歷儘可能不要寫了
  • 描述項目建議用STAR法則(說清楚項目背景、目標、作了哪些事情取得了哪些成果)
  • 本身不是很熟的東西就不要寫了,感受只要寫到簡歷上面試官就默認你精通

iOS相關

iOS有不少東西咱們是看不到具體的實現的,畢竟是閉源的,可是咱們能結合咱們的一些經驗去猜想蘋果的一些實現方式。目前iOS面試問的問題愈來愈細,愈來愈底層,因此閱讀一些源碼是及其有必要的,iOS通常常考的點以下(這邊列舉得可能並非很全):

  • Objective-C語言相關

    • OC的內存管理(ARC、MRC、autoReleasePool等)
    • OC類的結構,class_ro_t、class_rw_t等
    • OC的消息機制
    • KVC、KVO
    • OC的運行時,能作哪些事情
    • OC的一些特性(weak的實現機制等)
    • 分類和類別
    • isa指針
    • super與superClass
    • dealloc
    • KVC以及KVO
    • block(類型、變量捕獲等)
    • 循環引用問題
  • swift相關:

    • 筆者沒怎麼接觸過swift這邊就不寫了
  • iOS相關

    • UIView和CALayer的區別
    • CoreAnimation
    • 多線程(GCD、NSOperationQueue)
    • runLoop以及runLoop的實現原理
    • 響應者鏈
    • Timer(NSTimer、CADisplayLink以及GCD Timer)
    • iOS渲染的知識

動態化技術(加分項)

  • 怎麼看待這些技術
  • 須要瞭解下ReactNative、Flutter以及Weex等主流動態化技術的優缺點
  • 根據實際狀況瞭解下ReactNative或Flutter等動態化技術的實現原理
  • 瞭解下JavaScriptCore,知道和native的通訊機制

CS基礎

這部分主要看你基礎是否是紮實了,做爲一名RD,無論作什麼,這些知識都是要掌握的。

操做系統

  • 進程和線程
  • 進程通訊
  • 虛擬內存和物理內存
  • 常見的調度、換頁算法
  • 中斷機制等

計算機網絡

  • OSI七層模型
  • 常見的協議(HTTP、HTTPS、TCP、UDP)
  • HTTP報文格式
  • GET、POST卻別
  • HTTP狀態碼
  • HTTP和HTTPS的區別
  • HTTPS的鏈接創建機制
  • TCP三次握手以及四次揮手,爲何要三次握手,四次揮手少一次會怎樣
  • TCP和UDP區別
  • TCP的一些安全機制(用塞控制,較驗和等)
  • 域名解析等

編譯原理

  • 編譯的過程
  • 怎麼進行一些優化等

算法(脫離編譯器手寫,最好能肉眼debug)

算法基本上是工程師面試一定考察的點,如今愈來愈多的公司面試考察算法,做爲iOS開發的同窗,在面試以前至少要刷下《劍指offer》上的全部題目,這本書上的題目都是經典中的經典,面試出現機率極高。有時間的話能夠刷下LeetCode上easy和medium難度的題,iOS面試,不多有考察hard的題目,可是就算是遇到hard的題目也不要過於緊張,仔細審題,尋找突破口。算法是一個積累的過程,如今LeetCode能夠每日打卡,這是一個很好的積累手段。下面羅列下常考的數據結構和算法:

  • 數據結構

    • 數組
    • 鏈表
  • 算法

    • 二分(就本人經驗來看出現機率極高)
    • 分治
    • 排序(8大排序)
    • 樹的遍歷(前、中,後)
    • BFS以及DFS
    • DP(出現機率較低)

面試資料:

看完文章若是你正在跳槽或者正準備跳槽不妨動動小手,添加一下我們的交流羣1012951431來獲取一份詳細的大廠面試資料爲你的跳槽多添一份保障。

相關文章
相關標籤/搜索