JAVA秋招學習資源


主要分為“基礎+戰略+心態”三方面做講解把,菜鳥的一點分享,望大佬們不要笑我。
有啥錯誤或者需要改進建議的地方可以留言,我會進行斟酌修改,謝謝大佬們
另外分享一位巨佬的心得,希望能幫到大家:
https://wenbochang.cnblogs.com/p/10317715.html?from=timeline&isappinstalled=0

一、基礎

要肝大廠,需要有針對性地准備大廠面試會問到的知識,個人感覺需要的基礎主要包括下面幾個方面:

先講一本書,內推軍的《研發類面試真題及其解析》,這本書很叼,我后面也會說到這本書,不是打廣告,建議買一本。

  1. 數據庫
    個人只用過Mysql 和 Redis,所以只推薦這兩種數據庫需要看的書單跟資源
    Mysql:

    《高性能Mysql》這本書圖書館就能找得到,不需要全部看懂,只需要挑一些重要的,個人感覺里面必看的有 優化器、索引優化、復制原理、關於數據大小的介紹、引擎,緩存(我也忘得差不多了,可能講的不對)。

    視頻資料可以找尚硅谷的《mysql高級》,這套視頻可以學習 mysql索引優化 的知識,這也是面試常問的,必看,視頻有個特點是,容易理解但是耗時長,我是挑了2天晚上通宵時間看完的這套視頻,因為真的沒啥時間

    Redis:

    《Redis設計與實現》

    《Redis開發與運維》

    這兩本書都很經典,特別經典,吃透吧。《Redis設計與實現》里面講了Redis的數據結構的實現、AOF、RDB、復制功能、Sentinel主從復制、集群實現原理,都已經剖析得很清楚了,拿着應付面試完全夠了,不夠這本書比較難啃,我是把書撕成一章一章,再用訂書機釘起來,慢慢啃的。

    說一下面試被問過的幾道題,只能說這本書很強了,可以帶着這些問題啃這本書。

    (1)Redis跳表的實現
    (2)AOF、RDB的實現,優缺點對比
    (3)為什么Redis要使用單線程模型(去看本書的文件時間模型跟時間事件模型)
    (4)如何構建一個高可用穩定性高的存儲系統(直接本書把Sentinel主從復制那套吹一下)
    (5)主從復制是怎么實現的,里面又有

    研發類面試真題及其解析

    這本書有講Mysql的面經題,個人感覺很全了,可以看完

    一個博客

    程序員江湖,這老哥也很牛逼,他的總結也挺好的,他寫的關於Mysql和Redis的總結傳送門:

    https://blog.csdn.net/a724888/column/info/21877

  2. Java基礎(最重要)

    (1)JVM

    ​ JVM推薦周志明的《深入理解Java虛擬機 JVM高級特性與最佳實踐》
    ​ 另外,個人之前最怕的一個面試題:如果遇到OOM問題怎么辦,現在我知道怎么回答這個問題了,你們可以去看慕課網一套課程《Java生產環境下性能監控與調優詳解》,只能說很牛逼,講了如何發現問題,處理問題。獲取方式:可以去吾愛破解網、CSDN花積分下,網上完全可以輕松找到免費資源,不過有錢人還是支持正版吧~~嘻嘻。

    (2)集合

    很重要,優先復習

    ​ 看博客、看源碼、看面經

    (3)多線程與JUC

    ​ 推薦兩本書跟一套視頻
    ​ 書:《Java並發編程藝術》《java多線程核心技術》,這兩本書很牛逼,特別是《Java並發編程藝術》,看10遍都不嫌多,反正我看了7、8遍了。
    ​ 視頻:尚硅谷的《juc》,同樣,這套視頻,我花了兩個晚上的時間看完的。

    一邊穿插着看《研發類面試真題及其解析》。

  3. 框架

    SpringBoot就很重要了,有時間的話,可以把源碼看一下,推薦一本書

    赫佳的《Spring源碼深度解析》,這本書很強,直接貼上源碼講Spring實現,不過有時間再看,我曾經暑假花了本個月啃到想死,才啃完了IOC跟AOP,而且老是忘。

    隨便說說:

    Ioc:控制反轉怎么生成Bean的過程,Bean的生命周期,依賴注入是怎么注入的,依賴注入怎么解決循環依賴問題,ioc里面的單例跟原型分別怎么實現的,很多東西,可以帶着這些我說的這些問題看。

    Aop: 首先了解JDK動態代理和CGLIB代理實現, 其實你如果看了IOC的話再看AOP會發現不會那么吃力了,IOC是最難看懂的,AOP就是到最后生成一個代理對象,代理對象的方法執行的時候會先執行攔截器方法,看懂覺得好神奇啊

    springmvc: 這個我了解不多,看了忘了,吹不動。沒法大概點一下~

    事務: 原理跟Aop類似,他的實現機制主要也是利用攔截器,判斷有沒有拋RuntimeException,有的話回滾,回滾操作主要用了數據源的回滾以及標記,而數據源的標記及回滾也是底層用了JDBC的標記跟回滾,其實很簡單,剖析完覺得很明朗很舒服。

    數據源:可以簡單理解成封裝了JDBC操作把,阿里巴巴的數據源還加了監控操作,有空再研究

    上面這本書,只挑你們想看的看就行,千萬不要整本從頭看到尾,很耗費時間,而且看到想死。

    之后再看一套視頻:尚硅谷的《spring注解驅動開發》,這套視頻建議看完書之后拿來補充復習,很有用。

  4. 算法

    先推薦一下一套視頻,免得你們略過了,牛客網左神的一套算法視頻《直通BAT算法精講》直接csdn上就能下載到。重點看里面排序算法的實現,里面講了排序算法最好的寫法,比你自己去網上看博客好一千萬倍,相信我。

    個人算法真的軟肋,不過我也花了很多功夫,說一下個人的經歷吧,不過不一定好,當參考吧,我是真菜雞,算法真不行。個人的路線中沒刷過leetcode,因為沒時間,別人說leetcode里面的題目很高頻,確實好,不過我沒時間啊,所以我覺得更好的方法就是刷往年的筆試真題

    推薦書籍《劍指offer》

    (1)一開始我一道題都不會做,很尷尬,找了一本書《劍指offer》,記得我花了2周多刷了第一遍,很粗略地看完了,真沒時間。記得那陣子每天從8點起床刷到晚上12點睡覺,這種狀態持續了2周多,經常跑到班里大白大佬宿舍常駐,問問題。感謝大佬的有耐心孜孜不倦地照顧我這個弟弟。

    (2)之后就嘗試敲了一些題,在牛客網上AC了它們,牛客網劍指offer傳送門

    https://www.nowcoder.com/ta/coding-interviews
    不過這階段很粗略把。

    (3)之后刷往年的筆試真題,牛客網上有的,傳送門:https://www.nowcoder.com/activity/oj 自己找吧。這段時間我還看了牛客網左神的一套算法視頻《直通BAT算法精講》,里面也講了很多《劍指offer》的題目

    (4)后來我發現劍指offer的題目忘記了,那時候大概10月份了把,因為面試的算法題需要的是最優解,而劍指offer突然就適合這個需求了,而且面試也很喜歡從里面挑題目,我花了一周的時間,把里面所有的題目都看了一遍,基本都敲了代碼實現了。

    (5) 這個時候主要是面試環節了,面試的算法題不會很難,不過要最優解,最好的方法:
    你去網上找一大堆面經,把里面的算法題整理一波,全放一起,一波帶走,然后有空拿出來復習~~這個方法是最有用的。

    心得:

    個人感覺對像我這樣子的零基礎的算法菜雞來說,我只能做到這樣的,真的很需要時間的,而且做題也很耗費時間,有時候一整天做不出一道題目,所以你要自己把握好時間,我之前是找個大佬的,一直問他問題,一道題絕對不能耗費太長時間。

    我之前就是這么做的,我不是推薦大家也這么做,只是講一下我的策略,僅供參考把。
    沒辦法,我算法菜只能這樣速成了,我算法現在還是很菜,也打算現在加強,現在也慢慢在看在學。

  5. 計算機網絡、操作系統、linux

    (1)直接看《研發類面試真題及其解析》、

    (2)學校教學的教材、

    (3)百度搜一下一些大佬的總結,很多人寫過知識點總結,自己百度發掘一下

    (4)linux 肯定要會操作指令,如果更深入就好了,如果沒時間,就去面經搜一波基本的操作指令背下來,有空用一用,推薦《鳥哥的linux私房菜》,不過等有時間再慢慢看把~~

    這方面個人研究也不深,沒啥心得,個人的學習路線如下:

    linux方面我屬於會操作指令,面試也不看面經,靠平常實操瞎吹的。

    計網我是看《研發類面試真題及其解析》加面經,再次強調《研發類面試真題及其解析》很牛逼,他里面說到的計網的知識你全部都要會,然后再去看面經,面經點到的知識點復習一下就差不多ok了。

    操作系統我是看了面經吧,根據面經決定學什么,根據面經去翻書。

