JAVA面試匯總

    1. IOC控制反轉(zhuǎn)的優(yōu)點?
      將對象的創(chuàng)建權(quán)交付于IOC容器進行托管役纹,使得具有如下優(yōu)點
      • a. 統(tǒng)一管理;
      • b. 以工廠模式對用戶提供對象暇唾,羅列對象組供用戶進行挑選促脉,使得邏輯更清晰辰斋;
      • c. 不需要用戶直接new對象,可以在獲取對象的時候做些額外的操作(getBean()方法進行);
    1. dubbo 提供者和dubbo的消費者是如何進行通信的瘸味,dubbo提供者數(shù)據(jù)變更宫仗,消費者如何感知?
      • a. Dubbo啟動時旁仿,Consumer和Provider都會把自身的URL格式化為字符串藕夫,然后注冊到zookeeper相應(yīng)節(jié)點下,作為一個臨時節(jié)點枯冈,當(dāng)連斷開時汁胆,節(jié)點被刪除;
      • b. Consumer在啟動時霜幼,不僅僅會注冊自身到 …/consumers/目錄下嫩码,同時還會訂閱…/providers目錄,實時獲取其上Provider的URL字符串信息罪既。
      • c. Provider和Consumer向Zookeeper注冊臨時節(jié)點铸题,當(dāng)連接斷開時刪除相應(yīng)的注冊節(jié)點。
      • d. Consumer訂閱Providers節(jié)點的子節(jié)點琢感,實時感知Provider的變化情況丢间,實時同步自身的Invoker對象,保證RPC的可用性驹针。


        image.png
    1. CGLIB和JDK提供的InvocationHandler代理對象生成對應(yīng)代理情況是在哪個步驟中完成的烘挫?
      CGLIB是在代碼運行時對字節(jié)碼進行修改和動態(tài)生成,繼承子類覆寫目標(biāo)類方法柬甥,JDK提供的則需要有接口類作為前提饮六,在運行時動態(tài)生成。
  • 4.JWT如何在token上做對WEB服務(wù)器無狀態(tài)處理苛蒲?
    JWT的token分為三部分:header卤橄、payload、signature臂外,signature對header和payload數(shù)據(jù)進行簽名窟扑。

  • 5.1 MYSQL的協(xié)議格式?

總體流程

===========傳輸層協(xié)議================
1. 三次握手建立 TCP 連接漏健。
===========應(yīng)用層協(xié)議================
2. 建立 MySQL 連接嚎货,也就是認證階段。
    服務(wù)端 -> 客戶端:發(fā)送握手初始化包 (Handshake Initialization Packet)蔫浆。
    客戶端 -> 服務(wù)端:發(fā)送驗證包 (Client Authentication Packet)殖属。
    服務(wù)端 -> 客戶端:認證結(jié)果消息。
 
3. 認證通過之后克懊,客戶端開始與服務(wù)端之間交互忱辅,也就是命令執(zhí)行階段七蜘。
    客戶端 -> 服務(wù)端:發(fā)送命令包 (Command Packet)谭溉。
    服務(wù)端 -> 客戶端:發(fā)送回應(yīng)包 (OK Packet, or Error Packet, or Result Set Packet)墙懂。
 
4. 斷開 MySQL 連接。
    客戶端 -> 服務(wù)器:發(fā)送退出命令包扮念。
 ==========傳輸層協(xié)議==================
5. 四次握手斷開 TCP 連接

服務(wù)端發(fā)送至客戶端的協(xié)議格式:

image.png

協(xié)議版本號:服務(wù)端所使用的mysql協(xié)議的版本號
服務(wù)器線程ID:服務(wù)端為此客戶端所創(chuàng)建的線程的ID
挑戰(zhàn)隨機數(shù):MySQL數(shù)據(jù)庫用戶認證采用的是挑戰(zhàn)/應(yīng)答的方式损搬,服務(wù)器生成該挑戰(zhàn)數(shù)并發(fā)送給客戶端,由客戶端進行處理并返回相應(yīng)結(jié)果柜与,然后服務(wù)器檢查是否與預(yù)期的結(jié)果相同巧勤,從而完成用戶認證的過程。
服務(wù)器權(quán)能標(biāo)志:用于與客戶端協(xié)商通訊方式

客戶端發(fā)送至服務(wù)器端:

image.png

客戶端權(quán)能標(biāo)志:客戶端收到服務(wù)器發(fā)來的初始化報文后弄匕,會對服務(wù)器發(fā)送的權(quán)能標(biāo)志進行修改颅悉,保留自身所支持的功能,然后將權(quán)能標(biāo)返回給服務(wù)器迁匠,從而保證服務(wù)器與客戶端通訊的兼容性剩瓶。
消息長度:客戶端發(fā)送請求時所支持的最大消息長度值
字符編碼表示通訊過程中使用的字符編碼,與服務(wù)器在認證報文中發(fā)送的相同
用戶名:客戶端登陸的用戶名
挑戰(zhàn)認證數(shù)據(jù):客戶端用戶密碼使用服務(wù)器發(fā)送的挑戰(zhàn)隨機數(shù)進行加密后城丧,生成挑戰(zhàn)認證數(shù)據(jù)延曙,返回給服務(wù)器用于服務(wù)端的認證

認證流程:

服務(wù)器發(fā)送隨機字符串 (scramble) 給客戶端。
客戶端作如下計算亡哄,然后客戶端將 token 發(fā)送給服務(wù)端枝缔。

stage1_hash = SHA1(明文密碼)

token = SHA1(scramble + SHA1(stage1_hash)) XOR stage1_hash

