北漂七年Java開發的一路辛酸史:面試騰訊、阿里、美團、字節後的一點心得

前言

我覺得有一個能夠找一份大廠的 offer的想法,這是很正常的,這並不是我們的飯後談資而是每個技術人的追求。像阿里、騰訊、美團、字節跳動、京東等等的技術氛圍與技術規範度還是要明顯優於一些創業型公司 / 小公司,如果說能夠在這樣的公司鍛鍊幾年,相信對自己能力的提升還是非常大的。不論是校招還是社招都避免不了各種面試、筆試,如何去準備這些東西就顯得格外重要。不論是筆試還是面試都是有章可循的。

因爲大廠面試一般都有專業團隊負責,某個知識點你到底是掌握了還是單純背下來,面試官一問就可以看出來(PS:真正到面試特別是你覺得準備面試的時間不夠的時候,你可以多挑一些面試常問的問題來看,注意理解,一定不要死記硬背)。一定不要過分寄希望於各種面經,試着去提高自己的綜合能力。

“ 80% 的 offer 掌握在 20% 的人手 ” 中這句話也不是不無道理的。決定你面試能否成功的因素中實力固然佔有很大一部分比例,但是如果你的心態或者說運氣不好的話,依然無法拿到滿意的 offer。運氣暫且不談,就拿心態來說,千萬不要因爲面試失敗而氣餒或者說懷疑自己的能力,面試失敗之後多總結一下失敗的原因,後面你就會發現自己會越來越強大。

從大廠實際招聘要求來看到底青睞什麼樣的人?

首先要明確的一點是:985/211 的學歷的確會爲你加分很多。

另外,再強調的一點是不要天天把自己的學校是雙非學校這個接口當做你無法進入大廠的原因。只要你的能力足夠,大廠的大門就會爲你打開。也有着很多雙非學校甚至是三本的同學就拿到像阿里、騰訊這樣的大公司的 offer。

從阿里、騰訊等大廠招聘官網對於 Java 後端方向/後端方向的要求,我們大概可以總結看出大廠對招聘者的能力要求。

下面以阿里巴巴爲例子,看看大廠的實際要求

七年Java開發的一路辛酸史:分享面試京東、阿里、美團後的心得

點擊即可免費獲取高薪面試合集、1000道工程師面試寶典

在面試 Java 工程師的時候,下面幾點也提升你的個人競爭力:

熟悉開源框架的底層,閱讀源碼;

大型數據庫系統經驗;

熟悉分佈式,緩存,消息中間件;

良好的表達和溝通能力, 善於學習, 關注前沿。

“ 一定要有一門自己的特長,不管是技術還好還是其他能力 ” 。我覺得這句話真的非常有道理,大家可以仔細思考一下。在這裏再強調一點:公司不需要你什麼都會,但是在某一方面你一定要有過於常人的優點。換言之就是我們不需要去掌握每一門技術(你也沒精力去掌握這麼多技術),而是需要去深入研究某一門技術,對於其他技術我們可以簡單瞭解一下。

我覺得比起你對每一門技術都是淺嘗輒止,深入喫透某一門技術對你的個人競爭力提升才更有幫助。

如何獲取大廠面試機會?

在講如何獲取大廠面試機會之前,先來對比一下兩個非常常見的概念——春招和秋招。

招聘人數:秋招多於春招 ;

招聘時間: 秋招一般 7 月左右開始,大概一直持續到 10 月底。但是大廠(如 BAT)都會早開始早結束,所以一定要把握好時間。春招最佳時間爲 3 月,次佳時間爲 4 月,進入 5 月基本就不會再有春招了(金三銀四)。

應聘難度:秋招略大於春招;

招聘公司:秋招數量多,而春招數量較少,一般爲秋招的補充。

綜上,一般來說,秋招的含金量明顯是高於春招的。

下面我就說一下我自己知道的一些方法,不過應該也涵蓋了大部分獲取面試機會的方法。

關注大廠官網,隨時投遞簡歷(走流程的網申);

找到師兄師姐或者認識的前公司的技術牛人,幫忙內推(能夠讓你避開網申簡歷篩選,筆試篩選,還是挺不錯的,不過也還是需要你的簡歷夠棒);

求職類網站投遞簡歷(不是太推薦)。

