Java真題彙總-32個java面試必考點 拉勾網

Java真題彙總

📝目錄

java語言特性與設計模式

進程與線程的區別與聯繫

  1. 調度:線程是獨立調度的基本單位,進程是擁有資源的基本單位。在同一進程中,線程的切換不會引發進程的切換;在不一樣的進程中,進行線程切換,則會引發進程的切換。css

  2. 擁有資源:進程是擁有資源的基本單位,線程不擁有資源,但線程能夠共享器隸屬進程的系統資源。html

  3. 併發性:進程能夠併發執行,並且同一進程內的多個線程也能夠併發執行,大大提升了系統的吞吐量。java

  4. 系統開銷:建立和撤銷進程時,系統都要爲之分配或回收資源,在進程切換時,涉及當前執行進程CPU環境的保存以及新調度的進程CPU環境的設置;而線程切換時只需保存和設置少許寄存器內容,所以開銷很小,另外,因爲同一進程內的多個線程共享進程的地址空間,所以這些線程之間的同步與通訊比較容易實現,甚至無須操做系統的干預。linux

  5. 通訊方面:進程間通訊須要藉助操做系統,而線程間能夠直接讀/寫進程數據段來進行通訊。web

相關連接: blog.csdn.net/chen134225/…面試

簡單介紹一下進程的切換過程

  1. 切換頁目錄以使用新的地址空間segmentfault

  2. 切換內核棧和硬件上下文設計模式

切換會保存寄存器,棧等線程相關的現場,須要由用戶態切換到內核態瀏覽器

相關連接: blog.csdn.net/c_121/artic…緩存

你常用哪些Linux命令,主要用來解決什麼問題

  1. awk 一種處理文本文件的語言,是一個強大的文本分析工具

    相關連接: www.runoob.com/linux/linux…

  2. top 提供運行系統的動態實時視圖

    相關連接: www.runoob.com/linux/linux…

  3. netstat 用於顯示網絡狀態

    相關連接: www.runoob.com/linux/linux…

  4. grep 用於查找文件裏符合條件的字符串

    相關連接: www.runoob.com/linux/linux…

  5. less 瀏覽文件

    相關連接: www.runoob.com/linux/linux…

  6. tail 查看文件的內容

    相關連接: www.runoob.com/linux/linux…

  7. Linux中cat、more、less、tail、head命令的區別

    相關連接: www.cnblogs.com/losbyday/p/…

爲何TCP建連須要3次握手而斷連須要4次

  1. TCP 三次握手

    相關連接: blog.csdn.net/laladebon/a…

  2. TCP 四次揮手

    相關連接: baike.baidu.com/item/tcp%E5…

爲何TCP關閉鏈接時須要TIME_WAIT狀態爲何要等2MSL

  1. 爲了保證A發送的最後一個ACK報文可以到達B。這個ACK報文段有可能丟失,於是使處在LAST-ACK狀態的B收不到對已發送的FIN+ACK報文段的確認。B會超時重傳這個FIN+ACK報文段,而A就能在2MSL時間內收到這個重傳的FIN+ACK報文段。若是A在TIME-WAIT狀態不等待一段時間,而是在發送完ACK報文段後就當即釋放鏈接,就沒法收到B重傳的FIN+ACK報文段,於是也不會再發送一次確認報文段。這樣,B就沒法按照正常的步驟進入CLOSED狀態

  2. A在發送完ACK報文段後,再通過2MSL時間,就可使本鏈接持續的時間所產生的全部報文段都從網絡中消失。這樣就可使下一個新的鏈接中不會出現這種舊的鏈接請求的報文段。

相關連接: www.cnblogs.com/wen-ge/arti…

一次完整的HTTP請求過程是怎樣的

  1. 對www.baidu.com這個網址進行DNS域名解析,獲得對應的IP地址

  2. 根據這個IP,找到對應的服務器,發起TCP的三次握手

  3. 創建TCP鏈接後發起HTTP請求

  4. 服務器響應HTTP請求,瀏覽器獲得html代碼

  5. 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css圖片等)(先獲得html代碼,才能去找這些資源)

  6. 瀏覽器對頁面進行渲染呈現給用戶

相關連接: www.cnblogs.com/xuzekun/p/7…

HTTP2和HTTP的區別有哪些

  1. HTTP/2採用二進制格式而非文本格式
  2. HTTP/2是徹底多路複用的,而非有序並阻塞的——只需一個鏈接便可實現並行
  3. 使用報頭壓縮,HTTP/2下降了開銷
  4. HTTP/2讓服務器能夠將響應主動「推送」到客戶端緩存中

相關連接: blog.csdn.net/lijiawnen/a…

