日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java核心面试问题

發(fā)布時(shí)間:2023/12/3 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java核心面试问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問:如果main方法被聲明為私有該怎么辦?

回答:

該程序可以正確編譯,但在運(yùn)行時(shí)會(huì)顯示“ Main方法不公開”。 信息。

問:在Java中按引用傳遞和按值傳遞是什么意思?

回答:

通過引用方式傳遞,傳遞地址本身而不傳遞值。 按值傳遞表示傳遞值的副本 。

問:如果您要覆蓋對(duì)象的equals()方法,那么您可能還會(huì)考慮其他哪種方法?

回答:

hashCode()

問:什么是字節(jié)碼?

要么

問:是什么使Java具有“編寫一次即可在任何地方運(yùn)行”的特性?

回答:

所有Java程序都被編譯成包含字節(jié)碼的類文件。 這些字節(jié)碼可以在任何平臺(tái)上運(yùn)行,因此java被稱為獨(dú)立于平臺(tái)的。

問:解釋每個(gè)公共static void main(String args [])關(guān)鍵字的原因?

回答:

  • public – main(..)是Java環(huán)境在執(zhí)行程序時(shí)調(diào)用的第一個(gè)方法,因此必須可以從Java環(huán)境進(jìn)行訪問。 因此,訪問說明符必須是公共的。
  • static :Java環(huán)境應(yīng)該能夠在不創(chuàng)建類實(shí)例的情況下調(diào)用此方法,因此必須將該方法聲明為static。
  • void :main 不返回任何內(nèi)容,因此返回類型必須為void

參數(shù)String表示在命令行中給出的參數(shù)類型,而arg是在命令行中給出的字符串?dāng)?shù)組。

問:==和.equals()有什么區(qū)別?

要么

問:==和等于之間有什么區(qū)別

要么

問:==和equals方法之間的區(qū)別

要么

問:您將使用什么來比較兩個(gè)String變量–運(yùn)算符==或方法equals()?

要么

問:在==運(yùn)算符下,兩個(gè)具有相同值的String對(duì)象怎么可能不相等?

回答:

==運(yùn)算符比較兩個(gè)對(duì)象,以確定它們是否是內(nèi)存中的同一對(duì)象,即是否存在于同一內(nèi)存位置。 兩個(gè)String對(duì)象可能具有相同的值,但位于不同的內(nèi)存區(qū)域中。

==比較引用,而.equals比較內(nèi)容。 方法public boolean equals(Object obj)由Object類提供,并且可以重寫。 僅當(dāng)對(duì)象與自身比較時(shí),默認(rèn)實(shí)現(xiàn)才返回true,這等效于等于運(yùn)算符==用于將別名與對(duì)象進(jìn)行比較。 字符串,位集,日期和文件會(huì)覆蓋equals()方法。 對(duì)于兩個(gè)String對(duì)象,值相等意味著它們包含相同的字符序列。 對(duì)于Wrapper類,值相等意味著原始值相等。

public class EqualsTest {public static void main(String[] args) {String s1 = “abc”;String s2 = s1;String s5 = “abc”;String s3 = new String(”abc”);String s4 = new String(”abc”);System.out.println(”== comparison : ” + (s1 == s5));System.out.println(”== comparison : ” + (s1 == s2));System.out.println(”Using equals method : ” + s1.equals(s2));System.out.println(”== comparison : ” + s3 == s4);System.out.println(”Using equals method : ” + s3.equals(s4));} }

輸出量

== comparison : true == comparison : true Using equals method : true false Using equals method : true

問:如果從主方法的簽名中刪除了靜態(tài)修飾符怎么辦?

要么

問:如果我不提供String數(shù)組作為方法的參數(shù)怎么辦?

回答:

程序編譯。 但是在運(yùn)行時(shí)會(huì)引發(fā)錯(cuò)誤“ NoSuchMethodError”。

