面試題你瞭解多少?阿里的Netty到底又有多牛逼?

面試題你瞭解多少?阿里的Netty到底又有多牛逼?
前言
Netty 是一個可以快速開發網絡應用程序的 NIO 框架,它大大簡化了 TCP 或者 UDP 服務器的網絡編程。Netty 的簡易和快速開發並不意味着由它開發的程序將失去可維護性或者存在性能問題,它的設計參考了許多協議的實現,比如 FTP,SMTP,HTTP 和各種二進制和基於文本的傳統協議,因此 Netty 成功的實現了兼顧快速開發,性能,穩定性,靈活性爲一體,不需要爲了考慮一方面原因而妥協其他方面。Netty 的應用還是比較廣泛的,比如阿里巴巴開源的 Dubbo 和 Sofa-Bolt 框架底層網絡通訊都是基於 Netty 來實現的。

通過本文所說到的關於netty的學習問題和麪試問題來說說如何學習高性能netty框架及一些重要知識點!

Netty基礎相關問題
講講Netty的特點?

BIO、NIO和AIO的區別?

NIO的組成是什麼?

如何使用 Java NIO 搭建簡單的客戶端與服務端實現網絡通訊?

如何使用 Netty 搭建簡單的客戶端與服務端實現網絡通訊?

講講Netty 底層操作與 Java NIO 操作對應關係?

Channel 與 Socket是什麼關係,Channel 與 EventLoop是什麼關係,Channel 與 ChannelPipeline是什麼關係?

EventLoop與EventLoopGroup 是什麼關係?

說說Netty 中幾個重要的對象是什麼,它們之間的關係是什麼?

Netty 的線程模型是什麼?

粘包與半包和分隔符相關問題
什麼是粘包與半包問題?

粘包與半包爲何會出現?

如何避免粘包與半包問題?

如何使用包定長 FixedLengthFrameDecoder 解決粘包與半包問題?原理是什麼?

如何使用包分隔符 DelimiterBasedFrameDecoder 解決粘包與半包問題?原理是什麼?

Dubbo 在使用 Netty 作爲網絡通訊時候是如何避免粘包與半包問題?

Netty框架本身存在粘包半包問題?

什麼時候需要考慮粘包與半包問題?

WebSocket 協議開發相關問題
講講如何實現 WebSocket 長連接?

講講WebSocket 幀結構的理解?

瀏覽器、服務器對 WebSocket 的支持情況

如何使用 WebSocket 接收和發送廣本信息?

如何使用 WebSocket 接收和發送二進制信息?

Netty源碼分析相關問題
服務端如何進行初始化?

何時接受客戶端請求?

何時註冊接受 Socket 並註冊到對應的 EventLoop 管理的 Selector ?

客戶端如何進行初始化?

何時創建的 DefaultChannelPipeline ?

講講Netty的零拷貝?

如何正確系統的學習Netty框架
要理解框架的底層的原理,要掌握的就是最常用的原理。框架就是輔助我們開發的已經完成的一部分代碼,幫助我們實現了一部分的功能,我們主要掌握的其實就是框架的內部原理,也就是框架給我們規定的一些內部的規定,有了這些規定就可以高效的開發我們的代碼,按照規定辦事效率會有很大的提高。其實很多的時候我們並沒有注意這些東西,一個功能可以用很多的方法來實現,但是我們按照框架給我們規定的規則去實現的話應該是我們比較正確的一種選擇。因此分享一份系統學習Netty框架的知識思維導圖給有需要的朋友,希望能對你們有所幫助!

最後針對思維導圖,小編根據多年的經驗也整理了一套視頻資料

(包括Kafka、Mysql、Tomcat、Docker、MyBatis、Nginx、Netty、Dubbo、Redis、Spring cloud、分佈式、高併發、性能調優、微服務)

資料領取方式:加QQ羣159976092,進羣既領取資料!

點擊鏈接加入羣聊【Java架構 專業交流學習】:https://jq.qq.com/?_wv=1027&k=544O16F

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章