Java程序員校招轉行及求職分享(順風、去哪兒、電信、58的等)

  • 背景介紹

題主某末流985水碩一枚,磕鹽不會,偶然接觸了下編程,而後又稍微學了學Java,後面就走上了程序猿的道路,今年四月僥倖去菊廠實習了一波(雖然沒學到東西)。css

秋招拿了幾個通常的offer(大佬們別見笑):去哪兒、海康威視、招銀網絡科技,最後簽約招銀(四川人,想天天下班吃火鍋)。前端

去年的時候比較迷茫,不知道自學到底須要準備什麼,在牛客上看了不少面經,很是受益,今天也分享一下供參考。本篇文章主要講講自學的歷程及找工做須要注意的地方。java

  • 自學經歷

題主去年四、5月開始決定學習Java,最開始主要看《Head First Java》(該書配有大量插圖及段子,入門佳選,入門切忌《Java編程思想》),而後看了大量的培訓班視頻學習了Java基礎知識,數據庫,Java經常使用框架(不少人看不起培訓班,培訓班的質量確實良莠不齊,可是因爲針對基礎薄弱的童鞋,因此老師講的特別清楚,以我校學子來看學着確定很是輕鬆,我通常開1.6倍到1.8倍的速度聽)。在8月份的時候開始接觸算法和數據結構,剛開始一頭霧水,這算法和數據結構到底學習誰先誰後啊,作題看不懂,看書不太好理解。這裏推薦《算法第四版》,配有大量的圖,讓你詳細理解數據結構設計的過程(入門切忌《算法導論》)。搞完這些以後,有幸加入了一個工做室,(工做室因爲剛成立事情很少後面也解散了,東西沒有學到太多可是認識了幾個朋友)在工做室期間,看了《程序員面試金典》、《劍指offer》,在牛客網上刷了劍指offer上的題(剛開始作題基本上作不了,先想而後看別人的解答仔細思考,再本身慢慢敲,作多了可能就有感受了)。後續又看了《高性能MySQL》(大部頭,有時間必看,時間少選看)、《深刻理解Java虛擬機》(必看,忘了就看,主要是垃圾回收算法、類加載那一塊,其它章節能夠選看)、《併發編程的藝術》(必看,主要了解一下鎖的原理)、《圖解HTTP》、《圖解TCP/IP》(日本人寫的書,結合大量插圖,看着很淺顯易懂)、《Java程序員面試寶典》(徹底的面試知識點羅列的書,評分較低,可是對於梳理知識點是很是適合的)、《數據結構與算法分析 Java語言描述》(以爲算法第四版少了點什麼的話能夠看這個補充)。這些書再結合大量的博客能夠基本覆蓋校招的知識點。mysql

在今年三月份時各大公司開始招聘實習生,題主水平有限去了華爲實習,方向也是Java軟開。因爲所在小組全棧式開發,在裏面耗費了大量時間學習了前端知識(前端依然菜的摳腳),因此總體感受上實習提高不大。實習了四個月以後,在八月底結束實習,因爲部門緣由通知無法轉正。當時內心很氣然並卵,以爲本身在裏面提高不大又耽誤了不少準備的時間,不如在圖書館看書(這也是個教訓,實習不必定有優點,若是實習打雜轉正概率小的話不如在學校夯實基礎準備校招)。所幸題主在華爲實習的時候每晚回去繼續看書,同時在實習時有幸認識北研所一位實習老哥,天天用內部聊天工具跟他交流Java基礎,基礎尚不算太差。(這裏想說一點的是,8月初不少公司就開始了內推招聘,如今內推特別氾濫,基本都要求筆試,筆試難度高於校招,沒有準備的話基本gg,但最好都投一下試試水,題主當時因爲在實習算法沒練好就網易過了筆試。。。)linux

ps:這裏說點我的感悟,當初在準備實習時,覺得刷完劍指offer、程序員面試金典,實習的題應該沒啥問題了。實際狀況是:實習題型基本全是動態規劃(尤爲是揹包問題)、圖搜索,若是早作準備,那徹底沒問題。而等到正式校招時你纔會動態規劃基本題型,這時候的題的難度又上升了,因此算法題得早作準備。c++

  • 校招經歷

校招在九月初的時候各大公司就開始集中網申了,須要提早作好簡歷。題主大概投了40多家公司(題主以爲必定要多投多練,不必定只投本身想去的公司,在面試初期能夠拿幾家公司先練練手,若是運氣好有幸拿了offer更佳。多投能讓你有更多的選擇,若是你只投了幾家公司,而後都掛了,那麼你後面基本只能投小公司了),整個九月上半月天天基本都在考試、投簡歷、作測評,印象最深的是有一天考了四個筆試,當晚投了一個公司簡歷,又作了倆小時新華三的測評,當時大概凌晨一點,整我的都噁心了。git

在面試初期好幾家面試都沒過,加上被菊廠拒了,內心仍是很不爽的,直到九月中旬去哪兒三面直接發了offer,當時有點柳暗花明的感受。後面又面了招銀、海康以內的好幾家公司,在拿到這幾家以後基本就沒找了(期間常常天天四五個面試邀請衝突,拒絕的感受仍是挺爽的,以爲本身以前作這麼多筆試仍是有效果的)程序員

下面講講幾個公司的面試問題:github

酷家樂(一家創業作家裝的創業公司,面試體驗很是好,但二面約的時間和一個現場面試衝突了沒面)web

電面:

  • 說說你印象最深的項目(異步隊列)
  • 在項目中遇到了什麼問題(數據庫的設計、異步隊列如何將事件傳入)
  • 說說對redis的理解(基於內存、I/O多路複用、單線程)
  • redis爲何要使用單線程(面試官補充主要是爲了原子性操做)
  • redis有哪些經常使用的數據結構,項目中你使用了什麼數據結構
  • 說一下spring的瞭解,有幾種注入方式,大家項目通常使用什麼進行注入
  • 項目的web.xml配置中dispatcherServlet和ContextListener是幹什麼的
  • mybatis使用狀況,瞭解哪些,用了哪些標籤
  • 項目中用到了什麼設計模式
  • 項目使用了什麼版本管理軟件,在github學習什麼開源項目沒有
  • 一道算法,有序數組裏面數字可重複,給定一個數,找出該數的範圍(第一次就想到了遍歷,後面想二分查找改進)
  • 漢諾塔問題

遠景能源(新能源的土豪公司,招偏執狂,感受面試官是有那麼點特點的,抓着一個點死問)

電面:

  • 類加載瞭解嗎?類加載步驟,雙親委派模型。若是我寫了一個java.lang.String類,怎麼進行加載的,怎麼跟原來的類進行區分的?
  • 垃圾回收機制瞭解嗎?哪些時間咱們須要對垃圾進行回收,若是我有一臺雙核4g的機器,我該如何分配新生代和老年代的大小?
  • 異常捕獲瞭解嗎?說說經常使用的,你在項目中用到了哪些類型的異常捕獲?若是碰到了空指針那些異常你會怎麼處理呢?
  • 多線程怎麼樣?說說你項目中用到的併發
  • 說說你最拿手的項目?說了redis異步隊列,就問同步和異步的概念,異步須要怎麼實現,須要回調函數嗎
  • 既然redis用到了緩存,那若是叫你本身實現一個緩存,你該如何實現?怎麼考慮緩存過時這些問題?

電信IT研發(電信的互聯網公司,有編制,待遇也不錯,前面二十分鐘基礎感受答的基本滾瓜爛熟的,問到架構不太會了)

  • 單點登陸怎麼作的,session共享,session和cookie的區別
  • Bootstrap啥類型的,jQuery瞭解狀況
  • JVM垃圾回收,新生代和老年代的垃圾回收,可達性分析
  • HashMap和Hashtable區別,HashMap添加的對象爲何要重寫equals和hashcode
  • 數據庫瞭解多少,事務acid,事務操做,怎麼加鎖,分佈式系統鎖,選舉
  • 微服務瞭解什麼,微服務治理,微服務之間通訊

58同城(面試最差的體驗,酒店超級差,悶的要命,安排還噁心,過去等了三小時,一面面的還不錯,二面沒問多少就掛了,好像都是c++崗,面試官不用Java)

一面:

  • 手寫快排
  • 數據庫引擎的區別,說說btree,手寫聯合查詢sql
  • HashMap瞭解多少說多少
  • wait()和sleep()
  • 事務舉例
  • 用過什麼nosql,說說redis,topk用什麼數據結構
  • 數據庫分表
  • 情景題,高併發訪問一個接口,如何檢測傳入字符串的類似度很高的?答了個布隆過濾器,說沾了邊

