更新時(shí)間:2022-12-22 14:27:03 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1764次
2023新的一年已經(jīng)開始,時(shí)間晃眼就過去了,有的同學(xué)已經(jīng)為新年的跳槽早早做足了準(zhǔn)備,而有的同學(xué)還在臨陣磨槍中,想必看到這篇文章的你,也是為了新的開始而做準(zhǔn)備呢吧,現(xiàn)在的問題是, 需要了解到什么樣的面試題才能讓我們后面的就業(yè)更加的順利呢。這些都是小編整理的高頻面試題,希望可以幫助到大家:

1、創(chuàng)建socket通訊的步驟?
1、 服務(wù)器程序創(chuàng)建一個(gè)ServerSocket,然后再用accept方法等待客戶來連接
2、 客戶端程序創(chuàng)建一個(gè)Socket并請求與服務(wù)器建立連接
3、 服務(wù)器接收客戶的連接請求,并創(chuàng)建一個(gè)新的Socket與該客戶建立專線連接
4、 剛才建立了連接的兩個(gè)Socket在一個(gè)線程上對話
5、 服務(wù)器開始等待新的連接請求
2、Java 中 sleep 方法和 wait 方法的區(qū)別?
雖然兩者都是用來暫停當(dāng)前運(yùn)行的線程,但是 sleep() 實(shí)際上只是短暫停頓,因?yàn)樗粫?huì)釋放鎖,而 wait() 意味著條件等待,這就是為什么該方法要釋放鎖,因?yàn)橹挥羞@樣,其他等待的線程才能在滿足條件時(shí)獲取到該鎖。
3、程序計(jì)數(shù)器(線程私有)
一塊較小的內(nèi)存空間, 是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器,每條線程都要有一個(gè)獨(dú)立的程序計(jì)數(shù)器,這類內(nèi)存也稱為“線程私有” 的內(nèi)存。
正在執(zhí)行 java 方法的話,計(jì)數(shù)器記錄的是虛擬機(jī)字節(jié)碼指令的地址(當(dāng)前指令的地址) 。如果還是 Native 方法,則為空。
這個(gè)內(nèi)存區(qū)域是唯一一個(gè)在虛擬機(jī)中沒有規(guī)定任何 OutOfMemoryError 情況的區(qū)域。
4、什么是線程調(diào)度器(Thread Scheduler)和時(shí)間分片(Time Slicing)?
線程調(diào)度器是一個(gè)操作系統(tǒng)服務(wù),它負(fù)責(zé)為Runnable狀態(tài)的線程分配CPU時(shí)間。一旦我們創(chuàng)建一個(gè)線程并啟動(dòng)它,它的執(zhí)行便依賴于線程調(diào)度器的實(shí)現(xiàn)。時(shí)間分片是指將可用的CPU時(shí)間分配給可用的Runnable線程的過程。分配CPU時(shí)間可以基于線程優(yōu)先級或者線程等待的時(shí)間。線程調(diào)度并不受到Java虛擬機(jī)控制,所以由應(yīng)用程序來控制它是更好的選擇(也就是說不要讓你的程序依賴于線程的優(yōu)先級)。
5、迭代器 Iterator 是什么?
Iterator 接口提供遍歷任何 Collection 的接口。我們可以從一個(gè) Collection 中使用迭代器方法來獲取迭代器實(shí)例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允許調(diào)用者在迭代過程中移除元素。
因?yàn)樗蠧ollection接繼承了Iterator迭代器

6、線程的 sleep()方法和 yield()方法有什么區(qū)別?
1、 sleep()方法給其他線程運(yùn)行機(jī)會(huì)時(shí)不考慮線程的優(yōu)先級,因此會(huì)給低優(yōu)先級的線程以運(yùn)行的機(jī)會(huì);yield()方法只會(huì)給相同優(yōu)先級或更高優(yōu)先級的線程以運(yùn)行的機(jī)會(huì);
2、 線程執(zhí)行 sleep()方法后轉(zhuǎn)入阻塞(blocked)狀態(tài),而執(zhí)行 yield()方法后轉(zhuǎn)入就緒(ready)狀態(tài);
3、 sleep()方法聲明拋出 InterruptedException,而 yield()方法沒有聲明任何異常;
4、 sleep()方法比 yield()方法(跟操作系統(tǒng) CPU 調(diào)度相關(guān))具有更好的可移植性,通常不建議使用yield()方法來控制并發(fā)線程的執(zhí)行。
7、Java 中能創(chuàng)建 volatile 數(shù)組嗎?
能,Java 中可以創(chuàng)建 volatile 類型數(shù)組,不過只是一個(gè)指向數(shù)組的引用,而不是整個(gè)數(shù)組。意思是,如果改變引用指向的數(shù)組,將會(huì)受到 volatile 的保護(hù),但是如果多個(gè)線程同時(shí)改變數(shù)組的元素,volatile 標(biāo)示符就不能起到之前的保護(hù)作用了。
8、java中equals方法的用法以及==的用法
tech.souyunku.com/bluestorm/a…
9、如何創(chuàng)建一個(gè)json對象?
使用{}實(shí)例化一個(gè)json對象,json對象多個(gè)元素使用逗號(hào)隔開,每個(gè)元素都是一個(gè)鍵值對
10、如何判斷對象是否是垃圾?
**引用計(jì)數(shù):**在對象中添加一個(gè)引用計(jì)數(shù)器,如果被引用計(jì)數(shù)器加 1,引用失效時(shí)計(jì)數(shù)器減 1,如果計(jì)數(shù)器為 0 則被標(biāo)記為垃圾。原理簡單,效率高,但是在 Java 中很少使用,因?yàn)榇嬖趯ο箝g循環(huán)引用的問題,導(dǎo)致計(jì)數(shù)器無法清零。
**可達(dá)性分析:**主流語言的內(nèi)存管理都使用可達(dá)性分析判斷對象是否存活?;舅悸肥峭ㄟ^一系列稱為 GC Roots 的根對象作為起始節(jié)點(diǎn)集,從這些節(jié)點(diǎn)開始,根據(jù)引用關(guān)系向下搜索,搜索過程走過的路徑稱為引用鏈,如果某個(gè)對象到 GC Roots 沒有任何引用鏈相連,則會(huì)被標(biāo)記為垃圾??勺鳛?GC Roots 的對象包括虛擬機(jī)棧和本地方法棧中引用的對象、類靜態(tài)屬性引用的對象、常量引用的對象。
以上就是“一些大廠高頻出現(xiàn)的Java高級面試題及答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743