除了這些方法,我也遇到過這樣的經歷:有些大公司的一些部門可能暫時沒招夠人,然後如果你的親戚或者朋友剛好在這個公司,而你正好又在尋求 offer,那麼面試機會基本上是有了,而且這種面試的難度好像一般還普遍比其他正規面試低很多。

想要取得一份自己滿意的 offer,前提是自己要有過硬的實力作爲資本,下面就如何提高個人硬實力給大家提幾點建議!

如何提高個人硬實力及大廠 Java 後端面試主要問些什麼??

我在這裏所說的個人硬實力更多的指的是個人的專業能力,比如構建高質量網站的能力或者是對專業知識的掌握程度。

我覺得不論是對於新手還是老手,想要提高個人硬實力最重要的就是不斷深入學習並且將理論實踐,最好可以將理論在具體項目中實踐一下。

想要提高個人硬實力,那麼學習一門新技術的方法一定是至關重要了。下面分享一下《 Java 工程師修煉之道》一書對於學習一門新技術的一些要點(在這以圖片的方式整理了出來,更加方便閱讀):

七年Java開發的一路辛酸史:分享面試京東、阿里、美團後的心得

 

一定要有自己的技術優勢,可能你懂得不是最多的,但是別人不會的你卻會,那麼你就是厲害的!然而如何準備大廠面試?我覺得最關鍵的一點之一就是搞清楚大廠面試主要在問些什麼。下面我將分解每一個知識點,給大家簡單說一下大廠面試主要會問些什麼?

首先你要明確的是面試官所問的內容一定和你簡歷所寫的東西是緊密聯繫的,一般你沒有記錄簡歷上的技能,面試管很少會去提問。

大廠面試大體上包括下面幾方面知識類型:

Java 基礎、多線程、IO 與 NIO、虛擬機、設計模式

面試官在多線程這一部分很可能會問你有沒有在項目中實際使用多線程的經歷。所以,如果你在你的項目中有實際使用 Java 多線程的經歷 的話,會爲你加分不少哦!

面試題

由於篇幅原因,答案在這就不做全部展示了,這些題我已經整理成pdf文檔免費分享給那些有需要的朋友,同時整理也花費了蠻多時間點擊即可免費獲取高薪面試合集、1000道工程師面試寶典

 

Java225道面試專題

  1. 面向對象編程(OOP )
  2. 常見的Java問題
  3. Java戰程
  4. Java集合類
  5. 垃圾收集器
  6. Java支持的數據類型有哪些?什麼是自動拆裝箱?
  7. Java中,什麼是構造函數?什麼是構造函數重載?什麼是複製構造函數?
  8. 什麼是值傳遞和引用傳遞?
  9. 進程和線程區別是什麼?
  10. 什麼是死鎖(deadlock)?

Netty12道面試專題

  1. BIO、NIO和AIO的區別?
  2. NIO的組成?
  3. Netty的特點?
  4. TCP粘包/拆包的原因及解決方法?
  5. 瞭解哪幾種序列化協議?
  6. Netty的零拷貝實現?
  7. 瞭解哪幾種序列化協議?
  8. 如何選擇序列化協議?

Spring25道面試專題

  1. 什麼是Spring框架? Spring 框架有哪些主要模塊?
  2. 使用Spring框架能帶來哪些好處?
  3. 什麼是控制反轉(IOC)?什麼是依賴注入?
  4. 請解釋下Spring框架中的IoC?
  5. BeanFactory和ApplicationContext有什麼區別?
  6. 如何用基於XML配置的方式配置Spring?
  7. Spring有幾種配置方式?
  8. 如何用基於Java配置的方式配t Spring?
  9. Spring Bean的作用域之間有什麼區別?
  10. 什麼是Spring inner beans?
  11. 請舉例說明如何在Spring中注入一個Java Collection?

設計模式面試專題

  • 1.請列舉出在 JDK 中幾個常用的設計模式?
  • 2.什麼是設計模式?你是否在你的代碼裏面使用過任何設計模式?
  • 3.Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式
  • 4.在 Java 中,什麼叫觀察者設計模式(observer design pattern)?
  • 5.使用工廠模式最主要的好處是什麼?在哪裏使用?
  • 6.舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是作用於對象層次還是類
  • 層次?
  • 7.在 Java 中,爲什麼不允許從靜態方法中訪問非靜態變量?
  • 8.設計一個 ATM 機,請說出你的設計思路?
  • 9.在 Java 中,什麼時候用重載,什麼時候用重寫?
  • 10.舉例說明什麼情況下會更傾向於使用抽象類而不是接口