問:為什么將oracle 4型驅(qū)動(dòng)程序命名為oracle瘦驅(qū)動(dòng)程序?

回答:

Oracle提供了Type 4 JDBC驅(qū)動(dòng)程序,稱為Oracle“瘦”驅(qū)動(dòng)程序。 該驅(qū)動(dòng)程序包括自己的完全用Java編寫的Oracle Net8的TCP / IP版本的實(shí)現(xiàn),因此它是獨(dú)立于平臺(tái)的,可以在運(yùn)行時(shí)下載到瀏覽器,并且在客戶端不需要任何Oracle軟件。 該驅(qū)動(dòng)程序在服務(wù)器端需要一個(gè)TCP / IP偵聽器,并且客戶端連接字符串使用TCP / IP端口地址,而不是數(shù)據(jù)庫名稱的TNSNAMES條目。

您對(duì)java final關(guān)鍵字了解什么?

要么

問:什么是final,finalize()和final?

要么

問:什么是finalize()方法?

要么

問:班級(jí)或成員是決賽是什么意思?

回答:

  • 最終 –聲明常量
  • 最終 –處理異常
  • 完成 –幫助垃圾收集

接口中定義的變量是隱式最終的。 最終類不能擴(kuò)展,即,最終類不能被子類化。 出于安全原因,使用String和Integer之類的基本類來完成此操作。 它還允許編譯器進(jìn)行一些優(yōu)化,并使線程安全性更容易實(shí)現(xiàn)。 繼承其類的最終方法時(shí),不能覆蓋該方法。 您不能更改最終變量(是常量)的值。 finalize()方法僅在銷毀對(duì)象和收集垃圾之前使用。 最后,在異常處理中使用的關(guān)鍵字,無論是否引發(fā)異常都將執(zhí)行。 例如,打開連接的關(guān)閉是在finally方法中完成的。

問:什么是Java API?

回答:

Java API是大量現(xiàn)成的軟件組件的集合,這些組件提供了許多有用的功能,例如圖形用戶界面(GUI)小部件。

問:什么是GregorianCalendar類?

回答:

GregorianCalendar支持傳統(tǒng)的西方日歷。

問:什么是ResourceBundle類?

回答:

ResourceBundle類用于存儲(chǔ)特定于語言環(huán)境的資源,這些資源可由程序加載,以根據(jù)正在其中運(yùn)行程序的特定語言環(huán)境來定制程序的外觀。

問:為什么Java中沒有全局變量?

回答:

全局變量可全局訪問。 由于以下原因,Java不支持全局可訪問變量:

  • 全局變量破壞了參照透明性
  • 全局變量在命名空間中創(chuàng)建沖突 。

問:如何在Java程序中將String轉(zhuǎn)換為Number?

回答:

Integer類的valueOf()函數(shù)用于將字符串轉(zhuǎn)換為Number。 這是代碼示例:

String numString = “1000″; int id=Integer.valueOf(numString).intValue();

問:什么是SimpleTimeZone類?

回答:

SimpleTimeZone類提供對(duì)公歷的支持。

問:while語句和do語句有什么區(qū)別?

回答:

while語句(預(yù)測(cè)試)在循環(huán)開始時(shí)進(jìn)行檢查,以查看是否應(yīng)發(fā)生下一個(gè)循環(huán)迭代。 do while語句(測(cè)試后)在循環(huán)結(jié)束時(shí)進(jìn)行檢查,以查看是否應(yīng)發(fā)生循環(huán)的下一次迭代。 do語句將始終至少執(zhí)行一次循環(huán)主體。

問:什么是語言環(huán)境類?

回答:

Locale類用于根據(jù)特定地理,政治或文化區(qū)域的慣例來定制程序輸出。

問:描述OOPS的原理。

回答:

oop的三個(gè)主要原理稱為多態(tài),繼承和封裝。

問:解釋繼承原則。

回答:

