2019年京東Java研發崗社招面經(面試經歷+真題總結+經驗分享)!


本篇先以日歷形式回顧秋招之路,方便各位參考某廠的處理進度;然后是總結歸納春秋招Java面試題庫;最后做個總結還有展望,開始新的征程~

面試經歷
京東面試真題
面試經驗分享
1.面試經歷

2018年的冬季特別的冷,無疑是程序員的寒冬,我也是年底裁員大潮裁下來的一名,(整個業務線都裁了 難受中~)但臨近年底了失業回家也不太好所以有投了幾份簡歷,其中投京東的一份,京東Java崗要求。

崗位描述:
1、參與京東金融保險核心業務系統底層架構設計及重構工作;
2、持續優化高並發場景下系統性能;
3、與保險公司接口對接及聯調;
4、保險產品智能推薦系統開發;
5、對接財務流程相關系統。
任職要求:
1、計算機相關專業本科以上學歷,邏輯思維能力強,有很強的責任心和主動性;
2、3年以上J2EE開發經驗,有互聯網開發經驗,JAVA基礎扎實,熟練運用設計模式;
3、熟練掌握Spring、Struts2、Ibatis等常用框架,了解機制;
4、熟悉分布式開發,熟悉常用SOA框架、多線程、網絡編程等;
5、熟悉常用數據庫及優化,熟悉常用緩存、NoSql技術;
6、熟悉Zookeeper、MQ等組件;
7、有高並發、大數據量系統開發及優化經驗者優先;
8、有互聯網金融尤其是保險業務開發經驗者優先。
 

2.京東面試真題

一面(主要是基礎面)

自我介紹,主要問了做了什么和擅長什么
@Autowired的實現原理
Bean的默認作用范圍是什么?其他的作用范圍?
索引是什么概念有什么作用?
MySQL里主要有哪些索引結構?哈希索引和B+樹索引比較?
說說Java線程池的原理?線程池有哪些?線程池工廠有哪些線程池類型,及其線程池參數是什么?
hashmap原理,處理哈希沖突用的哪種方法?
BIO、NIO、AIO的區別和聯系?
jvm內存模型jmm 知道的全講講
講講Java GC機制?
Java怎么進行垃圾回收的?什么對象會進老年代?
垃圾回收算法有哪些?為什么新生代使用復制算法?
HashMap的時間復雜度?HashMap中Hash沖突是怎么解決的?Java8中的HashMap有什么變化?
紅黑樹需要比較大小才能進行插入,是依據什么進行比較的?其他Hash沖突解決方式?
hash和B+樹的區別?分別應用於什么場景?哪個比較好?
二面(數據庫問的比較多)

自我介紹
為什么MyISAM查詢性能好?
說說事務特性(ACID)?
mysql數據庫默認存儲引擎,有什么優點
MySQL的事務隔離級別,分別解決什么問題。
SQL慢查詢的常見優化步驟是什么?
說下樂觀鎖,悲觀鎖(select for update),並寫出sql實現?
講講TCP協議的三次握手和四次揮手過程?
用到過哪些rpc框架?
Java web過濾器的生命周期?
三面(綜合面主要分布式及緩存)

自我介紹,講下項目!
加鎖有什么機制?
數據庫水平切分,垂直切分的設計思路和切分順序
Redis如何解決key沖突?
如何保證數據庫與redis緩存一致的
項目中消息隊列怎么用的?使用哪些具體業務場景?
JVM相關的分析工具有使用過哪些?具體的性能調優步驟嗎?
MySQL的慢sql優化一般如何來做?除此外還有什么方法優化?
線上的服務器監控指標,你認為哪些指標是最需要關注的?為什么?
soa和微服務的區別?
單機系統演變為分布式系統,會涉及到哪些技術的調整?請從前面負載到后端詳細描述。
設計一個秒殺系統?
3.面試經驗總結以及學習路線分享:

經驗總結:

