天天看點

三年開發經驗,從小廠離職後,我憑什麼拿到了阿裡、騰訊、今日頭條的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.開源架構源碼

三年開發經驗,從小廠離職後,我憑什麼拿到了阿裡、騰訊、今日頭條的offer我為什麼離職準備面試刷題履歷

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,這個不錯/還行,讓我看看”

最後

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

繼續閱讀