二、現階段戰略與打法

​ 如果你現在大三,建議馬上找個實習把,6月份之前找到,然后干到8月中旬,干2個半月至少,看自己的情況,如果覺得公司能學到很多東西,就留下繼續干。如果覺得公司日常只是寫crud對你秋招沒什么幫助,就先辭職回校,專心復習秋招~

​ 我當初是第二種做法,因為覺得再呆下去學不到東西,還是補基礎更重要點。我也見過一個大佬,他是現在在一家大廠實習1個多月了,春招拿了另外一個大廠offer,暑假過去實習,這種大神就真的牛逼,我說的辭職就不推薦了,畢竟大廠實際工作學的肯定吊打我們自習的,看個人情況自己選擇。

    沒實習經驗,如何找實習呢?首先如果學java的話,Spring+ Springmvc + Mybatis一定要會的,自己看黑馬或者尚硅谷的視頻入門把~或者直接看書也行~不過一開始就看書可能會看不懂,效率方面要考慮清楚再做選擇。而要去實習肯定需要一個項目拉,項目可以是課程設計,也可以是自己瞎寫的,最好是SpringBoot+Mybatis的架構的吧。或者更牛逼的商業項目也行,如果之前有過實習經驗就更棒啦。
   如果學完了Spring,Mybatis, 可以找慕課網上搜實戰教程,或者黑馬的那套學習資料里面有個4、5天做完商城,然后拿着一個項目去面試。沒有項目經驗是沒面試機會的,做完項目之后就去投簡歷了,之前你要完善你簡歷,首先把項目亮點寫清楚,還要對項目夠熟悉,才能吹。最好6月初找到實習把~,沒啥時間了的。
  找實習投簡歷可以去拉勾網,boss直聘,實習僧投遞。這些平台都是可以進行聊天的~多溝通吧,可能hr覺得你有禮貌或者講

話比較多比較積極就給機會去面試了

​ 實習過程,要了解清楚公司的技術棧,主動去發掘公司項目的優化點,比如我實習的項目是一個管理系統,功能是真的簡單,crud,而且數據量不大,面試根本吹不動。面試官又不喜歡聽這種crud的東西。怎么辦?記住,你的實習經歷是你面試的時候展示自己很重要的一方面,如果實習了之后沒收獲,只是寫crud,那么就很失敗。

后來我只能自己發掘,因為數據量是3個星期多了1W多條數據,這個時候查表可能會很慢。

(1)所以我根據自己項目的select操作對數據庫增加了索引(實際項目是沒有的,我趁着在公司的空閑時間,自己做了實操,並記錄下最終優化過后的結果)

(2)自己嘗試了分庫分表操作,跟面試官說,如果以后數據量大了,會嘗試分庫分表,但是這的前提是要懂分庫分表的方案。

(3)后來我又發現一個問題,項目里面用了一個定時器,調接口拿數據保存到數據庫,拿怎么盡量保證這個操作一定會執行,避免因為網絡問題造成請求失敗卻沒記錄呢,那么可以試着做錯誤重試操作,並打日志拉。(項目里面沒有寫的,因為沒有這個需求,但是我就后來自己構想了解決方案。

項目亮點都是靠自己去挖掘的噢,實習的打法很重要,不然實習就沒收獲了。

三、心態與面試技巧

如果現在是大三了,建議該收收心了,想想以后的就業情況,好好為將來打算。

秋招就再9月份突然間打響,到時候所有人都蓄勢待發,你會看着身邊的人都在學習,學得快的offer拿到手軟。

不好好准備的話,9月份10月份會很難受,當時自己沒offer,看着別人手頭的offer,討論最近又去哪里面試了,當時心情真的很酸。我校有個大神大二就開始刷面經了,牛逼的要死的巨佬,都怪之前沒好好學習。

心態很重要

面試不過很正常~ 基本前2、3次面試都是被虐的,收學費,多面幾次就行了。我試過一個宿舍3個人過去面同家公司,結果就我一個人孤零零回來,另外倆人都到達hr面。也試過二面完感覺不錯,能過了,但是等了2個星期都沒消息的情況,很難受很失落,懷疑自己不ok想要放棄,心想着:“要不先找個小公司呆算了,這幾年好好努力再進大廠”。早點睡一覺休息一下,第二天繼續肝。

做好承受很大壓力的准備

從5月份到11月份這差不多半年,每天都在學習,基本都是8點多起床,然后去上班,或者去圖書館。而下班回來之后繼續學習,地鐵上也是看書,怎么說呢,爭分奪秒吧。一本書《圖解HTTP》,印象很深刻,這本書我在上下班地鐵路上看完的,歷時兩周左右。《JAVA並發編程原理》也是在上下班的地鐵上看了大部分的。如果不上班的話,每天8點多起來去圖書館,圖書館關門就回宿舍繼續看,看到12點至少就睡覺,好幾次利用晚上通宵看視頻,因為沒時間,第二天11點多起床吃午飯完繼續看書,我個人感覺過得並不比考研的輕松。

要堅持,至少要堅持要11月中旬吧

我們這屆的offer大概都是10月多拿的,如果就算9月、10月過了,也不要灰心,秋招的后期也是有很多offer的,多嘗試多面試最重要。

學會面試技巧

(1)首先自我介紹很重要,把你的項目優點,你會的東西跟面試官說,目的是引導面試官問你會的東西

(2)面試是聊天的過程,首先技術肯定要過硬,但是更重要的是聊天的方式,面試最好的氛圍是有問有答,像聊天那樣。要跟面試官聊天,而不是單純回答面試官問題。

​ 忌面試官問一個問題,你就講一大堆,不給面試官講話機會,你應該分點講,比如一個最簡單的問題,“ Synchronized跟Lock的區別”, 你可以這么講:

  1. Synchronized是java關鍵字,底層是jvm利用對象頭信息判斷是否獲得鎖,jdk1.6之后對該鎖進行了優化,而lock是一個類,底層使用CAS實現。

  2. Synchronized不需要手動釋放資源,lock需要

  3. Synchronized可重入 不可中斷 非公平,Lock 可重入 可判斷 可公平

  4. Synchronized跟Lock非公平狀態性能差不多,而Lock公平狀態下性能比Sychronzed差很多,

好處:

分點講,每一點只講關鍵,個人最先一開始就講很深入,結果面試官聽了有點不耐煩,直接叫我行了,不用講了。

后來我知道了,這樣可能講了面試官不想聽的東西,所以我總結了一下,“分點講,每點只講關鍵不深入”,面試官如果想知道你的真實水平,他會再問你某一點的深入解析,比如說上面的問題,他會問“你說,jdk1.6之后對該鎖進行了優化,那你講講怎么優化“, 或者會問”拿你說說什么是cas“。

面試官一般都是抓住一點,一直挖深看看你了解的水平的。個人的回答方式是,一開始先點一下就可以,讓面試官知道你知道,他再根據你的回答選擇他想問的,這也是一個引導的過程。

最重要的是,聊得對方開心拉,他一開心就給你過了,我們也可以主動問他一些關於他公司業務的問題,比如公司的技術棧,針對該技術真我們如何學習,有啥學習資料,學習路線,他是怎么解決某些情況的某些問題的。
其他的面試技巧要靠自己總結啦。
大家聊的開心最重要,總之就一個字:”舔“


免責聲明!

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



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