因爲內容過多,分爲上、中、下
本篇內容:8000+ 字
建議閱讀時間:20 分鐘,如果有收穫,建議收藏多次閱讀
上篇目錄
秋招之路覆盤篇 樓主的自我介紹: 我自己複習範圍:(關注公衆號回覆 "面試腦圖" 獲取面試腦圖,因爲圖片很大) 我的項目很 low 怎麼辦?? 項目 low,無實習經驗,還是個渣本,怎麼拿到 offer 的 關於套路和技巧 你的秋招時間這麼長,你的心態如何呢? 關於衆多知識點和麪經你又是怎麼選擇去看的呢? 簡歷應該怎麼寫??? 如果以上你都沒有???我好慌,我該怎麼辦??? 實習、秋招、春招那點事 坎坷的offer故事: 總結:以下面經順序爲難易度排序及 offer 排序滴滴(11.5 offer):線上面8.9投簡歷:8.27筆試:9.16一面:80分鐘左右10.17二面:50分鐘左右10.29三面:36分鐘左右11.1 HR面11.5 offer
秋招之路覆盤篇:
樓主的自我介紹:
樓主:二本本科、無實習經驗、CS專業(但是個人覺得和非科班沒啥區別,專業課也沒有聽...)
崗位:Java開發 / 後端開發
秋招之路:6.28——10.29,戰線很長、6.28的第一封簡歷投出、10.29的面完滴滴三面暨秋招結束
方向:Java方向、只會SSM,其他Redis、中間件都不會
海投簡歷:180+吧,在牛客網的求職校招日程裏( https://www.nowcoder.com/school/schedule ) ,牛客打錢(手動狗頭????),有合適崗位的公司都投,每天投幾個,自然而然就到180+,但是投簡歷也是一個苦力活,可能會投的自閉,前期建議投一些小公司練練面試(找些套路),後期就是大公司幹,千萬不要認爲自己沒有準備好就不投,等你準備好,黃花菜都涼了
Offer:滴滴、京東、科大訊飛sp、58集團、用友、銳捷網絡、聯行科技(新公司大背景、薪資+補助下來跟滴滴差不多了)
我自己複習範圍:(關注公衆號回覆 "腦圖" 獲取面試腦圖,因爲圖片很大)
首先說明我是Java開發,我的範圍只適合Java開發的,其他方向我不太瞭解,並且很多公司側重點也不一樣,比如字節不側重語言,側重操作系統四大金剛那些,也看公司吧,就像考不同的學校,會有不同的大綱,因爲我是本科生,都比較側重基礎
Java:Java基礎雜七雜八的(經典必考集合各種死磕源碼吧)、多線程併發包各種死磕(我是死磕到源碼),JVM死磕到細節、GC死磕到細節、JVM調優自己練習練習
框架:spring看看IOC和AOP的源碼,但是太難太難了,就光那個方法名就特別長,前期就只知道個IOC和AOP是啥,後期就去看源碼記大概一個原理過程,SpringMvc的流程,一些註解吧,Mybatis也是那些常考的點吧,緩存可以瞭解一下
數據庫:數據庫死磕,越深越好
操作系統和網絡:背常考的、但是太深了,還是菜
設計模式:太多了記不住,我就是簡單瞭解一下,叭叭給他說有啥用,Java裏哪裏用了xx模式
算法和數據結構:是我秋招開始補的、做完類型題進行總結,刷的就是LeetCode吧,我是先LeetCode,然後劍指offer,但是我也是有很多筆試直接掛的,除了遇到一些簡單的,或者原題或者類似的題能A,一定要總結套題,類型題,一定總結一定總結一定總結
Redis:沒有用過,但是就是記吧,那些常考的東西
IO模型、網絡編程:比較菜了,不咋會
Linux:我也比較菜了,就會簡單的命令
微服務、分佈式、集羣、中間件:我不瞭解,只知道有這個玩意
關於源碼閱讀:建立在自己會使用這個東西之後再去閱讀源碼,閱讀常用的方法源碼即可,第一次閱讀源碼建議看視頻跟着閱讀或者找博客,要不然比較生疏很難,,,,
我的項目很 low 怎麼辦??
low 不是你的問題,但是項目也可以“包裝“啊,此“包裝”非彼包裝,舉個例子吧:
Q:原項目有一個等級權限管理,就 3 層等級,數據庫裏設計好了就分 3 級,面試官就問到你了,你這個怎麼做的。
A:自己一頓叭叭叭,
Q:面試官給你提了一個新需求,如果 3 層等級變了,變成了不一定多少層,你又怎麼設計?
面試官給你說出了問題,不管你有沒有回答出來,但是希望你面完之後,你對這個需求去重新設計一下,下一次面試自我介紹的時候說:
對於 xx 項目,我自己私下也有覆盤,比如當需求變爲 xxx 的時候,我考慮到這樣設計:叭叭叭.....。
這樣你的 low 項目就變得不再 low 了,突出你的思考、你的想法
項目 low,無實習經驗,還是個渣本,怎麼拿到 offer 的
死磕基礎,把很多源碼看了,集合、JUC下的,面試就磕源碼,操作系統和計算機網絡背不住,就是手寫吧。我拿的offer裏,基本都是Java問的很多
關於套路和技巧
關於面試:面完問一下面試官對你的評價,找到自己的不足,另一方面也表現出自己強烈的學習慾望,反正我每次問面試評價都是:基礎不錯,就是動手實踐不是很好,xxx,,,,如果感覺跟面試官聊得不錯的,可以厚着臉皮要個微信加,反正我面滴滴三面要微信加,被面試官拒絕了,其他的也有成功的,哈哈哈哈哈
面試覆盤:我一般線上面試會錄屏或者錄音,面完之後覆盤總結,不單單是總結,你還要找到自己的不足去彌補,防止下一次再被問,這就是爲什麼我面經這麼全的原因,不是我記性好,,,,,哈哈哈哈哈
關於投簡歷:寫一個 Excel 或者 Word 記錄投的公司,時間,投遞方式,方便後期去查詢結果
你的秋招時間這麼長,你的心態如何呢?
秋招歷時足足 4 個月,心態就像心電圖一樣,考研就像前期平穩,後期曲線上漲,因爲自己也很樂觀,在整個秋招之路里,也有人說話,自己也有幾個網上的小夥伴羣,每次就是說說話,互相激勵對方,如果你是一個人的話,希望找幾個小夥伴一起交流說說話,避免自閉低沉消極
關於衆多知識點和麪經你又是怎麼選擇去看的呢?
1.先看衆多的知識點,廣度先建立起來,遇到一個不會的知識點千萬不要入坑掉進去,越陷越深2.廣度那麼多,我看一遍記不住咋辦,那就多看幾遍,理解化記憶,找一些共同點進行記憶,手寫記憶(秋招以來我大概寫了 20+的單面 A4 紙吧),抱團組隊,互相面試,互相講解3.廣度拉起來之後,去看看深度,瞭解一下源碼 xx 的,深度是你從衆多面試者脫穎而出的法寶4.面經看了一定的知識點之後再去看,作爲查缺補漏之用,當你要準備面哪個公司之前,去看看這個公司的面經。
簡歷應該怎麼寫???
以下屬於個人觀點:
1.如果成績好,寫上你的 GPA 和排名2.學校好肯定是個亮點3.有博客(前提裏面要有內容),有 GitHub 寫上去4.大廠實習是個亮點5.項目負責模塊最好用:用 xx 實現 xxx 解決了 xxx 問題,網上都說最好用 STAR 法則寫,6.計算機類的比賽加分項吧、ACM.....7.技能棧寫你會的,精通、熟悉、瞭解 xxxx。
劃重點:字不能錯,大小寫要寫明白,Java 不是 java,我不知道這個單詞到底是怎麼拼,去官網瞧瞧他怎麼寫的。
如果以上你都沒有???我好慌,我該怎麼辦???
把你複習的衆多知識點堆在技能棧上,前提是你要會!會!會!不會就不要寫(別給自己挖坑),比如:
看多線程知識點前:
1.瞭解多線程編程
看知識點後:
1.熟悉多線程編程及原理,內存屏障和 CPU 緩存、線程池應用及原理、synchronize 鎖優化、JVM 內存模型、J.U.C併發編程包
再次重點提醒!!!一定要會才往上寫!!!
實習、秋招、春招那點事
坎坷的offer故事:
•貝殼是第一家面完 全部流程的公司,當時認爲能過,結果被掛了,不知道是什麼原因,可能學校吧...,當時挺難過的。
•京東是8.13 14的一二面,面完之後一直沒信,二面面試官也說我技術面過了提交了HRBP處理了,等到了8.29正式批給我發來線下面試邀請再次聯繫了二面面試官幫我反饋,當天晚上收到HRBP的oc,給我說鎖定簡歷,給我發offer,問了幾個hr的問題,9.5問hrbp什麼時候發offer,hrbp問我要了身份證,之後一直持續到9月底,期間給HBRP發了四次微信詢問offer的事,沒有一次回我微信的,9.30二面面試官幫我反饋了我一直沒有收到offer的情況,HR那邊還是沒有給反饋,國慶期間最終找到零售校招HR幫我查了一下我的信息,結果說沒有查找我的信息,我給他說了我是提前批,HBRP問我要了身份證各種情況,說幫我對接一下HBRP,最後發現是把我的信息遺漏了,重新給我提交,10.10收到offer,等待京東這段時間,身邊的人都說我涼了涼了,但是我還是堅持下來了,天天找各種途徑去查,最終也是沒有辜負自己的努力。
•滴滴是8.9投的簡歷,8.27筆試,邀約9.7的線下面試,但是我拒絕了,期間一直想去問問能不能申請線上面試,結果沒有找到途徑,9.12電話邀約了9.16一面,面完之後一直就沒有信了,也沒有拒信,官網狀態還是面試流程中,然後一直給滴滴的郵箱發消息問面試結果、不下5次吧,都是石沉大海,在牛客找滴滴hr聯繫方式,也沒有方式,在10.15的時候再次給滴滴郵箱和滴滴招聘公衆號發消息,下午來了hr約二面了,我堅持的等到了,9.16-10.15 一個月的時間啊,這期間也基本每個人都告訴我是掛了,是不會有感謝信的,但是我還是堅持,同樣我是在10.10收到的京東offer,但是我還是不甘心,還是去堅持問滴滴,就是要個結果,掛就去京東,過就繼續面,再約面滴滴這期間,我同樣面試了其他家爲了面試查缺補漏吧,大大小小公司我都投,一直堅持到offer,給自己的目標就是面完滴滴三面就不面了,結束秋招,因爲太累太累了。。。
總結:
面試就是把自己變成商品,不遺餘力地推銷給面試官,從而打動他的過程。
面試就像一場考試,給定了要考的範圍,就是你能不能去堅持死磕他了,堅持死磕對了,加上一點運氣+臨場發揮就是勝利,祝各位加油!!!沖沖衝!!!就是幹!!!
以下面經順序爲難易度排序及 offer 排序
滴滴(11.5 offer):線上面
8.9投簡歷:
8.27筆試:
9.16一面:80分鐘左右
1.Java集合說一說吧set ,list,map都問了一遍2.TreeSet和HashSet區別•紅黑樹區別,有序無序3.hashmap和concurrenthashmap4.線程池用過沒,線程池的參數什麼意思,每個都問了一遍5.拒絕策略說一說6.synchroBlockQueue 到底可以存幾個7.鎖用過沒,•叭叭各種鎖,8.鎖的什麼方法你用過•tryLock•getHoldCount9.lock和tryLock區別10.lock的公平鎖和非公平鎖的怎麼實現的(源碼級別),不限於概念11.類加載機制,不是類加載幾個過程12.如果多個類加載器加載同一個類,會出現什麼情況13.tomcat的加載過程14.spring的生命週期,不是bean15.AOP16.ASM怎麼實現cglib17.mybatis的插件用過沒,18.項目, 背景:暫存數據,每一次把用戶填寫的數據暫存到數據庫,暫存字段,0暫存,1正式存1.如果實現a用戶暫存數據1,b用戶暫存數據2,實現a下次只能看見數據1,
給car表加一個操作人字段,每次判斷
2. car表怎麼設計的,
id,車牌號,xxx,xx,暫存標記
3. car表主鍵是什麼
主鍵id
4.主鍵id有什麼規則嗎?
自增長
5.如果一個車牌號重複了,添加的時候怎麼處理的
每次填入的時候,都會在數據庫裏查詢一下,判斷是否有
6.如果4個人同時填入車牌號爲888的車,怎麼處理這個問題
7.加鎖爲消化資源,你考慮一下在數據庫進行操作吧
8.隔離級別是解決什麼問題的啊
併發的時候問題,叭叭髒讀等問題,
9.隔離級別什麼時候纔出來啊? 19.數據庫索引,索引類別
唯一索引,聚簇索引,非聚簇索引
20.聚簇索引和非聚簇索引區別 21.二叉樹和B+樹的區別
叭叭半天,沒有get到點上1.B+樹所有數據都在葉子節點,每次查找時間穩定2.葉子節點都有指向下一個葉子節點的指針,範圍查找比較方便
22.那如果把二叉樹弄成,所有數據都存在葉子節點呢
二叉樹,如果刪除的話,可能會變成線性樹,時間複雜度變高
23.那如果平衡二叉樹呢
叭叭了,記得好像磁盤存儲是用的b+樹結構,索引是存在磁盤上的,用B+樹會減少IO操作
24.怎麼減少IO操作的 25.磁盤上所有文件都是B+樹存儲嗎?
文件夾的文件吧
26.磁盤上怎麼存儲這些數據的 27.你瞭解什麼文件格式
elf,a.out
28.Linux操作系統瞭解過嗎
Linux不太瞭解過,用過Linux命令,進程同步
29.Linux命令用過哪些
cd,grep,pwd,mv,管道符,ps
30.Linux根目錄下有哪些文件夾
etc,bin,我好像記得是,可能記不太清楚了
31.手撕翻轉樹,遞歸+遞推
32.手撕最小路徑和
10.17二面:50分鐘左右
1.開源項目瞭解什麼2.SpringBoot如何加載,源碼3.學習源碼如何深入學習的
叭叭叭ArrayList和LinkedList
4.如果去了解spring的啓動過程,你怎麼去了解 5.tomcat啓動的流程,要加載什麼資源 6.項目中有哪些收穫 7.項目中負責哪些點,技術方向吧 8.爲什麼用mvc架構
面試官:其實這個mvc架構知識點還是很深的,要做好還是很難的
9.項目裏Spring的事務是怎麼管理的
在方法上加註解
10.那爲什麼加註解可以實現,這個加載機制是怎麼實現的,源碼級別 11.爲什麼這個註解可以實現事務 12.那這個事務和數據庫的事務有什麼關聯
acid,事務隔離級別
13.那你們當時項目選技術是怎麼思考,比如mybatis用的什麼連接池
用的c3p0
14.那你知道有其他的連接池,各自有什麼區別
c3p0、dbcp、druid三大連接池對比 - wawa3338的博客 - CSDN博客 https://blog.csdn.net/wawa3338/article/details/81380662c3p0,dbcp與druid 三大連接池的區別 - 泡麪之家 - CSDN博客 https://blog.csdn.net/qq_34359363/article/details/72763491druid的功能強大、擴展好,
15.那你感覺連接池的功能都有什麼
1.資源重用2.更快的系統響應速度3.新的資源分配手段4.統一的連接管理,避免數據庫連接泄漏
16.項目大概幾個人,開發的人,源碼包大小多少 17.juc看過哪些,說AQS的機制 18.Lock如果給線程分配鎖的
叭叭ReentrantLock
19.公平鎖和非公平鎖的區別,源碼級別
面試官補充:非公平鎖就是搶佔式的嘛
20.隊列呢,瞭解什麼
ArrayBlockQueue,LinkedBlockQueue
21.各個隊列使用場景 22.queue裏面都有什麼方法
offer,add,put
23.各個方法仔細講講,都會出現什麼情況,添加的方法有什麼,都有什麼不同出隊列呢,都有什麼,跟offer對應的 24.jvm看過什麼、jvm常用命令 25.jstat的參數,比如看一個線程的回收情況,怎麼看、其他的命令呢 26.動手去編譯JDK源碼 27.JVM的類加載流程,到解析到字節碼 28.如何去驗證版本的衝突的,比如jdk1.6到jdk1.7 29.初始化去怎麼做的 30.實際運用中,ClassLoader都有了解什麼 31.如何實現一個動態加載、實現哪些方法 32.如何獲取當前的ClassLoader 33.那可以保持建立多個ClassLoader嗎? 34.爲什麼加載器加載出來的類不一樣 35.jvm內存模型 36.多線程如何實現主存同步的
緩存一致性扯一扯,Java內存模型
37.那通過什麼指令去實現其他工作內存無效的 38.Java裏怎麼實現緩存一致性的
volatile、synchronized、lock、信號量、wait/notify
面試官補充:信號量也是加鎖實現的
39.jvm的鎖優化有什麼
說了synchronized,
40.那還有其他編譯器的鎖優化嗎,比如鎖粗化
鎖消除、、、、、
41.網絡編程知道嗎 42.創建socket的過程 43.從server端開始說吧,幾個步驟 44. accept操作之後,然後呢 45. 怎麼解析這個信息呢,輸出到什麼流裏呢
46.互聯網這塊網絡編程用的也挺多的,比如rpc框架什麼的47. Java裏的IO這塊你瞭解嗎,區別48.BIO、NIO、AIO的對應類實現瞭解嗎49.shell命令50.進程通信方式51.Linux調度方式有什麼52.Linux的緩存有幾級53.jdbc連接mysql的幾個步驟、爲什麼要加載驅動呢,原理是什麼、PreparedStatement和Statement區別、返回結果如何查詢
準備 private static final URL、、、 也可以用properties從文件中讀取。load()、
1、首先註冊驅動啊?怎麼註冊?反射啊,Class.forName("xx.xx.xx.Driver");底層怎麼實現的?靜態代碼,DriverManager.registerDriver?啓動的時候,會自動調用靜態代碼塊的內容。
2、接下來就是獲取連接啊,怎麼連接?遠程連接(三次握手操作),連接放哪裏?作爲資源必須放池子裏。這樣能提高性能。常見的連接池有DBCP,C3P0,傳說中最安全,性能最好的Druid(國產),而且還能監控。
3、你總的有SQL語句吧,之後就是Statement編譯那。這裏會出現SQL注入的安全問題。在語句後面加"1=1"成立。所以我們採用預編譯的方式,PreparedStatement。可以防止這種問題的出現。
4、查完之後獲取結果集。rs.getString().
5、頭疼的來了,釋放資源。各種 if(xx != nu) {try{ xx.close();}catch{}} 不用擔心JDK8 出來一個新特性,可以放在try-withresource中。還有各種異常可以採用通道的形式 XxxException | XxxException
6、各種異常需要你放到一個try{}catch{}中,出問題你也不知道問題在哪裏?麻煩嗎?不用擔心,我們可以封裝成一個工具類,需要的時候調用工具類.getConnection();還是麻煩啊,可以用Spring框架爲我們集成提供了jdbcTemplate,HibernaterTemplate。用模板代碼消除了大量的樣板代碼。
遍歷結果集,叭叭
10.29三面:36分鐘左右
1.說說ArrayList的源碼各種方法吧,add,remove一系列方法2.MySQL的聚簇索引3.知道SQL注入嗎、Java裏怎麼防止的呢4.Redis和數據庫的一致性5.瞭解過什麼開源的東西嗎
Spring
6.那說說AOP吧
11.1 HR面
11.5 offer
熱文推薦
如有收穫,點個在看,誠摯感謝