面試盡量提前到,能早點面試,面試官也更願意給你通過(就像中國好聲音一樣,一開始都是瘋狂轉身)。
面試時調動你的幽默細胞,盡量把面試氣氛調得愉快一點,這樣面試官能更深的記住你。
說自己優點的時候一定輔以證據,不然面試官只會當作耳邊風
不會的問題不要強答,小心有坑,可以這樣說:“不好意思這個問題我不會,但是如果讓我來設計我會.......”
面試其實是一個雙向選擇,面試官在評估你的表現,同時由於面試官也代表公司,他的素質及提的問題也是你應該評估的方面,所以不要緊張。
使用幕布,在每次面試前將自己總結的知識過一遍。我幕布上寫了幾萬字的筆記,每次面試都拿出來看一遍,所以面試問到的基礎我基本都能應答入流。
學習路線:

大部分職業都是需要有成長體系,才能讓人有奮發向上的追求。架構師就是程序員這個群體成長道路上往往會出現的一個重要節點。每個好架構師都是一位出色的程序員。然而好的程序員進階為架構師,並不容易。

對於有一定后台研發經驗(尤其是5年以上經驗)的程序員們來說,成為架構師的渴望更加強烈,因此會花更多時間學習,提升架構技能,但常常由於客觀條件限制,面臨着不少難點:
接觸不到一線實戰架構技術,尤其是有一定的技術深度和難度架構技術。
不了解核心技術點所處的具體背景是什么?
同時,又迫切需要掌握:業界目前主流干貨技術 + 前沿技術,互聯網核心技術硬技能 + 核心軟技能,掌握架構技術的本質,知其然更知其所以然,架構築基篇,深入內核,直擊故障,拒絕蒙圈。
所以你需要一個明確的學習路線----這是一個典型的程序員的成長過程:

使用Java---->深入理解Java積累經驗------>獨立設計分析能力------>獨當一面的多面手!

因此,必須學習:

一、開源框架解析

程序員每天都和代碼打交道。經過數年的基礎教育和職業培訓,大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。但是,會讀代碼的並不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。這也造成了很多錯誤看源碼的方式。

那要如何正確的分析源碼呢? 我們的目標應該放在最常用的框架上面:

 

 

二、架構師築基

從架構設計,到應用層調優,再深入了解底層原理,扎實的Java基本功才能讓自己變為掃地神僧:內存模型,並發模式,線程模型,鎖細節等等

 

三、高性能架構

我們不僅僅對項目要運籌帷幄,還要能解決一切性能問題。只有深入學習JVM底層原理,Mysql底層優化以及Tomcat調優,才能達到知其然,知其所以然的效果。除了性能優化之外,也能提供通用的常見思路以及方案選型的考慮點,幫助大家培養在方案選型時的意識、思維以及做各種權衡的能力。

 

四、微服務架構

關於微服務架構的取舍

在合適的項目,合適的團隊,采用微服務架構收益會大於成本。微服務架構有很多吸引人的地方,但在擁抱微服務之前,也需要認清它所帶來的挑戰。需要避免為了“微服務”而“微服務”。微服務架構引入策略 – 對傳統企業而言,開始時可以考慮引入部分合適的微服務架構原則對已有系統進行改造或新建微服務應用,逐步探索及積累微服務架構經驗,而非全盤實施微服務架構。

 

五、團隊協作

開發工具工程化

通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。程序員的戰斗,往往不是一個人的戰斗,我們如何在一個平台下高效的去重,進行代碼review,對功能進行調整,debug,做到在統一的規划下步步為營,混亂的堆代碼的過程中找到自己的記錄。這一切都依賴於有效的工具。

 

六、B2C項目實戰

項目實戰

要想立足於互聯網公司,且能在互聯網浪潮中不被淹沒,對於項目的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等於獲得多少的回報。看似簡單的一個項目需求圖譜,其中的底層原理,實現原理又能知道多少?你搭建一個完整的B2C項目平台到底需要多少知識?這一切都是需要我們考量的。

 

看完我分享的這些學習路線你是否會覺得自己的技術有待加強,思維不應該只停留在表面呢。

當然我這里也為想提升自己技術的同學准備了一份架構進階視頻資料和上面的高清思維導圖。

 

資料獲取方式:請加JAVA架構技術交流群:714827309
點擊鏈接加入群聊【JAVA高級架構技術交流】:https://jq.qq.com/?_wv=1027&k=51OhGuo
---------------------
作者:大型互聯網架構技術v
來源:CSDN
原文:https://blog.csdn.net/qq_41790443/article/details/88712353
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM