三年開發經驗,從小廠離職后,我憑什么拿到了阿里、騰訊、今日頭條的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,這個不錯/還行,讓我看看”

最后

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM