7年經驗社招終於上岸Java開發!

語言: CN / TW / HK

分享一位讀者的面試經歷,這位朋友工作已經八年,之前一直從事 PHP 開發工作,微信公眾號開發、保險行業都做過。2 月 21 號的時候正式提交離職申請,3.1 號開始學習 Java。

4 月 18 號的時候,成功拿到了自己的第一個 Java 後端開發 Offer。

下面是正文。

本人今天剛剛收到 offer 了,所以特別來分享一下我面試中遇到的問題以及面試需要注意的事項,絕對有用!!!

第一家公司

第一家公司公司主要是一個負責供應鏈採購的公司,面試的部分問題如下:

  1. 先做個自我介紹。
  2. 現有一多檔案上傳需求,要求在 5M 頻寬的伺服器上上傳超過 100 張圖片,並且保證使用者可以儘快看到上傳結果。
  3. springcloud 中 A 服務要呼叫 B 服務,同時需要將 token 傳入 B 服務中,請問使用什麼方式傳遞?
  4. 講一下你現在做的系統的業務邏輯,用到了什麼技術?
  5. mybatis 分頁是怎麼做的?
  6. 事務你用過嗎?
  7. 用過哪些工具類?處理時間和 JSON 你是用的什麼工具?
  8. MongoDB 中針對於百萬級別的資料,如何優化查詢?如何分頁?如何建立索引?做過資料統計那麼統計的精度是每天還是每個月還是每年?如果去動態查詢這些統計資料?

總結 :這家公司比較小,主要是目前需要一個技術快速上手做專案,我面試的時候都回答的不錯,本以為會當天收到通知,結果過了兩天才收到通知而且還降低了我的薪資,所以果斷選擇放棄。這個公司主要面試的就是業務能力,比較看重專案經驗,底層原理問的比較少,接下來這家公司就是重頭戲了。

第二家公司

第二家公司是一個集團,先有筆試再有面試,部分面試問題如下:

  1. 先做一個 10 分鐘左右的簡短介紹,包括幾個方面:你工作的經驗,你在這些工作中你的優勢是什麼?你擅長什麼?
  2. mybatis 中的#{}和\${}有什麼區別?預設使用哪個?為什麼這麼使用?
  3. 介紹一下 Spring,說一下 Spring 常用註解的用途。
  4. 說一下 SpringAOP 的概念,實際運用場景。
  5. 現在有個物件 user,通過引數傳遞到其他方法中去,然後 user 的 name 改變了,那麼傳遞的這個物件是值傳遞還是引用傳遞,為什麼?順便解釋一下值傳遞和引用傳遞。
  6. 專案中是如何使用事務的?
  7. 專案中用過多執行緒嗎?如何保證多執行緒執行緒安全的?具體你做了哪些操作來實現的?
  8. 你之前做過 PHP?你講一下 PHP 和 Java 的區別呢?

總結 :這家公司招聘的技術難讀明細比上一家公司更大了,很多問題不僅需要你回答出來,還得要了解底層原理。我當時因為回答的是業務型開發,所以就中斷了面試了,因為他們想找架構型的開發。

第三家公司

第三家公司也是一個小公司,最終收穫 offer,部分面試問題如下:

  1. 先做一個自我介紹(這是必須的)
  2. 說一下你之前做專案的一個業務流程(詳細業務流程)
  3. 這個專案你使用了多執行緒嗎?你是如何實現的?
  4. 你說多執行緒這塊你做了效能優化,你能說一下優化的方式和優化的結果嗎?
  5. 事務使用過嗎?事務和鎖一起使用會不會有什麼問題?是先使用鎖還是先使用事務?
  6. springcloud 的註冊服務使用的什麼?除了這個還有其他的瞭解嗎?
  7. 訊息佇列用過嗎?你大致講一下。

總結 :這家公司主要是看中的專案能力,就是你在實際專案中遇到的實際問題要如何解決,之前兩家也問過這些問題,但是當時自己回答的太糟糕了所以後面總結了一下,然後就順利答出來了。

參考答案

你可以在下面兩份參考資料上面大部分問題的參考答案:

總結

最後再總結一下,做自己介紹的時候,先介紹自己的開發經驗,然後介紹自己上一家公司,最後介紹自己的拿手專案。面試的時候大多數會問專案相關的問題,所以我們在面試之前一定要提前準備好專案相關的業務邏輯,哪怕你只做了一小塊功能,你也要提前去了解整個專案的業務流程,並且能說出一二來。還有就是關於技術有兩個方向,一個是底層邏輯的實現,另一個就是這個技術在專案中的實際運用。這些不需要我們真的遇到,但是你一定要提前假設遇到這些問題如何處理。總結一句話就是考驗應聘者處理問題的能力和學習能力。