二面

  • 算法題給一個數組,如何把偶數放到左邊,奇數放到右邊?寫完後說當兩邊順序已經一致了,交換是否會出現問題,加個判斷
  • 說說數據庫,聚合函數了解嗎?
  • 網絡編程瞭解嗎,http請求如何區分請求頭和請求體?說了解一點nio的知識,nio指什麼,同步和非阻塞的概念是什麼?
  • 說下注冊的時候的檢測,多用戶怎麼斷定是否被註冊

去哪兒網(面試最好的體驗,第一天上午機試,下午就接到通知明天去面試。在一個去哪兒合做的小清新酒店面試的,全部面試官都特別好,遇到答不上來的會給你解答,三面完直接現場發offer,只要在十月三十一號以前把三方寄給他們就行,簡直不要太良心。當時一面完的時候我說我計算機網絡和操做系統方面不是特別好,一面面試官笑着說:沒事,路還長呢,你去等二面吧。待遇呢給的確實偏低,不過仍是由衷粉一波去哪兒)

一面:(30來分鐘)

  • 說一個本身比較深的項目 ,redis多消費者一塊兒取的時候若是隊列爲空你怎麼處理(答了CAS進行嘗試,超過失敗次數以後就進入睡眠,面試官說能夠不用這麼複雜~~爲空時直接進行睡眠就行)
  • 紙上手寫Springmvc DispatcherServlet的大體實現(大概10分鐘的樣子)
  • 數據庫瞭解嗎?彙集索引和非彙集索引的區別,存儲引擎的區別?主鍵使用不重複的字符串會出現什麼問題(插入的時候因爲字符串不能像自增加的id同樣連續,因此在磁盤上的位置不一樣)?
  • 說說HashMap吧,而後講了HashMap、ConcurrentHashMap 1.七、1.8的實現(講的很詳細,面試官以爲數據結構還不錯)
  • 而後問計算機網絡咋樣,我說很通常操做系統咋樣,我說很通常
  • 線程有哪些狀態,怎麼進行切換的。

二面:(40來分鐘)

  • 說一個比較深的項目,仍是說的異步隊列,問你這爲啥要用redis作異步隊列啊,我用線程池直接本身開一個隊列跟這有啥區別。扯了一堆,扯了redis I/O多路複用模型,最後不太滿意~~
  • 而後又手擼了一遍Springmvc
  • 而後問HashMap
  • 最後說你用了這麼多redis,叫你設計一個緩存,你該怎麼設計,get和set的時間複雜度怎麼算的(答了用LinkedHashMap實現,分析了一下LinkedHashMap可是也沒怎麼說清)

三面:(20來分鐘)

  • 談下人生,當場發了offer

順豐科技(最懵逼的一次面試,在品學樓一個教室面的,感受極不正規。一個估計三十來歲可是看着可能四十多歲的大叔面的,徹底get不到他的點)

一面:

  • 進去跟hr面同樣,談人生(你最喜歡看哪本書,你以爲在華爲學到了什麼),全程基本沒問技術,吹牛20分鐘說能夠走了

招銀網絡科技(招商銀行下面的子公司,之前叫融博,負面新聞較多,今年在成都剛成立分部,因爲是銀行,筆試和麪試都比較強調sql,面試偏重於數據庫和項目。現場面在軟件園那邊的招商銀行面的,當天直接三面,基本每一個人都有三面。面試的感受只有一個:不愧是銀行,太壕了。在七樓面試,層高竟然有五、6米高)

一面(電面15分鐘)

  • 說說對JVM的理解
  • Java程序初始化順序
  • 線程的建立
  • mysql主鍵和惟一索引的區別
  • 說說最近的項目
  • 如何實現session共享,用redis如何實現
  • 說說微服務,微服務之間如何管理

二面(現場面30多分鐘)

  • 看項目中有前端的,先問了下前端的css的選擇優先級
  • 手寫了一個查詢sql
  • 手寫了一個雙重檢查單例,問spring是怎麼實現單例的
  • springmvc的大體實現過程
  • 項目裏重要的地方
  • 說說微服務
  • 若是你不用redis來作隊列,本身寫你須要注意哪些方法
  • 數據庫存儲引擎的區別
  • 數據庫優化會嗎,說說經常使用的優化

三面(現場面30多分鐘)

  • 面試官看了簡歷以爲項目時間都不長,沒有太多興趣,全程帶笑,叫講項目的興趣點。講redis異步隊列,吹吹原理。說這沒啥用,你這單機redis還不如本身實現一個隊列速度還快些呢,你用Java寫一個相似的redis才厲害(當時有點懵逼)。而後笑着聽我吹完了springmvc一套,最後問我微服務治理知道不,我就扯了點服務註冊和發現的知識。

四面(現場面40多分鐘)

  • 女hr全程含沙射影帶笑的問,別人好像都只面了20來分鐘。。。因爲是轉行,問了我轉行緣由,學習、生活、教研室那些狀況。

OPPO(廣告部的工程師面的,面試官自我介紹時有個很是騷氣的花名,總體問的比較開放,二面聊着聊着就掛了)

筆試題比較簡單

一面(現場面20來分鐘):

  • 面試官首先自我介紹,而後我自我介紹。叫先當作績單,問我最喜歡哪一門課,這門課有什麼特色(我嗅到了hr面的氣息)
  • 而後說先看下筆試題吧,你以爲筆試難不(我回答說不難就看到面試官在紙上寫了個簡單,感受想教育我了),就問了http和https的區別,https加密的過程
  • Spring是什麼啊,爲何用Spring啊?Hibernate是什麼啊?Mybatis是什麼啊?假如我如今要分庫分表,我選哪一個框架?(這沒接觸過啊。。)你爲啥用Redis啊,Redis有哪些方法,Redis事務,Redis哪些方法有原子性,Redis和Kafka用什麼區別啊?
  • Java虛擬機垃圾回收方面的知識,生存區爲何要有兩個,空間擔保機制是啥
  • 一個32核,64g的linux服務器,硬盤是5TB,怎麼統計一個1TB的文件中一個限定中文名和英文名出現的次數(我簡單說了下使用流水線),問大概須要多久時間,估計一下,一分鐘兩分鐘仍是十分鐘。(總而言之面試的問題所有都至關的開放,讓你本身說)

二面(現場面20分鐘):

  • 簡單問了下項目,各個知識點都問了一點點。

海康威視(今年擴招特別多,面試相對偏水,面試官感受技術很不錯,問的問題徹底不按套路來)

一面(現場面20分鐘)

  • 面試官特別扯,進來就問後面還有幾個,咱們稍微快一點吧。而後看了個人簡歷,就問前端的類選擇器。
  • 而後問Spring Boot啥概念,有啥優點。接着問Spring Data JPA是啥,咋用(面試這麼久第一次問我這個)。我解釋了一些JPA是個規範,面試官問你這JPA用的啥版本啊(懵逼,倆月沒用了。。記不住了),而後又問JPA是哪一個組織規定的啊(懵逼的說了sun、spring、apache。。實際是EJB3.0小組)
  • 看你用了Redis,你這Redis咋用的,用過lua腳本沒有(這個真沒用過)
  • 面試官繼續問:你這Java虛擬機什麼掌握的咋樣啊(感受能夠開始表演了),結果我回答還不錯的以後,面試官問:說說一個class文件的具體組成結構啊,要細(懵逼,這部分沒怎麼看,就說裏面有魔數)。繼續問:虛擬機是起解釋做用嗎,有編譯做用嗎(一堆不是常規套路的問題問的很懵)。
  • 而後我說我模擬實現過Spring MVC,請讓我表演一哈。面試官看完簡歷以後說,那你就說說用了哪些設計模式(???這怎麼表演),回答了下以後又問我一個http的請求的組成結構,而後叫我說http的狀態碼,有多少說多少。(感受這個面試官就在觀察表情,看着你很會的那種就立刻換話題,徹底不按套路出牌。最後毆打完我以後說了句你基礎還能夠)

二面(現場面5分鐘)

  • hr小姐姐直接問想去哪,想要啥待遇

京東(投的成都崗結果北京的面試官面的,一面面試官以爲我還不錯,結果二面面試官在某天晚上深夜11點打電話來講面試一下,說本身還在公司裏面。我和他都很意外我投的成都崗,但倒是他們部門面試,估計特別缺人,問我能實習不,我說要作畢設不能實習就涼了。有點惋惜,留成都京東仍是很不錯的)