繼承是一個(gè)對(duì)象獲取另一對(duì)象的屬性的過程。 繼承允許反復(fù)使用經(jīng)過良好測(cè)試的過程,并使更改一次完成并在所有相關(guān)位置生效

問:什么是隱式強(qiáng)制轉(zhuǎn)換?

回答:

隱式轉(zhuǎn)換是簡(jiǎn)單地將一個(gè)實(shí)體分配給另一個(gè)實(shí)體而沒有對(duì)編譯器的任何轉(zhuǎn)換指導(dǎo)的過程。 在所有類型的轉(zhuǎn)換中都不允許使用這種類型的轉(zhuǎn)換,并且可能不適用于所有場(chǎng)景。

int i = 1000; long j = i; //Implicit casting

問:sizeof是Java中的關(guān)鍵字嗎?

回答:

sizeof不是關(guān)鍵字。

問:什么是本機(jī)方法?

回答:

本機(jī)方法是以Java以外的語言實(shí)現(xiàn)的方法。

問:在System.out.println()中,什么是System,out和println?

回答:

System是預(yù)定義的最終類,out是PrintStream對(duì)象,而println是out對(duì)象中的內(nèi)置重載方法。

問:什么是封裝,繼承和多態(tài)性

要么

解釋多態(tài)的不同形式。

回答:

簡(jiǎn)單的多態(tài)性意味著一個(gè)名字很多形式 。 多態(tài)使一個(gè)實(shí)體可以用作不同類型動(dòng)作的通用類別。 具體行動(dòng)取決于情況的確切性質(zhì)。

多態(tài)性在Java中以三種不同的形式存在:

  • 方法重載
  • 通過繼承重寫方法
  • 通過Java接口覆蓋的方法

問:什么是顯式強(qiáng)制轉(zhuǎn)換?

回答:

在明確告知編譯器有關(guān)轉(zhuǎn)換對(duì)象的過程中進(jìn)行顯式轉(zhuǎn)換。

long i = 700.20; int j = (int) i; //Explicit casting

問:什么是Java虛擬機(jī)(JVM)?

回答:

Java虛擬機(jī)是可以移植到各種基于硬件的平臺(tái)上的軟件

問:您對(duì)向下轉(zhuǎn)換了解什么?

回答:

向下轉(zhuǎn)換的過程是指從通用類型轉(zhuǎn)換為更具體的類型,即向下轉(zhuǎn)換層次結(jié)構(gòu)

問:什么是Java訪問說明符?

要么

問:公共,私有,受保護(hù)和默認(rèn)訪問說明符之間有什么區(qū)別?

要么

問:訪問修飾符有哪些不同類型?

回答:

訪問說明符是確定對(duì)類成員的訪問類型的關(guān)鍵字。 這些關(guān)鍵字用于允許對(duì)程序部分(例如函數(shù)和變量)進(jìn)行特權(quán)。 這些是:

  • 公開:所有班級(jí)均可使用
  • 受保護(hù)的 :同一包和任何子類中的類可訪問。
  • 私人的:只能由他們所屬的班級(jí)訪問
  • 默認(rèn)值:它們所屬的類和同一包中的子類可以訪問

問:每個(gè)班級(jí)的超班是哪個(gè)班級(jí)?

回答:

賓語。

問:命名原始Java類型。

回答:

這8種基本類型是字節(jié),字符,短型,整數(shù),長型,浮點(diǎn)型,雙精度型和布爾型。 附加是字符串。

問:靜態(tài)變量和非靜態(tài)變量有什么區(qū)別?

要么

問:什么是“

要么

問:什么是java中的static?

要么

問:什么是靜態(tài)方法?

回答:

