Java面試梳理知識點

Java面試梳理知識點

前言


起的名字如此高大上就是爲了嚇唬人啊,實際上就是社區裏的面經題目,我拿出來回答就是了。不過會持續更新一段時間,各位觀衆姥爺也希望能夠指正整理的錯誤,小咲謝謝各位了。

正文


【基礎】Java高精度瞭解過嗎?Float、double爲什麼不保留多位小數?
1.Java高精度-》Big decimal內部保留很多位小數;入參推薦使用字符串傳值;

【數據結構】二叉樹相關知識
2.二叉樹-》平衡二叉樹、滿二叉樹、完全二叉樹-》二叉搜索樹(左孩子小於根結點小於右孩子)解決問題:(例如大於3的所有值)-》平衡二叉搜索樹平衡因子不大於1(左右深度之差不大於1)解決問題:時間複雜度穩定在O(log(n)),這裏還需要知道AVL樹插入刪除時間複雜度還是不夠優化-》引入了紅黑樹,取插入刪除與搜索的平衡點
特別的:數據量大的時候,磁盤會用B樹,處理大數據MySQL索引用的則是B+樹,B+樹相比B-樹的特點:

  1. 數據只出現在葉子結點,B-樹每個結點都包含了數據;
  2. 葉子結點之間用指針連接; (兄弟之間來相連,這樣其實優化了大於某個值的情況)
  3. B+樹的高度一般是3;
    B+樹就是可以取範圍性的值通過第一層就可以基本鎖定範圍
    推薦博客:https://www.jianshu.com/p/71700a464e97
    畫的很好,小咲畫圖水平實在是不夠啊,(_)

【擴展】Nginx知多少
3.瞭解Nginx嗎?
小咲配置Nginx目的是在下載live2d後,想要運行到端口號看看效果的,跟隨Up主的步伐搭live2d花了好多時間,爲什麼呢?當時的問題就是Up主推薦的GitHub原來的主人將文件進行了調整,有些文件缺少了,這就使得小咲被迫要學習如何從網頁中摘取兩個js文件,好像叫什麼minXXXX.js。還要自己分析推理目錄結構,好的我其實是會推理目錄結構的,說多了都是淚啊,整整一個下午,太年輕了,嗯嗯。
首先知道前提:
正向代理與反向代理的區別:正向代理相對於目標服務器而言隱藏了客戶端的真實IP地址,因爲對於目標服務器而言所有請求都是從正向代理服務器發出的,正向代理主要是爲了突破網絡訪問限制,比如科學上網,還有就是隱藏客戶端IP地址。反向代理對於客戶端而言隱藏了目標服務器IP地址,只需要知道代理服務器地址就能訪問到目標服務器的資源。其主功能是可以做負載均衡和安全防護。不過,不管正向代理還是反向代理,都能加快客戶端的訪問速度,因爲nginx服務器是一個高性能的http web服務器,其能夠對代理中的數據作緩衝。
然後理解負載均衡,說白了就是反向代理以後,均衡分配數據請求,
理解動靜分離,說報了動態資源,靜態資源分開管理
推薦博客寫的太好了:https://blog.csdn.net/qq_40036754/article/details/102463099

4、JVM GC瞭解嗎?
(1)reference count 不能解決循環引用的問題;root searching 根可達算法(main方法裏面直接能訪問的對象)
(2)三種標記算法
Mark-Sweep 標記清除 特點:碎片化,效率比較高
copying 把內存一分爲二 特點:效率特別高,佔空間
Mark-Compact 標記壓縮,有用的壓縮到最前面 特點:不會產生碎片,方便對象分配,效率比較低
(3)堆內存邏輯分區 不同垃圾回收器不同的模型,多數使用分代模型,年輕代(young),old(老年代),一般爲1:2,新生代(eden,survivor,survivor)8:1:1
(4)面試重點1:併發標記漏標怎麼辦,三色標記算法,白色(白色代表純潔就是clear的空間),灰色(自身被標記,成員變量未被標記),黑色(黑色代表死亡)
(5)面試重點2:什麼是調優?主要兩個點:優化運行JVM運行環境(慢,卡頓);解決JVM運行過程中出現的各種問題(OOM)
(6)分代模型 單線程 Serial 和Serial Old :a stop-the world(STW牆面待著就是所有都停止的時候),copying collector which uses a single GC thread 多線程parallel (ParNew與Parrallel Scavenge等價)
總結:一般無特殊組合:現在是:Parrallel Scavenge和Parrallel Old組合(PS+PO)
G1 jdk1.9以後使用
對於GC你有什麼調式方式?
jstat

小咲以前的博客,https://blog.csdn.net/weixin_43914278/article/details/104229984

當然據說工作的時候要使用這個Arthas。
Arthas能爲你做什麼事情呢?我們先來看一下官網的介紹。
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
這個類從哪個 jar 包加載的?爲什麼會報各種類相關的 Exception?
我改的代碼爲什麼沒有執行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
是否有一個全局視角來查看系統的運行狀況?
有什麼辦法可以監控到JVM的實時運行狀態?

5、事務的特性
遵循ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability))

6、關係性數據庫與NoSQL
Nosql數據庫是動態結構,可以很容易適應數據類型和結構的變化
非關係型數據庫
MongoDb、redis、HBase
【注意】redis緩存通常會與業務MySQL考緩存模型
1.先從緩存讀,如果緩存有,直接返回,90%
2.緩存中沒有,才需要從MySQL中讀取。
在這裏插入圖片描述
1、使用鍵值對存儲數據;
2、分佈式;
3、一般不支持ACID特性;
4、非關係型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合
推薦博客:https://blog.csdn.net/qq_36411874/article/details/82013020
HBase開設大數據課程的學校基本都還記得吧,MapReduce中:WordCount 經過 input splitting mapping(單詞,個數) shulffling(歸類) producing(合併同類項)final result得出結果
表的特點:大,無模式對應上面第4點,面向列,稀疏,多版本,類型單一
Zookeeper Server奇數原則,領導者,跟隨者,觀察者這個圖要有印象
Kafka工作流程:至少了解Kafka只是分爲一個或多個分區的主題的集合,分區是消息的線性有序序列,每個消息由他們的索引(偏移)來標識……
消息隊列 解耦、異步、削峯填谷

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