一面(50多分鐘)

  • Struts2和SpringMVC區別,SpringMVC有啥好處。SpringMVC的執行流程。一個網頁從輸入網址到顯示經歷什麼過程?Cookie和Session的概念。Mybatis和Hibernate的區別。異常處理知道不?詳細介紹了一下異常的分類並舉例
  • Redis有哪些數據結構。支持事務嗎?Redis分佈式鎖知道不?Redis能持久化嗎,持久化有哪些方式,有什麼特色?斷電會丟失數據嗎?誰更嚴重?
  • 數據庫熟悉不,數據庫引擎有哪些,InnoDB和MyIsam有啥區別,索引知道什麼,哈希索引和b+樹索引有啥特色,說說b樹和b+樹,畫畫b+樹的結構,b+樹最下面存的是數據嗎?下面的數據有序嗎?
  • 設計模式知道什麼?項目中用了什麼?回答用了策略模式,簡單說了說。寫個單例吧?寫了個雙重檢查的單例。
  • 數據結構學的咋樣?說說HashMap吧,對比說了HashMap和Hashtable,詳細說了HashMap,最後引到解決線程安全用ConcurrentHashMap.詳細說了ConcurrentHashMap1.七、1.8的put和size方法的區別和實現。其中問了synchronized底層實現知道不,就回答了個monitor,其它不太清楚。而後CAS是啥,解釋一下。
  • 有併發經驗沒有?回答說沒有,可是知道基本知識,看過併發編程的藝術。說說開啓線程的幾種方式吧?說說volatile?說說Happens-before原則?CountDownLatch知道不,解釋下,什麼狀況下使用?
  • 寫個二分查找吧,遞歸的
  • 作個智力題:8個球7個同樣重的,有一個偏重,一個天平,如何兩次找出偏重的小球
  • 給了一張紙,寫寫項目中如何保證代碼的魯棒性和可擴展性?
  • 你有哪些offer?而後介紹了下本身的部門。

二面(10來分鐘)

  • 簡單問了下簡歷上的項目,問能不能如今過來實習

總的來講。面到後面才發現了不少套路,可是好的公司已經基本結束了。因此建議提前準備,即便不能實習,也去投幾個公司練一練,每次把面試問題總結一下,發現裏面的套路,而後本身準備一套吹點。

  • 總結

關於轉行,之前評論宣稱學了幾個月Java隨便找好工做。在如今的面試難度來看,軟件也不是想象中那麼好找工做,一個崗位要的人多可是競爭的人也特別的多,並且,編程最大的驅動力仍是興趣,若是不敢興趣的話,這份工做不會長久。若是以爲本專業不太適合本身或者本身之後不太想去工廠那些地方上班,轉行請趁早,也不必定非的學計算機,能夠選本身方向相近的方向來自學。

若是想轉學計算機,也請早點明確本身的方向,而後在這個方向上深耕一下。不少概念性、全局性的知識,在短時間內可能本身是沒法理解的,須要一段時間、一個過程來理解(我的感受這是科班和非科班主要的差距),不少基礎性的知識可能會在你之後運用某個知識點時才察覺到原來是這樣。在自學了一段時間後,能夠開始接觸數據結構和算法及計算機的一些基礎知識,刷題要趁早,平時多看一些技術博客(CSDN、簡書、博客園),多逛逛GitHub、Stack Overflow,有機會的話儘可能找個工做室或者實習,若是實習不太靠譜,建議在校招前夯實本身的基礎。

關於校招,找工做運氣和實力是46開的,面試掛了不必定是本身不行,也頗有多是和麪試官不太聊的來。並不太過沮喪,面完一個反思總結面好下一個。簡歷上的東西力爭全都會,摸索一套屬於本身的吹點。面試官大部分狀況下不會問框架的基本使用,都喜歡問點底層的東西(面試造火箭,工做擰螺絲),因此會點基本的CRUD是沒有太多做用的,建議深挖底層,好比題主比較擅長吹Spring MVC、HashMap和ConcurrentHashMap1.7和1.8的源碼,面試的時候引導面試官,在一張紙上給他詳細畫本身的思路。好比項目中常常用的Redis,那最好知道Redis的底層的單線程模型和持久化的方式,再深刻一點本身模擬實現一個簡單的Redis能夠嗎(LRU算法,再本身想一想時間複雜度)。使用Mybatis,能夠本身運用JDBC模擬一下Mybatis的實現。這些好多都是題主校招後期才慢慢體會到的(然鵝工做都找完了)。

終於寫完了,排版亂見諒了,祝各位找到心儀的工做,但願本身順利畢業(求善良的導師放過)。

若是以爲有些幫助~歡迎加java學習交流羣,分享面試、求職、提高自個人方法,Q羣:282711949。

相關文章
相關標籤/搜索