靜態(tài)變量與整個(gè)類相關(guān)聯(lián),而不是與類的特定實(shí)例相關(guān)聯(lián)。 每個(gè)對(duì)象將共享一個(gè)靜態(tài)變量的通用副本,即,無論從哪個(gè)類創(chuàng)建多少個(gè)對(duì)象,每個(gè)類只有一個(gè)副本。 類變量或靜態(tài)變量在類中使用static關(guān)鍵字聲明。 它們?cè)陬愅獠柯暶鞑⒋鎯?chǔ)在靜態(tài)內(nèi)存中。 類變量主要用于常量。 靜態(tài)變量始終由類名稱調(diào)用。 該變量在程序啟動(dòng)時(shí)創(chuàng)建,并在程序停止時(shí)銷毀。 類變量的范圍與實(shí)例變量相同。 它的初始值與實(shí)例變量相同,并且在未初始化時(shí)(與數(shù)據(jù)類型相對(duì)應(yīng))獲得默認(rèn)值。 類似地,靜態(tài)方法是屬于該類而不是該類的任何對(duì)象的方法,并且不適用于某個(gè)對(duì)象,甚至不需要實(shí)例化該類的任何對(duì)象。 靜態(tài)方法是隱式最終的,因?yàn)橹貙懯腔趯?duì)象的類型完成的,并且靜態(tài)方法是附加到類而不是對(duì)象上的。 只要原始方法未聲明為final,則超類中的靜態(tài)方法可能會(huì)被子類中的另一個(gè)靜態(tài)方法遮蔽。 但是,您不能用非靜態(tài)方法覆蓋靜態(tài)方法。 換句話說,您不能將靜態(tài)方法更改為子類中的實(shí)例方法。

非靜態(tài)變量在每個(gè)對(duì)象實(shí)例中都具有唯一值。

問:布爾&運(yùn)算符和&&運(yùn)算符有什么區(qū)別?

回答:

如果對(duì)包含布爾&運(yùn)算符的表達(dá)式求值,則將對(duì)兩個(gè)操作數(shù)求值,而&&運(yùn)算符是快捷運(yùn)算符。 計(jì)算涉及&&運(yùn)算符的表達(dá)式時(shí),將計(jì)算第一個(gè)操作數(shù)。 如果第一個(gè)操作數(shù)返回值true,則對(duì)第二個(gè)操作數(shù)求值。 如果第一個(gè)操作數(shù)的評(píng)估結(jié)果為false,則跳過第二個(gè)操作數(shù)的評(píng)估結(jié)果。

問:Java如何處理整數(shù)上溢和下溢?

回答:

它使用結(jié)果的那些低位字節(jié) ,這些字節(jié)可以適合該操作允許的類型的大小。

問:如果我寫靜態(tài)公共無效而不是公共靜態(tài)無效怎么辦?

回答:

程序編譯并正常運(yùn)行。

問:聲明變量和定義變量有什么區(qū)別?

回答:

在聲明中,我們僅提及變量的類型及其名稱,而沒有對(duì)其進(jìn)行初始化。 定義意味著聲明+初始化。 例如String s; 只是一個(gè)聲明,而String s = new String(“ bob”); 或String s =“ bob”; 都是定義。

問:Java支持哪種類型的參數(shù)傳遞?

回答:

在Java中,參數(shù)(基元和對(duì)象)始終按值傳遞。 對(duì)于對(duì)象,對(duì)象引用本身通過值傳遞,因此原始引用和參數(shù)副本都引用同一對(duì)象。

問:解釋封裝原理。

回答:

封裝是將數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行操作的代碼綁定或包裝到單個(gè)實(shí)體中的過程。 這樣可以確保數(shù)據(jù)不受外部接口和濫用的影響。 對(duì)象允許將過程與其數(shù)據(jù)一起封裝,以減少潛在的干擾。 考慮封裝的一種方法是作為保護(hù)性包裝器,以防止代碼和數(shù)據(jù)被包裝器外部定義的其他代碼任意訪問。

問:您對(duì)變量有什么了解?

回答:

變量是一個(gè)命名的存儲(chǔ)位置,可以在程序中輕松引用。 該變量用于保存數(shù)據(jù),并且可以在程序執(zhí)行過程中對(duì)其進(jìn)行更改。

