一.學歷對程序員重要嗎?
總結: 學歷不光是對程序員這個職業,對很多職業來說,他都是敲門磚,尤其是剛出社會的那幾年。在2014年以前,那時候程序員找工作是非常簡單的,會點js+html+java都能找到工作,對學歷更是沒啥要求,但是現在對學歷的要求越來越高了,尤其是一些BAT的大廠,都慢慢把門檻提高到研究生了,所以說學歷對程序員還是很重要的!
二、我的BATJ面試經歷
一、字節跳動
- 講講面向過程、面向對象、面向切面。
- 指針和數組的關係和區別。
- 講講Android handler。
- 隊列和棧的區別和用途。
- 兩個棧實現隊列。
- 輸入Url到瀏覽器顯示過程。
- http請求方法。
- get和post區別。
- surficeView和view的區別。
- app從點擊圖標開始的啓動全過程。
- 什麼是線程安全。
- 線程安全有哪些機制。
- 如何保證 int加加(加號打不出來)線程安全。
- Android線程間通信有哪些機制。
- cpu調度方式有哪些。
- 空間局部性和時間局部性。
- 數據庫樂觀鎖和悲觀鎖。
- 數據庫索引作用,優缺點。
- TCP擁塞控制。
-
https加密傳輸過程。
二、百度
- 二分查找的時間複雜度,對數據有什麼要求?
- 你對數據結構這門課是怎麼理解的?
- HTTPS,CA
- FTP協議
- 瀏覽器輸入網址到頁面顯示的過程
- TCP的包裝結構
- 7層網絡模型
- 信息儲存的方式,應用場景
- 進程間通信的方式,aidl
- Bundler原理
- Handler機制
- HandlerThread,IntentService,AsyncTask
- 點擊事件分發機制
- 滑動衝突解決
- 廣播註冊方式,區別
- 有序無序廣播,本地廣播
- 服務的啓動方式,區別,用途
- 數據提供者怎麼用?原理?
- 佈局是怎樣加載的?有哪些方式
三、阿里
數據庫的三範式設計原則 , 索引怎麼設計有什麼影響
計算機系統內核態和用戶態
Java基礎:final,finally和finalize有什麼區別
抽象類和接口的區別以及使用場景
java內存模型
String,StringBuilder,和StringBuffer的區別
HashMap實現源碼,以及線程安全的Map
線程狀態以及線程通信,線程鎖
怎麼保證線程安全
synchronized的監視器應該怎麼設置
volatile關鍵字會做什麼
android相關:
activity的生命週期分析(比如按下關機鍵會發生什麼)
activity啓動模式。每一種的應用場景
Service的兩種啓動方式,比較不同點
Binder的原理,爲什麼是內存拷貝一次,還知道哪些IPC方式
四、字節跳動
- JVM GC:標記算法、回收算法、垃圾收集器 走一套
- ThreadLocal實現原理,map中的key value是什麼
- static塊中能否調用實例方法
- concurrenthashmap中是如何實現線程安全的,concurrenthashmap讀的時候不加鎖,那如何保證讀的一致性 (Node數組用volatile修飾)
- HashMap外部加鎖 與 使用concurrenthashmap時兩者效率相比如何 (全表加鎖 vs bucket加鎖)
- NIO中buffer中在傳輸文件時如何工作
- P父類有兩個子類A B,A先加載了D.class,B再加載D.class,加載完成後的class D是同一個class嗎(可能是這個意思,問題我都沒聽明白)
- 如何創建一個註解
- Executors中四個生成線程的實現類有什麼特點,適用於什麼場景
- 一個方法中有A a = new A();這麼一條語句,方法執行完後A的實例化對象在GC時能否被回收掉
- finalize相關,調用finalize一定會將對象銷燬嗎?finalize一定會僅執行一次嗎?
- synchronized中鎖的幾種狀態
- 泛型的實現原理
手寫代碼(運氣好,問的不難,幾個都快速寫出來了):
- 幾種單例模式,區別
- 生產者消費者模型
- 二叉樹中序遍歷
經驗總結
個人經驗,這個要看你的就業目標是什麼,一些企業,如果沒有人不要好高騖遠。
1 、中小型私企。 這類企業對於學歷基本不看重,更多的是看你自己一個人能同時做多少人的事情,即你知識面的廣度,因此,你不僅要會後端,還有會前端、界面設計、數據庫、部署、硬件等一系列的技術,不需要每種技術學的很深,但是一定要一個人就能撐起一個項目的所有工作。面試時會更關注你都做過什麼,是不是自己做的,因爲當你進入企業後才發現,整個開發部門只有你一個人。。。
2 、互聯網企業。 這類企業對學歷的考量只佔一小部分,更多的是看中個人能力,尤其是在某一個領域的深度,恰好和上一個相反。在面試時,着重考察你的算法能力、思考能力和配合能力,往往會出一些具體的事例讓你給出解決方案。一旦你進入這類企業後,你會就某一個點進行深入。當然,如果你的學校足夠好,你會發現面試你的是你的師兄,你的領導是你的師兄,你的領導的領導也是你的師兄。
3 、傳統大型軟件企業。 這類企業對於應屆畢業生的學歷是非常重要的評估環節,如果你的學歷不夠或者學校不好,非常大的可能是簡歷篩選這關就不能過,即便你的項目經驗和個人能力超強。當然,如果你在其它企業已經有過多年的經驗,你還是有很大可能通過簡歷篩選的。
44 、涉及部分軟件開發的其它行業大型企業。 學歷是這類企業衡量能力的唯一標準,因爲他們的 HR 不知道除了學歷還怎麼能衡量你。
說了很多,對於學校不好的學生而言,這些年其實互聯網行業已經寬容了很多,最起碼會給一個機會,想起 10 年前的我,剛從本科學校畢業的時候,沒有經驗什麼企業都不會要的悲慘。。。
但是,個人的奮鬥和機遇是你成功的重要條件。
源碼精編解析(部分展示)
自行領取直達鏈接:【點擊獲取】
需要相關知識點可以查看我的【GitHub】,對於已經掌握的可以忽略以節省時間。