概述:
雙非小渣本,京東軟開實習,同程藝龍軟開准入職。總結一下【介於春招和秋招】之間的求職歷程,目的是想留點東西給學弟學妹,希望學弟學妹們找一個好工作。
目錄:如果只想看某一部分可以直接去看,跳過一些冗餘的廢話。
1 為什麼是【介於春招和秋招】
2 【求職渠道】
3 面試官喜歡什麼樣的【簡歷】
4 【技術棧】想要在北京找一份中廠校招/大廠實習,需要具備什麼技能
5 【刷題刷書推薦】提升能力的最快途徑
6 【如何看待培訓機構與外包公司】
7 【如何準確定位】
8 【面經筆經】
9 【總結】
一 為什麼是【介於春招和秋招】?
因為秋招的時候,找了一份實習,就沒考慮秋招的校招崗位,所以就錯過了秋招,找工作的時候特別尷尬,12月 —— 1月,此時秋招以及秋招補招大部分公司已經結束,春招還沒開始,簡歷通過率極低,崗位極少,想要找工作的同學最好把握秋招(9月開始,10月後基本結束,11月-12月,陸續會有補招,1月很少有公司還在招人)以及春招(3月開始,4月基本結束,且很少有補招)。
【總結】:
【秋招】 神仙打架,各大廠的hc會井噴,競爭很大,同時機遇也很大。
【春招】 算是秋招的補招,hc較秋招會少,一大部分崗位面向的是下一屆的實習生,還有海外學生(海外12月份畢業),個人覺得競爭不比秋招少。
二 【求職渠道】?
這裡是按難度遞增排名的:
1 去學校的網際網路企業
這裡可能是面試難度是最低的,一般主要考察的是學校期間的表現和在校成績,很少考手撕演算法之類的程式設計題,可能去學校的網際網路企業,手寫程式碼,寫出一個完成的快速排序就已經超過很多人了。(名校名企除外,很多知名企業的專場招聘會難度還是很大的)
2 實習轉正
比起走春招/秋招的獨木橋,實習轉正也是一個不錯的選擇,好處就是面試難度會下調(不是絕對,比如位元組跳動的實習和正式offer的面試難度是一樣的,所以位元組跳動的實習轉正率也很高,據說可以達到50%),缺點就是可能最後沒有轉正機會,尤其是網際網路行業不景氣的現在,需要均衡考慮。(一般大企業的實習待遇都是很不錯的,實習建議一定要去大廠,不要怕,實習的要求一般來說都是比校招低的)
3 春招/秋招
1 去別的學校參加招聘會,比如北京郵電大學,北京交通大學,網際網路的招聘會就比較多,外校學生去也是有面試機會的,有的企業,上午是本校的面試,下午可能就會讓外校的學生面試。
2 網申,在公司的維度上參加春招/秋招。去企業的招聘網站上申請,外地學生一般都會提供視訊面試的機會,不用擔心太遠,同時一般的公司網申是需要線上筆試的,所以需要提前安排時間,不要錯過筆試。網申的週期可能很長,比如投了簡歷1個月才會安排,需要耐心等待。
3 內推,一定要把握內推機會,一定要把握內推機會,一定要把握內推機會,特別重要,內推的簡歷可能會免筆試,可能走單獨的流程(比如你內推了一份簡歷,官網投遞了一份,你就有兩份簡歷在跑流程,有double的機會),可能不會留下面試評價(比如你表現不好,但是由於是hr郵箱中的簡歷直面,可能不會上傳招聘系統,不會留下不好的面試評價,你就多了一次機會),可能有特別的標識(簡歷免初篩,或者簡歷優先處理),這裡為什麼說可能而不是一定,因為所有的公司都不一樣,用的不同的招聘系統,有不同的業務規則。
4 招聘網站:
這裡推薦幾個:
論壇:牛客網,國內沒有哪個應屆生求職平臺做的比牛客網好,【牛客玩的早,offer拿的好】
招聘網站:Boss直聘,拉鉤網(有個技巧,比如你想找java,不要只搜尋java,多試一下其他關鍵字,比如後臺,伺服器,客戶端等,你會回來感謝我的),實習僧(實習僧上一般都是大企業,而且不僅有實習,也有部分校招)。
微信公眾號:Utips校招實習,刺蝟實習校招、伯樂校招,可能會提供校招的諮詢和內推,建議關注起來,同時還有職場小乾貨。
【總結】:多個渠道,多個崗位,多試一試,因為面試其實很大程度上看面試官的,可能同一家公司的不同部門,面試難度相差很大,大廠也有混進去的。
三 面試官喜歡什麼樣的【簡歷】?
這裡簡述,個人推薦【超級簡歷】這個網站,他有簡歷評分,簡歷排版,簡歷優化,簡歷模板,很多很多的功能,十分推薦,用這個做出來的簡歷,比我自己第一版簡歷感覺上好的太多了(關於這個簡歷的模板我也去專門請教過HR,HR說這個模板比較不錯),非常適合不知道自己的簡歷怎麼寫的同學,同時如果你的目光是海外的企業,不要簡單的通過軟體翻譯自己的簡歷,而是要找英語專業的同學幫你進行一些雕琢,因為直接翻譯過來的簡歷可能不符合外國人的閱讀習慣,從而影響自己的簡歷通過率。(關於簡歷,在牛客網上有【完美世界】HR的分享,值得推薦)
四【技術棧】
想要在北京找一份中型企業/大廠實習,需要具備什麼技能?
Java基礎
對封裝、繼承、多型、物件導向的理解(不要求背定義,但是至少要有一個自己的理解)
介面、抽象類、訪問控制符等。
鎖 Synchronized、Lock的原理、鎖的分類,鎖升級 CAS free-lock。
執行緒 執行緒狀態,狀態切換、程式執行緒區別、執行緒池、建立執行緒的方式,一些常用方法:wait()、notify()等
一些主要的方法:volatile關鍵字、equals方法,StringBuilder做字元的高效連線等。
對反射,泛型有一定的理解,做做Demo。
對Servlet應該有一定的理解(雖然我面試的時候沒被問到,但是對於理解框架本身十分重要)
【總結】:
以上只是說了一小部分,java基礎一定要打牢。然後說一些基本不用看的
JSP:一種View層的渲染技術,現在基本已經淘汰了,但是我熟悉的Velocity、FreeMaker裡面很多的語法和JSP中 的JSTL表示式極為相似,所以學JSP可以讓我們在學習其他渲染技術的時候更容易上手,但是由於JSP的效能問題,前後端 混寫問題,現已經淘汰了。
SSH框架:企業基本都已經用Spring Boot開發,SSH框架已經淘汰了,一是因為太重了,對效能有影響
2 是因為出現過幾次重大的bug,所以目前新專案沒有采用SSH開發的
Swing:UI框架,可以捨棄
XML 基本已經被json代替,用Java對XML進行渲染和解析的操作實際開發中沒遇到過。
集合框架(這裡分為 瞭解、使用、原始碼 三個級別),要注意集合/容器 之間去區別和聯絡,以及使用場景
List
- ArrayList(原始碼)
- LinkedList(原始碼)
- Vector(瞭解)
Set
- HashSet(使用/原始碼)
- LinkedHashSet(原始碼)
- TreeSet(使用)
Map
- HashMap(原始碼)
- LinkedHashMap(原始碼)
- TreeMap(使用)
併發包(重點了解)
-
ConcurrentHashMap(原始碼)
- CopyOnWriteArrayList (使用)
- ArrayblockingQueue (使用)
- AtomicInteger (原始碼)
- CountDownLatch(使用)
- CyclicBarrier(使用)
- FutureTask (使用)
- ReentantLock(原始碼)
-
Condition(使用)
- Semaphore(使用)
- ReentrantReadWriteLock(使用)
- Executors(使用)重點關注執行緒池種類、各個作用、適用場景
- ThreadPoolExecutor 過載方法的引數、各引數作用
【總結】主要去看標註原始碼的,其他的可以有時間再看,原始碼不一定要逐行去看,可以找一下高質量的部落格,看看裡面的原始碼解讀即可,併發包我看別人面經裡很多,所以就去系統的學了一遍,但是不知道我面試的時候為什麼沒有問我的。
虛擬機器
JVM記憶體模型的分割槽,儲存的資料型別,是否會發生記憶體溢位。
載入機制
雙親委派模型
gc演算法、fullGC、MinorGC觸發條件
G1,CMS過程
JVM優化(考的不是很多,主要是分割槽,類載入,和gc)
四種引用
IO流(我NIO沒看過,這裡直接扒的知乎)
BIO
位元組流:型別、適用場景
字元流:型別、適用場景
NIO
型別、適用場景 三大元件的聯絡、使用 記憶體情況 訊息
中介軟體:
redis:基本型別,持久化策略,飽和策略,查詢,使用場景,分散式鎖,(分片和叢集有時間可以看看)
Dubbo:工作原理,RPC協議,如何配置
RabbitMQ:工作原理,工作模式,如何配置
【總結】:訊息中介軟體是錦上添花,主要還是基礎。
資料庫:
儲存引擎 索
事務,MVCC,一致性讀等。
鎖機制。
SQL調優
表設計 (有時間還可以看看主從複製和讀寫分離)
web:
Tomcat 結構、流程(沒學過,但是聽說有考的)
Servlet
生命週期
使用
springMVC
使用
請求流程
spring
IOC/AOP 原理
Spring的一些使用細節,比如json怎麼接,如何配置事務等。
mybatis
使用
#、$區別 ,對一和對多
Spring Boot
使用
Spring Cloud
會更好,但是沒遇到過問的
設計模式:
單例模式
工廠模式
觀察者模式
介面卡模式
模板模式
原型模式
建造模式
【總結】
瞭解即可,時間充裕可以做做Demo,設計模式一共23種,知道常用的就行。
單例考的比較多,各種單例的寫法和優缺點要掌握,也要準備幾個專案中用到的設計模式,比如我們的專案就
用到過,建造模式、模板模式、介面卡模式。
資料結構:
陣列、棧、佇列、堆、圖、樹、集合、雜湊表、跳躍表。
都要了解,無論是找工作還是為了自己的成長。
這裡知乎上樹總結的比較全,就貼一下:
二叉樹
- 平衡二叉樹
- 二叉查詢樹
- 紅黑樹
- 完全二叉樹
- 滿二叉樹
概念、適用場景、時間複雜度、好處壞處
B樹
- B Tree
-
B+Tree
兩者的聯絡、區別、適用場景
演算法:
瞭解常見的排序演算法:
氣泡排序、選擇排序、插入排序(基礎)
歸併排序、快速排序(常考)
桶排序、計數排序、基數排序(瞭解、不要求手寫)
堆排序(很重要,java中有它的實現,即優先順序佇列 PriorityQueue)
各種排序的思想
時間、空間複雜度、穩定性如何,可以手寫
DFS、BFS
回溯法
貪心演算法、動態規劃等。
網路
TCP 三次握手、四次揮手、各種狀態、狀態改變 擁塞控制、流量控制、累計應答。
如何解決亂序問題、如何解決丟包問題。
和UDP的區別
IO模型
同步、非同步、阻塞、非阻塞概念
模型種類、各自特點、適用場景如何使用
HTTP && HTTPS:過程
DNS
TCP/ip協議
使用者從瀏覽器輸入一個URL,到接收到伺服器響應的全過程。
Linux基礎(我Linux只會寫簡單的命令,面試官也沒辦法問的更深)
常用命令
作業系統:
程式排程演算法
使用者態、核心態
程式執行緒區別
頁的概念
【總結】:個人感覺,不一定對,是我自己的複習大綱,希望可以幫到你們。
五 【刷題刷書推薦】
提升能力的最快途徑
資源:
【極客時間專欄】:均價80,乾貨很多,這裡推薦一些我買過的
1 《MySQL實戰45講》 mysql的入門專欄,看到20章左右就能對MySQL有一個較為系統的認識了。
2 《趣談網路協議》網路協議的入門專欄,看到26章,可以對tcp/ip協議有一個較為深入的理解
3 《從0開始學大資料》0基礎大資料入門專欄,感覺像是科普文,我只看到了16章,寫的還是非常好的,也是因為這個專欄,所以後來去了同程藝龍,想聽一下李老師的現場課。
4 《Java核心技術36講》不適合入門,但是適合有一定基礎之後再反覆研究
5 《資料結構與演算法之美》非常適合演算法入門
6 《演算法面試通關40講》用leetcode講演算法題,非常推薦,主要實現語言是python和java
【看過的書】
1 《深入理解Java虛擬機器》 不是很厚,但是卻是經典中的經典,建議多讀讀
2 《Java多執行緒核心程式設計指南》多執行緒的入門書,非常推薦
3 《程式設計師程式碼面試指南》演算法書,大部分是演算法題的解法,如果基礎不錯,可以去讀,但是演算法基礎不是很好的話,還是用專門的演算法書比較好,因為題永遠只是輔助。
4 《網路是怎麼連線的》 寫的比較通俗易懂,由點即面的,個人感覺比較好理解,但是最開始沒有一個巨集觀的網路概念。如果是為了面試的話,專欄或者部落格可能來的快一些。
5 《圖解TCP/IP》也是,如果是為了面試的話,專欄或者部落格可能來的快一些。不是為了面試的話,可以細讀一下,寫的挺有意思的。
6 《圖解設計模式》 感覺是同類裡面最好的,比較精簡,同時很全面,每個設計模式都配有Demo,讀起來也會比較順暢。
7 《Head First 設計模式》 這本書被稱為設計模式的神書,確實它會引導我們去一步一步的解決問題,可能這個問題已經被解決了,然後我們才會恍然大悟,原來我剛才使用了設計模式,但是較厚,為了面試的話,不推薦,時間充裕的話,可以仔細看看,寫的確實不錯。
8 《演算法圖解》用python寫的,演算法入門書,比較薄,看起來還是比較輕鬆的。
9 《深入理解計算機系統》殿堂級書,建議找個時間刷一遍,但不是找工作的時候,太厚了,只看過幾章。
10 《演算法導論》殿堂級書,用很多數學的方法去論證演算法的可行性,建議找個時間刷一遍,但不是找工作的時候,原因同上。
11 《碼出高效 Java開發手冊》建議刷一遍,寫的特別好,涵蓋了很多內容,書很薄。
12 《阿里巴巴 Java開發手冊》也就是阿里規約,規範程式碼,建議看一下。
13 《Java程式設計思想》 有時間可以看看,但是不適合作為一本Java入門書,我Java入門的時候是學校的教材和培訓機構的講義,沒啥好書推薦的。慚愧。
【總結】以上就是我求職期間看過的書,不敢對書的內容有什麼評價,有些書非常好,但是不適合求職期間看。
【刷題】
個人的話題刷的不多,leetcode 110道,牛客網70道,去掉重複的題大概150道,演算法算入了個門,刷題有很多種策略,龜派和兔派,我是先兔派(想10秒,想不出來就馬上看答案,看最優解)刷了100道左右,然後就高頻的題進行龜派的刷法(儘量時間、空間複雜度更低,方法更多的去完成)。
六 【如何看待培訓機構與外包公司】
培訓機構:個人覺得培訓只是學知識的一種途徑,我培訓過,然後找了第一份實習,並不歧視,但是要注意的是,【不要把培訓機構當作一根救命的稻草】,不要過分的相信培訓機構,要有自己的思考,一定要努力學習技術,技術有了工作自然就有了,靠包裝是走不遠的。
外包公司:有些用人單位會歧視上一家工作單位是外包公司的員工,而且外包工資真不高,跟校招沒法比(不是歧視外包,實話實說)。
要注意,如果你面試的時候把面試官百分之百(指的是所有輪面試,1 2 3 輪加起來)題都答出來了,你就要考慮該不該去了,可能你進去了也沒有多大提升。
要求應屆生有產出的公司,讓應屆生上來就幹活的公司也要考慮一下你所能得到的成長,因為大部分企業的校招生進去之後都是當作後備骨幹來培養的,機會會非常的多,切莫捨本逐末。成長環境是最重要的,而不是每個月多個1、2千的薪水。
七 【如何準確定位】
這個就不多說了,每個人心裡都有自己的定位,投簡歷的時候不要慫,多投,多嘗試大廠,然後雙非渣本的同學(沒錯,就是我),你自己可以調侃你自己是渣渣,但是面試的時候或者是準備面試的時候,別看輕自己,你自己都覺得你自己不行,面試官為什麼會相信你的能力呢?
八 【面經筆經】
京東(java軟開實習)
學校的經歷
有什麼良好的程式設計習慣和程式碼風格
泛型可以被繼承嗎?舉個例子
JVM記憶體模型的理解 用過那些資料結構,
談談你的理解
mysql資料庫多個欄位都存在索引時,查詢操作時應注意哪些問題
是否自己寫mapper/dao/pojo?有沒有可以自動生成的方法
mybatis攔截器的使用
spring mvc中如何使用自定義的註解
mysql事務的底層實現原理
mysql中innodb的索引結構
mysql中鎖的應用
如何自定義資料庫連線池 假設自定義的資料庫連線池有10個空閒連結,此時共有12個連結請求,剩下2個連結如何處理,如果想實現等待,如何去設計。
是否進行過sql優化,具體說一下如何優化的
常用的編譯工具,經常使用的快捷鍵
voltile和synchronize的區別
CMS和G1
SSM中前後端互動問題,json在其中的作用,它是如何在前後端進行傳遞的?
不同專案中可能用到的jar包版本不同,在發生版本衝突的時候,如何去解決
如何把自己的jar包上傳至maven
前端會寫嗎
javaScript中的物件,是否有類的概念
ajax可以設定為同步嗎
總結:感謝在我實習的時候撈了我一把,也真的學到了不少東西。最感謝的公司。
眾安保險(java軟開 )
擅長的語言
專案中主要寫前端還是後端
專案前端資料如何展示?是前後端分離嗎
用到的框架?
接觸過SpringBoot嗎
講一下GC的理解
專案中如何保證事物
Java8的新特性
Volatile和Lock
專案中用到了哪些設計模式
如何保證分散式架構專案中的資料一致性
如何實時保證分散式架構專案中的資料一致性
演算法:給一個整數n,代表n個左括號,和n個右括號,判斷合法的排列組合有多少種?
總結:演算法寫的一般,當時用的全排,然後用棧來判斷合法字元。面試體驗特別好,但是需要去實習,不能發校招offer,所以非常遺憾,比較推薦。
頭條(java軟開 ,火山小視訊 && 抖音):
抖音:
Gc
手寫Web Socket
紅黑樹
手寫跳躍表的插入過程
寫一下TCP滑動視窗的演算法
B樹和B+樹
linux的使用
TCP擁塞控制
演算法:
每k個一組,反轉連結串列
總結:面試體驗很好,面試官給推薦了2本書,程式設計能力有待提升,手寫除了WebSocket之外其他的基本都寫不出來完整的。
火山:
一面: Gc
jvm分割槽
對排序演算法的瞭解
手寫塊排,歸併排序,分析時間複雜度,空間複雜度
證明塊排是穩定的排序演算法
arraylist原始碼分析
演算法: 去除連結串列中的重複項 1 -> 1->2 ->3->3->4 結果 2->4
總結:答得還可以,然後一直在面試中,醉了。
映客直播(伺服器軟開 java轉golang):
筆試:比較簡單,有一道題比較深刻:
記憶體1G,需要計算1G的資料排序,哪種排序方法效率最低,當時選的是冒泡,因為涉及到頻繁的資料交換,其實應該是歸併,因為歸併不是原地排序,多佔用的記憶體空間,會與磁碟進行頻繁的頁交換,造成卡頓。
面試:
實習的感受
學校的經歷
手寫二分法
手寫圖
手寫圖的廣度優先演算法
手寫圖的深度優先演算法
總結:深度優先沒寫出來,廣度寫的也不是很流暢,圖方面的知識看的太少了。
面試官:特別喜歡你,但是我可能不會給你過,藍瘦。十分推薦去,真的會把應屆生當成後備骨幹去培養。
北森雲端計算(.net軟開,saas方向):
一面:
list arraylist linkedlist
二分查詢分析
redis 結構
執行緒同步,非同步,互斥 臨界段 執行緒狀態 執行緒方法
Gc
Mysql 索引
設計模式
演算法:兩數之和
總結:一面比較簡單,面試官還給講了saas,c#和java的區別等。
同程藝龍(java軟開)
自我介紹 之前打比賽的經歷
c語言會嗎?
arm指令瞭解嗎?
java反射的應用
用反射來獲取成員變數的時候,遇到成員變數本身是一個物件,該怎麼做。
用過什麼鎖,
瞭解分散式系統中的鎖嗎,使用場景
arrayList和linkedList的區別和使用場景
重寫equals
作業系統中的頁和索引中的頁一樣嗎
http協議
mysql資料庫中的索引
redis中的分散式鎖
Spring mvc的處理請求過程
遊覽器快取
前端資料渲染用的什麼?用到模板引擎了嗎?
redis中的分散式鎖,如何保證的
框架那哪種用的多,
簡單說說springboot
單例模式的實現方法,區別,每種的特點
可以用反射來建立多個單例模式的物件嗎
實習的經歷和專案
為什麼選擇同程藝龍,不留在京東
演算法:
兩個連結串列,其中只有1個重複的元素,找到這個元素。
總結:offer call了,不出意外應該是會去,第一是這個公司給人感覺不錯,新人體系很完整,並且非常喜歡一面的面試官,不出意外應該會分到一個部門,第二是不想折騰了,希望可以有一段時間沉寂下來,學些東西。
九【總結】
寫這篇面經主要的目的就是為了給學弟學妹們說一下如何準備春招/秋招,因為來學校的網際網路企業太少了,希望我踩過的坑,學弟學妹們能不要踩,雖然我們們學校不是特別出名,但是總體來說也算不錯,加油。
——————————————————————————————————————
另外:覺得有幫助可以關注博主,定期分享一些leetcode高頻演算法,Java原始碼解讀,Java基礎知識,軟體破解與推薦,等等。