問:您對(duì)數(shù)字促銷有什么了解?

回答:

數(shù)值提升是將較小的數(shù)字類型轉(zhuǎn)換為較大的數(shù)字類型,以便可以進(jìn)行積分和浮點(diǎn)運(yùn)算。 在數(shù)字提升過程中,字節(jié),字符和短值轉(zhuǎn)換為整數(shù)值。 如果需要,int值也將轉(zhuǎn)換為long值。 根據(jù)需要將long和float值轉(zhuǎn)換為double值。

鑄件有哪些類型?

回答:

將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)的過程稱為強(qiáng)制轉(zhuǎn)換。 Java有兩種類型的轉(zhuǎn)換: 這些是隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。

問:main方法中String數(shù)組的第一個(gè)參數(shù)是什么?

回答:

字符串?dāng)?shù)組為空。 它沒有任何元素。 這與C / C ++不同,在C / C ++中,默認(rèn)情況下的第一個(gè)元素是程序名稱。 如果我們?cè)诿钚猩喜惶峁┤魏螀?shù),則main方法的String數(shù)組將為空,但不能為null。

問:如何證明數(shù)組不是空而是空?

回答:

打印array.length。 它將打印0。這意味著它為空。 但是如果它為null,則在嘗試打印array.length時(shí)將拋出NullPointerException。

問:一個(gè)應(yīng)用程序可以有多個(gè)具有main方法的類嗎?

回答:

是。 在啟動(dòng)應(yīng)用程序時(shí),我們提到要運(yùn)行的類名。 JVM僅在您提到其名稱的類中查找main方法。 因此,在具有main方法的多個(gè)類之間不存在沖突。

什么時(shí)候在Java中完全加載了靜態(tài)塊?

回答:

當(dāng)類加載器將類帶入JVM時(shí),將加載靜態(tài)變量。 不必必須創(chuàng)建對(duì)象。 靜態(tài)變量在加載后將被分配內(nèi)存空間。 靜態(tài)塊中的代碼僅加載/執(zhí)行一次,即在首次初始化該類時(shí)。 一個(gè)類可以具有任意數(shù)量的靜態(tài)塊。 靜態(tài)塊不是類的成員,它們沒有return語句,因此不能直接調(diào)用它們。 不能包含此或超級(jí)。 它們主要用于初始化靜態(tài)字段。

問:同一類中可以有多個(gè)主要方法嗎?

回答:

我們可以有多個(gè)重載的main方法,但是只有一個(gè)具有以下簽名的main方法:

public static void main(String[] args) {}

沒有程序無法編譯。 編譯器說main方法已經(jīng)在該類中定義。

問:解釋Java虛擬機(jī)(JVM)的工作原理嗎?

回答:

JVM是一臺(tái)抽象的計(jì)算機(jī),就像其他任何真正的計(jì)算機(jī)一樣,它首先使用Compiler將.java文件轉(zhuǎn)換為.class文件(.class就是字節(jié)碼文件。),然后Interpreter讀取字節(jié)碼。

問:如何不使用第三個(gè)變量就交換兩個(gè)變量?

回答:

添加兩個(gè)變量并將其值分配給First變量。 用結(jié)果值減去第二個(gè)值。 并分配給Second變量。 用第二個(gè)變量的結(jié)果減去第一個(gè)變量的結(jié)果并分配給第一個(gè)變量。 例:

int a=5,b=10;a=a+b; b=a-b; a=a-b;

解決相同問題的另一種方法

您使用XOR交換。 (最佳方法),如使用上述方法,可能會(huì)超出/超出流量。 例如:

int a = 5; int b = 10; a = a ^ b; b = a ^ b; a = a ^ b;

問:什么是數(shù)據(jù)封裝?

回答:

