三年開發經驗,從小廠離職後,我憑什麼拿到了阿里、騰訊、今日頭條的offer

臨近年末,很多程序員心裏大概都準備着年後找工作或者跳槽。最近也有很多人都在交流羣裏求大廠面試題。剛好我今年從小型軟件公司離職,奮戰4個多月成功拿到了阿里、騰訊、今日頭條的offer。講述面經的文章很多,本篇文章主要記錄分享我的面試前的準備過程,涵蓋了辭職原因、準備過程、面試刷題、以及簡歷製作與投遞。

我爲什麼離職

關於離職原因,馬雲有一句經典的話“要麼錢沒給到位,要麼心委屈了”,想必大家耳熟能詳了,我這裏再細說一下我個人離職原因:

工資倒掛,漲薪不如意

在之前的小廠薪資倒掛現象嚴重,新入職的員工工資明顯高過老員工,企業寧願高薪招聘一位新員工,也不願給我們老員工加工資,這讓老員工十分寒心。接地造成老員工離職。繼而還有一種,當感覺自己的勞動並未收穫到相應的價值之時,繼續在原公司呆下去意義也不大。

十年如一日的技術

在小型軟件公司乾的三年時間裏,其實只擁有了一年的技術經驗之時。技術視野較窄,能力提升緩慢,沒了技術上升的空間,日復一日,年復一年,只幹着同樣的事情,往高處走纔是必然的選擇。

準備

大廠的正常面試流程週期一般是一到兩個月,就算薪資談完到 offer 最終審批下來可能都需要一到兩週,這段時間心理是比較難熬的,因此我沒有直接裸辭。我不僅要把日常的工作做好,還要開始着手準備刷題、基礎知識準備、高階知識以及新興熱點技術的學習準備。整個階段大概持續了4個多月。

其實每一次跳槽,都是對這幾年工作的一個梳理和總結,雖然大家都明白“面試造航母、入職擰螺絲”的道理,對於公司而言,這是篩選人才的一個方式,畢竟人是第一生產力,只要有優秀的人才,那麼造出的航母纔可能“勇往直前,戰無不勝”。對於個人而言,如果公司裏同事優秀的人,那麼你肯定也不會差,我們肯定更希望和優秀的人一起共事。

面試刷題

刷題我從常見Android基礎知識面試題,刷到了Java面試題,繼而攻堅Android高級面試題,以及突破學習Flutter相關熱點技術面試題(不是很難),最後總攻近期大廠面試真題總結。這份面試題精編含答案解析我已經整理到了一份PDF文檔裏,共370頁。下載地址

Android基礎知識

一、 Activity

1、 什麼是Activity?

2、 請描述一下Activity 生命週期

3、 常見的Activity類型有FragmentActivitiy,ListActivity,TabAcitivty等。請描述一下Activity 生命週期

4、 如何保存Activity的狀態?

5、 兩個Activity之間跳轉時必然會執行的是哪幾個方法?

6、 橫豎屏切換時Activity的生命週期

7、 如何將一個Activity設置成窗口的樣式

8、 如何退出Activity?如何安全退出已調用多個Activity的Application?

9、 Activity的四種啓動模式,singletop和singletask區別是什麼?一般書籤的使用模式是singletop,那爲什麼不使用singletask?

10、 Android中的Context, Activity,Appliction有什麼區別?

11、 兩個Activity之間傳遞數據,除了intent,廣播接收者,content provider還有啥?

12、 Context是什麼?

二、 Service

1、 Service是否在main thread中執行, service裏面是否能執行耗時的操作?

2、 Activity怎麼和Service綁定,怎麼在Activity中啓動自己對應的Service?

3、 請描述一下Service的生命週期

4、 什麼是IntentService?有何優點?

5、 說說Activity、Intent、Service是什麼關係

6、 Service和Activity在同一個線程嗎

7、 Service裏面可以彈吐司麼

8、 什麼是Service以及描述下它的生命週期。Service有哪些啓動方法,有什麼區別,怎樣停用Service?

9、 在service的生命週期方法onstartConmand()可不可以執行網絡操作?如何在service中執行網絡操作?

三、 Broadcast Receiver

1、 請描述一下BroadcastReceiver

2、 在manifest和代碼中如何註冊和使用BroadcastReceiver

3、 BroadCastReceiver的生命週期

四、 ContentProvider

1、 請介紹下ContentProvider是如何實現數據共享的

2、 請介紹下Android的數據存儲方式

3、 爲什麼要用ContentProvider?它和sql的實現上有什麼差別?