服務(wù)端作如下計算,比對 SHA1(stage1_hash) 和 mysql.user.password 是否相同蚊惯。

stage1_hash = token XOR SHA1(scramble + mysql.user.password)
  • 5.2 MYSQL的innodb引擎重要的幾個參數(shù)優(yōu)化愿卸?
    內(nèi)存優(yōu)化參數(shù):

    • innodb_buffer_pool_size:主要緩存innodb表的索引,數(shù)據(jù)截型,插入數(shù)據(jù)時的緩沖擦酌,建議設(shè)置成內(nèi)存的60%~70%。
    • innodb_additional_mem_pool_size:存放Innodb的內(nèi)部目錄菠劝,這個值不用分配太大赊舶,系統(tǒng)可以自動調(diào)。通常設(shè)置16M夠用了赶诊,如果表比較多笼平,可以適當(dāng)?shù)脑龃蟆?br> 日志優(yōu)化參數(shù)
    • innodb_log_file_size:這個值分配的大小和數(shù)據(jù)庫的寫入速度,事務(wù)大小舔痪,異常重啟后的恢復(fù)有很大的關(guān)系寓调。一般取256M可以兼顧性能和recovery的速度。
    • innodb_log_buffer_size:事務(wù)在內(nèi)存中的緩沖锄码,也就是日志緩沖區(qū)的大小夺英, 默認設(shè)置即可晌涕,具有大量事務(wù)的可以考慮設(shè)置為16M
    • innodb_flush_logs_at_trx_commit:這個參數(shù)只有3個值(0:每秒寫入,1每次提交寫入痛悯,2事務(wù)提交會觸發(fā)log buffer 到log file的刷新余黎,但并不會觸發(fā)磁盤文件系統(tǒng)到磁盤的同步。此外载萌,每秒會有一次文件系統(tǒng)到磁盤同步操作).默認為1惧财,性能更高的可以設(shè)置為0或是2,這樣可以適當(dāng)?shù)臏p少磁盤IO(但會丟失一秒鐘的事務(wù)扭仁。)垮衷,游戲庫的MySQL建議設(shè)置為0。主庫請不要更改了乖坠。
      IO分配
    • innodb_file_per_table:使每個Innodb的表搀突,有自已獨立的表空間。如刪除文件后可以回收那部分空間熊泵。默認是關(guān)閉的仰迁,建議打開(innodb_file_per_table=1)
    • innodb_open_files:限制Innodb能打開的表的數(shù)據(jù)。
    • innodb_data_home_dir:放置表空間數(shù)據(jù)的目錄戈次,默認在mysql的數(shù)據(jù)目錄轩勘,設(shè)置到和MySQL安裝文件不同的分區(qū)可以提高性能。
  • 6.zookeeper如何保證數(shù)據(jù)一致性怯邪?
    Paxos算法(參考后續(xù)文章《Paxos算法》)比較復(fù)雜绊寻,為了簡化實現(xiàn),Zookeeper使用了一種叫ZAB(ZooKeeper Atomic
    Broadcast悬秉,ZooKeeper原子消息廣播協(xié)議)的算法協(xié)議澄步。基于ZAB算法和泌,Zookeeper集群保證數(shù)據(jù)更新的一致性村缸,并且通過集群方式保證了Zookeeper系統(tǒng)高可用。但是Zookeeper系統(tǒng)中所有服務(wù)器都存儲相同的數(shù)據(jù)武氓,也就是數(shù)據(jù)沒有分片存儲梯皿,因此不滿足分區(qū)耐受性。
    因為Zookeeper系統(tǒng)的多臺服務(wù)器存儲相同的數(shù)據(jù)并且每次數(shù)據(jù)更新都要所有服務(wù)器投票表決县恕, 所以和一般的分布式系統(tǒng)相反东羹,Zookeeper集群的性能會隨著服務(wù)器數(shù)量的增加而下降。

  • 7.kafka如何保證數(shù)據(jù)一致性及重試不出現(xiàn)數(shù)據(jù)重復(fù)機制忠烛、kafka的partition的幾種優(yōu)點属提?
    參考后續(xù)文章《kafka基礎(chǔ)原理》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冤议,更是在濱河造成了極大的恐慌斟薇,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恕酸,死亡現(xiàn)場離奇詭異堪滨,居然都是意外死亡,警方通過查閱死者的電腦和手機尸疆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門椿猎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惶岭,“玉大人寿弱,你說我怎么就攤上這事“丛睿” “怎么了症革?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸯旁。 經(jīng)常有香客問我噪矛,道長,這世上最難降的妖魔是什么铺罢? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任艇挨,我火速辦了婚禮,結(jié)果婚禮上韭赘,老公的妹妹穿的比我還像新娘缩滨。我一直安慰自己,他們只是感情好泉瞻,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布脉漏。 她就那樣靜靜地躺著,像睡著了一般袖牙。 火紅的嫁衣襯著肌膚如雪侧巨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天鞭达,我揣著相機與錄音司忱,去河邊找鬼。 笑死畴蹭,一個胖子當(dāng)著我的面吹牛坦仍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撮胧,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼桨踪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芹啥?” 一聲冷哼從身側(cè)響起锻离,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤铺峭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汽纠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卫键,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年虱朵,在試婚紗的時候發(fā)現(xiàn)自己被綠了莉炉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡碴犬,死狀恐怖絮宁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情服协,我是刑警寧澤绍昂,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站偿荷,受9級特大地震影響窘游,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜跳纳,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一忍饰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寺庄,春花似錦艾蓝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逛拱,卻和暖如春敌厘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朽合。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工俱两, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曹步。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓宪彩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讲婚。 傳聞我的和親對象是個殘疾皇子尿孔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344