可以通過在類(JAVABEAN)中創(chuàng)建“ get”和“ set”方法來使用封裝,這些方法用于訪問對(duì)象的字段。 通常,字段是私有的,而get和set方法是公共的。 封裝可用于驗(yàn)證要存儲(chǔ)的數(shù)據(jù),對(duì)存儲(chǔ)在一個(gè)或多個(gè)字段中的數(shù)據(jù)進(jìn)行計(jì)算,或者用于自省(例如,在Struts中使用javabeans時(shí)通常就是這種情況)。 將數(shù)據(jù)和功能包裝到單個(gè)單元中稱為數(shù)據(jù)封裝。 封裝只不過是將數(shù)據(jù)和關(guān)聯(lián)的方法包裝到一個(gè)單元中,以便可以在關(guān)聯(lián)的方法的幫助下訪問數(shù)據(jù)。 封裝提供數(shù)據(jù)安全性。 就是隱藏?cái)?shù)據(jù)。

如何實(shí)施?

回答:

反射是在運(yùn)行時(shí)內(nèi)省類的功能和狀態(tài)并在運(yùn)行時(shí)動(dòng)態(tài)進(jìn)行處理的過程。 通過使用帶有內(nèi)置類(如類,方法,字段,構(gòu)造函數(shù)等)的Reflection API可以支持此功能。示例:使用Java Reflection API,我們可以使用getName方法獲取類名。

為什么

回答:

是的,JVM自己維護(hù)一個(gè)緩存。 它在HEAP上創(chuàng)建對(duì)象,但是對(duì)這些對(duì)象的引用在堆棧上。

問:什么是幻像記憶?

回答:

虛擬內(nèi)存是錯(cuò)誤的內(nèi)存。 現(xiàn)實(shí)中不存在的內(nèi)存。

問:一種方法可以是靜態(tài)且同步的嗎?

回答:

靜態(tài)方法可以同步。 如果這樣做,JVM將在java.lang上獲得一個(gè)鎖。

與對(duì)象關(guān)聯(lián)的類實(shí)例。 類似于說:

synchronized(XYZ.class) { }

問:String和StringTokenizer有什么區(qū)別?

回答:

StringTokenizer是用于拆分字符串的實(shí)用程序類。

例:

StringTokenizer st = new StringTokenizer(”Hello World”); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }

輸出:

Hello World

問題:什么是瞬時(shí)變量?

回答:

暫態(tài)變量不能序列化。 例如,如果某個(gè)變量在Serializable類中聲明為臨時(shí)的,并且該類已寫入ObjectStream,則無法將變量的值寫入流中,而是當(dāng)從ObjectStream中檢索該類時(shí),變量的值將變?yōu)閚ull 。

注意

transient identifies a variable not to be written out when an instance is serialized (It can't be copied to remove system)volatile indicates that the field is used by synchronized threads and that the compiler should not attempt to perform optimizations with it.When more than one thread share a (volatile) data it is checked every time. Every thread keeps the latest value of volatile variable

問題:命名使用“邊框布局”作為默認(rèn)布局的容器嗎?

回答:

使用“邊框布局”作為默認(rèn)設(shè)置的容器是:window,Frame和Dialog類。

問題:通過同步您了解什么?

回答:

同步是以一種方式控制多個(gè)線程對(duì)共享資源的訪問的過程,即一次僅一個(gè)線程可以訪問一個(gè)資源。 在非同步多線程應(yīng)用程序中,一個(gè)線程可以修改共享對(duì)象,而另一個(gè)線程正在使用或更新對(duì)象的值。 同步可防止此類數(shù)據(jù)損壞。

例如同步功能:

public synchronized void Method1 () {// Appropriate method-related code.}

例如,在函數(shù)內(nèi)部同步代碼塊:

public myFunction (){synchronized (this) {// Synchronized code here.} }

參考: Sunil Gulabani博客上來自我們JCG合作伙伴 Sunil Gulabani的核心Java面試問題 。

翻譯自: https://www.javacodegeeks.com/2013/09/core-java-interview-questions.html

總結(jié)

以上是生活随笔為你收集整理的Java核心面试问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。