前言
咱們這行似乎每個人都有個常識:程序員做到35歲之后,職業道路就很窄了,但我不信這個邪,我今年37歲,依然活躍在開發一線,并且做到了月入四萬+。
偶爾也有人問,你是怎么打破35歲定律的?對于這個問題我從沒正面回答過,直到今年年初。
今年疫情期間,與同行好友的一席聊天,讓我足足思考了兩天:回想起來其實自己之前也走過不少彎路,但比起大多數同行,自己最大的幸運,是堅持走完3條路之后,最終找準了自己最適合的那一條。
對職業規劃有困惑的朋友,可以聽我慢慢說來。
一.字節跳動
-
講講面向過程、面向對象、面向切面。
-
指針和數組的關系和區別。
-
講講Android handler。
-
隊列和棧的區別和用途。
-
兩個棧實現隊列。
-
輸入Url到瀏覽器顯示過程。
-
http請求方法。
-
get和post區別。
-
surficeView和view的區別。
-
app從點擊圖標開始的啟動全過程。
-
什么是線程安全。
-
線程安全有哪些機制。
-
如何保證 int加加(加號打不出來)線程安全。
-
Android線程間通信有哪些機制。
-
cpu調度方式有哪些。
-
空間局部性和時間局部性。
-
數據庫樂觀鎖和悲觀鎖。
-
數據庫索引作用,優缺點。
-
TCP擁塞控制。
-
https加密傳輸過程。
-
java內存模型。
-
java垃圾回收算法有哪些。
-
講講標記清除算法。
-
java四中引用。
-
談談線程池原理
二.百度
- jvm內存模型,類里面各種數據都存在哪個區域
- 類加載機制,過程,雙親委派
- 類的結構, 對象頭
- gc算法和回收器
- OOM
- 怎么防止內存泄露
- volatile,synchronized,讀寫鎖,可重入鎖,互斥鎖,自旋鎖
- ThreadLocal
- wait,notify,notifyall
- 操作系統中虛擬內存是怎么實現的?
- 用socket實現一個TCP連接
- 樹的遍歷方式
- 深度優先遍歷的幾種方式
- 用棧實現先序遍歷
- 二分查找的時間復雜度,對數據有什么要求?
- 你對數據結構這門課是怎么理解的?
- HTTPS,CA
- FTP協議
- 瀏覽器輸入網址到頁面顯示的過程
- TCP的包裝結構
- 7層網絡模型
- 信息儲存的方式,應用場景
- 進程間通信的方式,aidl
- Bundler原理
- Handler機制
- HandlerThread,IntentService,AsyncTask
- 點擊事件分發機制
- 滑動沖突解決
- 廣播注冊方式,區別
- 有序無序廣播,本地廣播
- 服務的啟動方式,區別,用途
- 數據提供者怎么用?原理?
- 布局是怎樣加載的?有哪些方式
- 繪制優化方式
- 看過哪些第三方庫的源碼?
####三.其他 - 算法相關面試
- 屏幕適配
- 自定義View
- 事件傳遞機制的認識
- Opengl
- OpenCV
寫在最后
最后我想說:對于程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!
這里附上上述的技術體系圖相關的幾十套騰訊、頭條、阿里、美團等公司2021年的面試題,把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節,由于篇幅有限,這里以圖片的形式給大家展示一部分。
相信它會給大家帶來很多收獲:
上述【高清技術腦圖】以及【配套的架構技術PDF】可以點擊下面鏈接免費獲取
Android學習PDF+架構視頻+面試文檔+源碼筆記
666)]
上述【高清技術腦圖】以及【配套的架構技術PDF】可以點擊下面鏈接免費獲取
Android學習PDF+架構視頻+面試文檔+源碼筆記
當程序員容易,當一個優秀的程序員是需要不斷學習的,從初級程序員到高級程序員,從初級架構師到資深架構師,或者走向管理,從技術經理到技術總監,每個階段都需要掌握不同的能力。早早確定自己的職業方向,才能在工作和能力提升中甩開同齡人。