渣本的春招修仙之路

溫酒煮Bug發表於2019-01-22


概述:

雙非小渣本,京東軟開實習,同程藝龍軟開准入職。總結一下【介於春招和秋招】之間的求職歷程,目的是想留點東西給學弟學妹,希望學弟學妹們找一個好工作。

目錄:如果只想看某一部分可以直接去看,跳過一些冗餘的廢話

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基礎知識,軟體破解與推薦,等等。


相關文章