4、 說說ContentProvider、ContentResolver、ContentObserver之間的關係

五、 ListView

1、 ListView如何提高其效率?

2、 當ListView數據集改變後,如何更新ListView

3、 ListView如何實現分頁加載

4、 ListView可以顯示多種類型的條目嗎

5、 ListView如何定位到指定位置

6、 如何在ScrollView中如何嵌入ListView

7、 ListView中如何優化圖片

8、 ListView中圖片錯位的問題是如何產生的

9、 如何刷新ListView中單個item的數據,不刷新整個ListView的數據?

六、 Intent

1、 Intent傳遞數據時,可以傳遞哪些類型數據?

2、 Serializable和Parcelable的區別

3、 請描述一下Intent 和 IntentFilter

七、 Fragment

1、 Fragment跟Activity之間是如何傳值的

2、 描述一下Fragment的生命週期

3、 Fragment的replace和add方法的區別

4、 Fragment如何實現類似Activity棧的壓棧和出棧效果的?

5、 Fragment在你們項目中的使用

6、 如何切換fragement,不重新實例化

Java面試題

一、 Java基礎

1、 Java中引用類型都有哪些

2、 什麼是重載,什麼是重寫,有什麼區別? )

3、 String、StringBuffer和StringBuilder的區別

4、 關鍵字final和static是怎麼使用的

5、 TCP/IP協議簇分哪幾層?TCP、IP、XMPP、HTTP、分別屬於哪一層?

二、 Java中的設計模式

1、 你所知道的設計模式有哪些

2、 單例設計模式

3、 工廠設計模式

4、 建造者模式(Builder)

5、 適配器設計模式

6、 裝飾模式(Decorator)

7、 策略模式(strategy)

8、 觀察者模式(Observer)

Android 高級

一、 Android性能優化

1、 如何對Android應用進行性能分析

2、 什麼情況下會導致內存泄露

3、 如何避免OOM異常

4、 Android中如何捕獲未捕獲的異常

5、 ANR是什麼?怎樣避免和解決ANR(重要)

6、 Android線程間通信有哪幾種方式(重要)

7、 Devik進程,linux進程,線程的區別

8、 描述一下android的系統架構?

9、 android應用對內存是如何限制的?我們應該如何合理使用內存?

10、 簡述android應用程序結構是哪些?

11、 請解釋下Android程序運行時權限與文件系統權限的區別?

12、 Framework工作方式及原理,Activity是如何生成一個view的,機制是什麼?

13、 多線程間通信和多進程之間通信有什麼不同,分別怎麼實現?

二、 Android屏幕適配

1、 屏幕適配方式都有哪些

2、 屏幕適配的處理技巧都有哪些

三、 AIDL

1、 什麼是AIDL以及如何使用

2、 AIDL的全稱是什麼?如何工作?能處理哪些類型的數據?

四、 Android中的事件處理

1、 Handler機制

2、 事件分發機制

3、 子線程發消息到主線程進行更新UI,除了handler和AsyncTask,還有什麼?

4、 子線程中能不能new handler?爲什麼?

五、 Android中的動畫

1、 Android中的動畫有哪幾類,它們的特點和區別是什麼

2、 如何修改Activity進入和退出動畫

3、 屬性動畫,例如一個button從A移動到B點,B點還是可以響應點擊事件,這個原理是什麼?

六、 ContentObserver 內容觀察者作用及特點

項目框架的使用

一、 自我介紹

二、 開發中都使用過哪些框架、平臺

三、 都使用過哪些自定義控件

四、 自定義控件:繪製圓環的實現過程

五、 自定義控件:摩天輪的實現過程

六、 自定義控件:可拖拽排序的GridLayout的實現過程

七、 流式佈局的實現過程

八、 項目的流程

九、 項目中常見的問題

十、 即時通訊是是怎麼做的?

十一、 設計模式六大原則

十二、 第三方登陸

十三、 第三方支付

十四、 常見框架分析

Flutter相關面試題全解析

Dart部分

1.Dart 語言的特性?

2.Dart的一些重要概念?

3.Dart 當中的 「…」表示什麼意思?

4.Dart 多任務如何並行的?

5.dart是值傳遞還是引用傳遞?

6.Dart 屬於是強類型語言 ,但可以用 var 來聲明變量,Dart 會自推導出數據類型,var 實際上是編譯期的“語法糖”。dynamic 表示動態類型, 被編譯後,實際是一個 object 類型,在編譯期間不進行任何的類型檢查,而是在運行期進行類型檢查。