Redis面試專題

  1. 什麼是redis?
  2. Reids的特點
  3. Redis支持的數據類型
  4. Redis是單進程單線程的
  5. 虛擬內存
  6. Redis鎖
  7. 讀寫分離模型
  8. redis相比memcached有哪些優勢?4
  9. redis常見性能問題和解決方案
  10. MySQL裏有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據245
  11. Memcache與Redis的區別都有哪些?
  12. Redis 常見的性能問題都有哪些?如何解決?
  13. Redis 最適合的場景

多線程面試專題

  1. 1)現在有T1、T2、T3三個線程,你怎樣保證T2在T1執行完後執行,T3在T2執行完後執行?
  2. 2)在Java中Lock接口比synchronized塊的優勢是什麼?你需要實現一一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現它?
  3. 3)在java中wait和sleep方法的不同?
  4. 4)用Java實現阻塞隊列。
  5. 5)用Java寫代碼來解決生產者—消費者問題。
  6. 6)用Java編程一個會導致死鎖的程序,你將怎麼解決?
  7. 7)什麼是原子操作,Java 中的原子操作是什麼?
  8. 8)什麼是競爭條件?你怎樣發現和解決競爭?
  9. 9)爲什麼我們調用start()方法時會執行run()方法,爲什麼我們不能直接調用run()方法?
  10. 10) Java中你怎樣喚醒-一個阻塞的線程?
  11. 11)什麼是不可變對象,它對寫併發應用有什麼幫助?
  12. 12)在Java中CydiBarriar和CountdownLatch有什麼區別?
  13. 點擊即可免費獲取高薪面試合集、1000道工程師面試寶典

JVM與調優21題

  1. Java 類加載過程?
  2. 描述一下 JVM 加載 Class 文件的原理機制?
  3. Java 內存分配。
  4. GC 是什麼? 爲什麼要有 GC?
  5. 簡述 Java 垃圾回收機制
  6. 如何判斷一個對象是否存活?(或者 GC 對象的判定方法)
  7. 垃圾回收的優點和原理。並考慮 2 種回收機制
  8. 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收?
  9. Java 中會存在內存泄漏嗎,請簡單描述
  10. 深拷貝和淺拷貝。
  11. System.gc() 和 Runtime.gc() 會做什麼事情?
  12. finalize() 方法什麼時候被調用?析構函數 (finalization) 的目的是什麼?
  13. 如果對象的引用被置爲 null,垃圾收集器是否會立即釋放對象佔用的內存?
  14. 什麼是分佈式垃圾回收(DGC)?它是如何工作的?
  15. 串行(serial)收集器和吞吐量(throughput)收集器的區別是什麼?
  16. 在 Java 中,對象什麼時候可以被垃圾回收?
  17. 簡述 Java 內存分配與回收策略以及 Minor GC 和 Major GC。
  18. JVM 的永久代中會發生垃圾回收麼?
  19. Java 中垃圾收集的方法有哪些?
  20. 什麼是類加載器,類加載器有哪些?
  21. 類加載器雙親委派模型機制?

MySQL性能優化21個最佳實踐

  1. 1.爲查詢緩存優化你的查詢
  2. 2. EXPLAIN 你的SELECT查詢
  3. 3.當只要一-行數據時使用LIMIT 1
  4. 4.爲搜索字段建索引
  5. 5.在Join表的時候使用相當類型的例,並將其索引
  6. 6. 千萬不要ORDER BY RAND()
  7. 7.避免SELECT *
  8. 8.永遠爲每張表設置一個ID
  9. 9.使用ENUM而不是VARCHAR
  10. 10.從PROCEDURE ANALYSE() 取得建議
  11. 11.儘可能的使用NOT NULL
  12. 12.Prepared Statements
  13. 13.無緩衝的查詢

由於篇幅原因,答案在這就不做全部展示了,這些題我已經整理成pdf文檔免費分享給那些有需要的朋友,同時整理也花費了蠻多時間點擊即可免費獲取高薪面試合集、1000道工程師面試寶典

 

點擊即可免費獲取高薪面試合集、1000道工程師面試寶典 

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