前言
微架構的出現,很好地適應了這個時代對快速發展變化的要求。它不再提倡一體化的項目設計,而是對項目進行有效的“業務區”(可以簡單理解為不同的子系統〉劃分,并利用合理的技術對業務性能做出提升和改善,同時又極大地簡化了配置文件的使用與 profile配置。總而言之,微架構是開發之中看起來非常簡單的一種實現技術,但簡單的背后考究的卻是開發者對于開源技術的熟練程度。
SpringBoot 作為一種Web整合開發框架,很好地解決了Web程序的編寫困難,可以更簡單、高效地實現 MVC 設計模式。更為重要的是,它可以輕松地整合當前各類主流的開發項目,如消息組件、SQL數據庫、NoSQL數據庫、郵件服務等,因此能極大地縮短項目的開發周期,更快地響應客戶的需求變更。SpringCloud 作為SpringBoot 的延續,可以基于Restful流行架構實現RPC業務中心的搭建,可以基于消息組件實現遠程配置動態的抓取,還可以與Docker相結合,采用虛擬化手段實現便捷的云服務管理。可以說,微架構的出現與云時代是密不可分的。
京東一面涼經
- object的方法,7大方法
- synchronized方法講解
- synchronized方法實現原理
- volatile關鍵字的原理
- 鎖的分類
- 偏向鎖講解
- NoClassDefFoundError和ClassNotFoundException的區別
- 追問,ClassNotFoundException是不是只發生在編譯時,運行時可不可以
- 類加載機 制
- redis過期策略及內存淘汰機制
- mysql的索引種類4種
- Innodb和myIsam的區別
- Innodb的索引結構
- B+樹的優缺點
- 海量數據的索引有什么影響
- 選擇聯合索引還是多索引,最左前綴的規則
- CAP理論的關系
- 見過哪些系統,保證兩個犧牲一個的
- 一致性Hash
算法題:
給一個正數N,求這個N的所有的因子分解;
N = 12;
Ans = {12},{6,2},{3,4},{3,2,2}
解法:遞歸
京東二面涼經
- 自我介紹+項目
- 項目中的異步怎么做的?具體說說
- 用戶密碼的安全性怎么保證的?
- mybatis底層怎么實現的?(不會)
- tcp中擁塞控制和流量控制有什么區別?
- 流量控制具體怎么控制的?
- 擁塞控制具體的算法怎么樣的?
- Java中的鎖有用到哪些?
- 說說syn、re和cas的區別?
- cas具體怎么現實的?
- 進程和線程的區別?具體講下什么情況下是多進程,什么情況下是多線程?
- java中的map有哪些?各個簡單介紹下
- hashmap的底層數據結構是怎么樣的?
- 有沒有map是按key的值排序的?底層怎么現實的?
- 類的加載流程?具體每一步做了什么?
- Spring Bean 的作用域。
兩道算法題
1、有序二維數組找target,找到返回坐標,找不到返回[-1, -1];
2、樹的根節點到葉子節點的所有路徑和。
失敗乃成功之母
以上就是第一次京東面試的全部內容了,一面二面是接著面的,時長2個小時,經歷下來,就一個感受:京東的面試太硬核了,就是會一直問到底,看你到底掌握到什么程度,如果掌握的不深刻很容易就被問出來了。二面完之后就讓粉絲回家了,PASS的也是很含蓄了。
但是你以為這樣就結束了?當然沒有!
據我所知京東跳動投遞簡歷是有三個月的鎖定時間
,所以這次失敗了不代表沒有下次。
然后就總結了經驗并為下次面試作準備并開始了三個月的閉關之旅。
1. 惡補JAVA并發底層的知識,尤其是synchronized,volatile和hashmap的
2. 刷算法題,需要詳細復習下數據結構與算法的知識
3. 了解高并發下的問題解決方案與性能調優
4. 閱讀是spring框架的源碼,提升自己的競爭優勢
重整旗鼓再戰京東
這次面試官果然上來就直接問:看你6月份也來面過京東但沒有通過,你覺得你現在的優勢在哪里呢??
回答:因為上次來貴公司面試沒有準備充分,同時在之后認識到自己有些技術方面確實明顯不足,所以回去經過系統的學習,我覺得這次能夠勝任這份工作!
然后面試官看著他笑了笑(應該是欣賞的意思吧),然后第二次面試就正式開始了!
因為第二次面試與第一次相差不大,第二次面試內容通過知識點的分類給大家分享出來。
JVM
- 什么樣的垃圾才被回收?
- 如何利用JFR和JMC監控Java程序?
- 解釋下Java虛擬機內存模型
- JVM垃圾收集機制
- 什么樣的對象會進入老年代
- 講一下OOM與調優
MySQL
- 說說自己對于 MySQL 常見的兩種存儲引擎:MyISAM與InnoDB的理解?
- 數據庫索引了解嗎?
- 為什么索引能提高查詢速度?
- Mysql如何為表字段添加索引?
- 對于大表的常見優化手段說一下?
spring
可能是簡歷上專門寫了閱讀過源碼,所以這次問spring的比較多
- Spring 框架中都用到了哪些設計模式?
- Spring事務的實現方式和實現原理
- Bean Factory和ApplicationContext有什么區別?
- 什么是Spring中的依賴注入?
- IOC(依賴注入)有哪些不同類型?
- 解釋Spring Bean的生命周期?
- 有哪些重要的bean生命周期方法?你能重寫它們嗎?
分布式
- 為什么要用 redis緩存?
- 為什么要用 redis 而不用 map/guava 做緩存?
- redis 和 memcached 的區別?
- redis 常見數據結構以及使用場景分析?(String,Hash,List,Set,Sorted Set)
- redis 設置過期時間。
- redis 內存淘汰機制(MySQL里有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
- redis 持久化機制(怎么保證 redis 掛掉之后再重啟數據可以進行恢復)?
- redis 事務。
- 緩存雪崩和緩存穿透問題解決方案。
- 如何解決 Redis 的并發競爭 Key 問題。
- 如何保證緩存與數據庫雙寫時的數據一致性?
- 什么是消息隊列?為什么要用消息隊列?
第二次面試總結
第二次去京東面試因為準備的時間比較長,所以面試問題基本都在意料之中,最終也成功拿下了京東的offer,可喜可賀!
總結
總的來說,面試是有套路的,一面基礎,二面架構,三面個人。
最后,小編這里收集整理了一些資料,其中包括面試題(含答案)、書籍、視頻等。希望也能幫助想進大廠的朋友,點擊這里即可免費獲取
TbFJ1cmN1R2dB)**
[外鏈圖片轉存中…(img-gmaJq9Ej-1622625725948)]
[外鏈圖片轉存中…(img-A5GHyqXo-1622625725951)]
[外鏈圖片轉存中…(img-VI7SlmVM-1622625725953)]