7.Dart 中 if 等語句只支持 bool 類型,switch 支持 String 類型。

8.Dart 中數組和 List 是一樣的。

9.Dart 中,Runes 代表符號文字 , 是 UTF-32 編碼的字符串, 用於如 Runes input = new Runes(’\u{1f596} \u{1f44d}’);

10.Dart 支持閉包。

11.Dart 中 級聯操作符 可以方便配置邏輯,如下代碼:

12.說一下 Future?

13.說一下 Stream?

14.說一下 mixin?

15.Widget和element和RenderObject之間的關係

16.widget樹的root節點

17.mixin extends implement之間的關係

18.Future和microtask執行順序

19.await for的使用方式

20.賦值操作符

21.可選方法參數

22.作用域

23.構造方法

24.getter setter 重寫

25.Assert(斷言)

26.重寫運算符,如下所示重載 operator 後對類進行 +/- 操作。

Flutter 部分

1.Flutter 是什麼?

2.Flutter 特性有哪些?

3.基礎知識

4.Flutter 中的生命週期

5.PlatformView

6.Platform Channel

7.Android 啓動頁

8.Flutter 和 Dart的關係是什麼?

9.Widget 和 element 和 RenderObject 之間的關係?

10.mixin extends implement 之間的關係?

11.使用mixins的條件是什麼?

12.mixin 怎麼指定異常類型?

13.Flutter main future mirotask 的執行順序?

14.Future和Isolate有什麼區別?

15.Stream 與 Future是什麼關係?

16.Stream 兩種訂閱模式?

17.await for 如何使用?

18.Flutter中的Widget、State、Context 的核心概念?是爲了解決什麼問題?

19.Widget的兩種類型是什麼?

20.State 對象的初始化流程?

21.Widget 唯一標識Key有那幾種?

22.什麼是Navigator? MaterialApp做了什麼?

23.flutter與React Native有什麼不同?

24.爲什麼說flutter是原生的

25.講一下flutter的幾個特點/優缺點

26.什麼是ScopedModel / BLoC模式?

27.什麼是stateWidget和statelessWidget?

28.談一下flutter state的生命週期

29.StatefulWidget 的生命週期

30.Flutter 如何與 Android iOS 通信?

31.什麼是 Widgets、RenderObjects 和 Elements?

32.說一下什麼是狀態管理,爲什麼需要它?

33.說一下 BLoC 模式?

34.如何統一管理錯誤頁面?

騰訊、阿里、百度、美團、字節跳動、京東等)Android高頻面試真題集錦

1.android事件分發機制,請詳細說下整個流程

2.android view繪製機制和加載過程,請詳細說下整個流程

3.android四大組件的加載過程,請詳細介紹下

4.Activity的啓動模式

5.A、B、C、D分別是四種Activity的啓動模式,那麼A->B->C->D->A->B->C->D分別啓動,最後的activity棧是怎麼樣的

6.Activity緩存方法

7.Service的生命週期,兩種啓動方法,有什麼區別

8.怎麼保證service不被殺死

9.靜態的Broadcast 和動態的有什麼區別

10.Intent可以傳遞哪些數據類型

11.Json有什麼優劣勢、解析的原理

12.一個語言的編譯過程

13.動畫有哪幾類,各有什麼特點

14.Handler、Looper消息隊列模型,各部分的作用

15.怎樣退出終止App

16.Android IPC:Binder原理

17.描述一次跨進程通訊

18.android重要術語解釋

19.理解Window和WindowManager#_Toc13399 )

21.如何實現一個網絡框架(參考Volley)

22.ClassLoader的基礎知識

23.插件化框架描述:dynamicLoadApk爲例子

24.熱修復:Andfix爲例子

25.線程同步的問題,常用的線程同步

26.Asynctask和線程池,GC相關(怎麼判斷哪些內存該GC,GC算法)

27.網絡

TCP協議與UDP協議的區別

28.數據庫性能優化:索引和事務,需要找本專門的書大概瞭解一下

29.13.APK打包流程和其內容

30.網絡劫持的類型原理:可以百度一下了解一下具體概念

31.java類加載過程:

32.retrofit的瞭解

33.bundle的數據結構,如何存儲

34.listview內點擊buttom並移動的事件流完整攔截過程:

35.service的意義:不需要界面,在後臺執行的程序

36.android的IPC通信方式,線程(進程間)通信機制有哪些

37.操作系統進程和線程的區別

38.HashMap的實現過程:Capacity就是buckets的數目,Load factor就是buckets填滿程度的最大比例。如果對迭代性能要求很高的話不要把capacity設置過大,也不要把load factor設置過小。

39.mvc、mvp、mvvm:

40.java的線程如何實現

41.ArrayList 如何刪除重複的元素或者指定的元素;

42.如何設計在 UDP 上層保證 UDP 的可靠性傳輸;

43.Java 中內部類爲什麼可以訪問外部類

44.設計移動端的聯繫人存儲與查詢的功能,要求快速搜索聯繫人,可以用到哪些數據結構?數據庫索引,平衡二叉樹(B樹、紅黑樹)

45.紅黑樹特點

46.linux異步和同步i/o:

47.ConcurrentHashMap內部實現,HashTable的實現被廢棄的原因:

48.HandlerThread是什麼

49.IntentService是什麼

50.class和dex

51.內存泄漏

52.過度繪製、卡頓優化:

53.apk瘦身:

54.ANR的形成,各個組件上出現ARN的時間限制是多少

55.Serializable和Parcelable 的區別

56.Sharedpreferences源碼簡述

57.操作系統如何管理內存的:

58.瀏覽器輸入地址到返回結果發生了什麼

59.java泛型類型擦除發生在什麼時候,通配符有什麼需要注意的。

60.activity的生命週期

61.面試常考的算法

62.Launcher進程啓動另外一個進程的過程:啓動一個app

63.開源框架源碼

2019Android面試大全精編解析PDF

2019Android面試大全精編解析PDF:下載地址

簡歷

簡歷的重要性就不言而喻了,怎麼樣寫好簡歷是個技術活,當然如果你有很好的背景(學校或者公司),那麼不管你怎麼寫,基本上都不刷掉你,我們作爲一般的人還是需要下一番功夫的。拿我的簡歷作爲例子,大概有以下幾個部分:

  1. 個人信息:姓名、出生日期、教育背景、博客地址、github地址、聯繫方式(手機、郵箱和微信號)

  2. 工作經歷:畢業後待過哪些公司,一般是倒序,項目儘量精簡明瞭,可以參考SMART原則

  3. 專業技能:自己熟悉的一些技能,這個爲什麼我寫到最後,因爲對於工作三年的同學來說,面試官更加註重的是你的項目經歷,大部分面試都是看你的項目經歷來提問。

怎樣寫簡歷,這個開源網站不錯,教你怎麼寫簡歷,而且有一個在線markdown在線網站,可以導出pdf。

簡歷投遞注意事項

一般HR都會集中處理簡歷,正序或者倒序都有可能,所以選擇最合適的時間段去投遞就好。

總體上來說,比較推薦的時間段就是週二至週四,上午9點以後。

除了投遞時間之外,還有一些注意事項可以提高你的簡歷被閱讀率:

1.儘量選擇HR郵箱直投:不論是哪個招聘網站,整體的回覆速度都要低於HR直投郵箱,大部分HR打開自己郵箱的頻率也要高於其他招聘類網站。

2.郵箱實名:最好將發件人改爲自己的名字,可以讓HR一眼就看到,而不是亂七八糟的其他內容,不僅看起來更加整潔,也可以增加印象。

3.郵件名稱固定格式:如果企業方有要求,要嚴格按照企業方的要求來,如果沒有,應屆生建議“姓名+學校+專業+應聘崗位+最快到崗時間(尤其是標註儘快到崗)”,言簡意賅。

4.正文不要空着,記得添加附件.pdf:有些HR習慣下載一段時間內的所有簡歷附件,然後一起查看,如果你沒有附件會直接被忽略,pdf是爲了避免簡歷跑版的重要措施;也有些HR更傾向於一封郵件一封郵件地查看,這時正文如果有內容就會更加直接,正文和附件都有,雙重保障。

不要認爲一些小細節不重要~投遞簡歷的很多小細節會決定第一印象的,看到一封簡潔、信息明確的郵件,HR第一反應都會是“WOW,這個不錯/還行,讓我看看”

最後

感謝大家能耐着性子,看完我囉哩囉嗦的面經前的準備過程,以上僅是個人的觀點。感覺三年稍縱即逝,在這三年的時間裏,青春易逝,歲月蹉跎。但好在及時反省,果斷離職。在這面試準備過程和學習又溫故而知新成長了很多,最後感謝阿里、騰訊、今日頭條面試官等所有幫助過我的人。

發佈了420 篇原創文章 · 獲贊 718 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章