在你的項目中你使用過哪些設計模式? 主要用來解決什麼問題

  1. 工廠模式: Spring如何建立Bean

    相關連接: jingyan.baidu.com/article/3c3…

  2. 代理模式: Motan服務的動態代理

    相關連接: www.jianshu.com/p/f6a419db3…

  3. 責任鏈模式: Netty消息處理的方式

    相關連接: blog.csdn.net/lionaiying/…

  4. 適配器模式: SLF4J如何支持Log4J

    相關連接: www.jianshu.com/p/76e34982b…

  5. 觀察者模式: GRPC是如何支持流式請求的

    相關連接: www.cnblogs.com/gutousu/p/9…

  6. 構造者模式: PB序列化中的Builder

    相關連接: www.cnblogs.com/mxz1994/p/9…

Object中的equals和hashcode的做用分別是什麼?

hashCode()方法和equal()方法的做用其實同樣

equals和hashCode的區別: www.cnblogs.com/keyi/p/7119…

final, finally, finalize的區別與使用場景

  1. final : 能夠做爲修飾符修飾變量、方法和類

  2. finally: 用在異常處理中定義老是執行代碼

  3. finalize: 當垃圾回收器將無用對象從內存中清除時,該對象的finalize()方法被調用

相關連接: jingyan.baidu.com/article/597…

簡單描述一下java的異常機制

java對異常進行了分類,不一樣類型的異常使用了不一樣的java類,全部異常的根類爲java.lang.Throwable.Throwable派生了2個子類:Error和Exception.

  1. Error表示程序自己沒法克服和恢復的一種嚴重錯誤

  2. Exception表示還能克服和恢復,其中又分爲系統異常和普通異常

    1. 系統異常是軟件自己缺陷致使的問題

    2. 普通異常是運行環境的變化或異常致使的問題

相關連接: www.cnblogs.com/guweiwei/p/…

線上使用的哪一個jdk版本,爲何使用這個版本(有什麼特色)

各個版本各不相同 能夠參考: segmentfault.com/a/119000000…

介紹了各個版本的新特性

深刻淺出JVM

簡單描述一下JVM的內存模型

JVM內存模型

根據JVM規範,JVM 內存共分爲虛擬機棧,堆,方法區,程序計數器,本地方法棧五個部分。

相關連接: blog.csdn.net/qzqanzc/art…

Java堆內存訪問模型

相關連接: blog.csdn.net/Mr__fang/ar…

何時會觸發FullGC?

年輕代晉升時,老年代空間不足,永久代不足等

相關連接: www.jianshu.com/p/74b1f7683…

Java類加載器有幾種,關係怎樣的?

  1. 雙親委派機制

  2. Bootstrap類加載器

  3. Extension類加載器

  4. System類加載器

  5. 自定義類加載器

相關連接: blog.csdn.net/qq_33583322…

雙親委派機制的加載流程是怎樣的,有什麼好處?

某個特定的類加載器在接到加載類的請求時,首先將加載任務委託給父類加載器,依次遞歸,若是父類加載器能夠完成類加載任務,就成功返回;只有父類加載器沒法完成此加載任務時,才本身去加載。

相關鏈接: www.cnblogs.com/webster1/p/…

1.8爲何用Metaspace替換掉PermGen?Meatspace保存在哪裏?

  1. 字符串存在永久代中,容易出現性能問題和內存溢出

  2. 類及方法的信息等比較難肯定其大小,所以對於永久代的大小指定比較困難,過小容易出現永久代溢出,太大則容易致使老年代溢出。

  3. 永久代會爲 GC 帶來沒必要要的複雜度,而且回收效率偏低。

  4. Oracle 可能會將HotSpot 與 JRockit 合二爲一。

相關連接: blog.csdn.net/lk7688535/a…

編譯器會對指令作哪些優化?(簡答描述編譯器的指令重排)

  1. 公共子表達式的消除

  2. 指令重排

  3. 內聯

  4. 逃逸分析

    a) 方法逃逸

    b) 線程逃逸

  5. 棧上分配

  6. 同步消除

相關連接: blog.csdn.net/u013305783/…

指令重排 參考連接: www.cnblogs.com/tuhooo/p/79…

簡單描述一下volatile能夠解決什麼問題?如何作到的?

阻止指令的重排序 能夠保證變量讀寫的有序性

相關連接: www.cnblogs.com/dolphin0520…

簡單描述一下GC的分代回收?

分代回收基於兩個事實:大部分對象很快就不使用了,還有一部分不會當即無用,但也不會持續很長時間.

相關連接: blog.csdn.net/weixin_4406…

G1與CMS的區別?

相關連接: www.jianshu.com/p/bdd6f0392…

對象引用有哪幾種,有什麼特色?

  1. 強引用

  2. 軟引用

  3. 弱引用

  4. 虛引用

相關連接: cloud.tencent.com/developer/a…

使用過哪些JVM調試工具,主要分析哪些內容?

相關連接: blog.csdn.net/yethyeth/ar…

以上題來自: 32個java面試必考點 拉勾網: kaiwu.lagou.com/course/cour…

相關文章
相關標籤/搜索