沒有學歷的程序員上限很低嗎?面試評分最高的我,因爲學歷止步大廠...

一.學歷對程序員重要嗎?

總結: 學歷不光是對程序員這個職業,對很多職業來說,他都是敲門磚,尤其是剛出社會的那幾年。在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
  • 點擊事件分發機制
  • 滑動衝突解決
  • 廣播註冊方式,區別
  • 有序無序廣播,本地廣播
  • 服務的啓動方式,區別,用途
  • 數據提供者怎麼用?原理?
  • 佈局是怎樣加載的?有哪些方式

三、阿里

  • 介紹你自己的項目,後面大部分問題都會按着你的項目

  • 計算機網絡HTTP協議

  • 爲什麼是三次握手,四次揮手而不是兩次,三次

  • TCP長連接,短連接區別

  • Socket的長連接你是怎麼做的

  • 數據庫的三範式設計原則 , 索引怎麼設計有什麼影響

  • 計算機系統內核態和用戶態

  • Java基礎:final,finally和finalize有什麼區別

  • 抽象類和接口的區別以及使用場景

  • java內存模型

  • String,StringBuilder,和StringBuffer的區別

  • HashMap實現源碼,以及線程安全的Map

  • 線程狀態以及線程通信,線程鎖

  • 怎麼保證線程安全

  • synchronized的監視器應該怎麼設置

  • volatile關鍵字會做什麼

android相關:

  • activity的生命週期分析(比如按下關機鍵會發生什麼)

  • activity啓動模式。每一種的應用場景

  • Service的兩種啓動方式,比較不同點

  • Binder的原理,爲什麼是內存拷貝一次,還知道哪些IPC方式

  • 讀過哪些源碼,Handler源碼說一下

四、字節跳動

  • 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】,對於已經掌握的可以忽略以節省時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章