真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java面試代碼安全,java軟件開(kāi)發(fā)面試

Java面試中都會(huì)遇到哪些問(wèn)題

JAVA面試精選題

10年積累的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有柳林免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

各位準(zhǔn)程序猿們,能不能找到一份好工作,就看你知不知道這,66道最基本的JAVA面試題,請(qǐng)耐心看完,說(shuō)不定這10分鐘,會(huì)影響你一輩子

面試題NO.01-NO.05

問(wèn)題:如果main方法被聲明為private會(huì)怎樣?

答案:能正常編譯,但運(yùn)行的時(shí)候會(huì)提示”main方法不是public的”。

問(wèn)題:Java里的傳引用和傳值的區(qū)別是什么?

答案:傳引用是指?jìng)鬟f的是地址而不是值本身,傳值則是傳遞值的一份拷貝。

問(wèn)題:如果要重寫(xiě)一個(gè)對(duì)象的equals方法,還要考慮什么?

答案:hashCode。

問(wèn)題:Java的”一次編寫(xiě),處處運(yùn)行”是如何實(shí)現(xiàn)的?

答案:Java程序會(huì)被編譯成字節(jié)碼組成的class文件,這些字節(jié)碼可以運(yùn)行在任何平臺(tái),因此Java是平臺(tái)獨(dú)立的。

問(wèn)題:說(shuō)明一下public static void main(String args[])這段聲明里每個(gè)關(guān)鍵字的作用

答案:public: main方法是Java程序運(yùn)行時(shí)調(diào)用的第一個(gè)方法,因此它必須對(duì)Java環(huán)境可見(jiàn)。所以可見(jiàn)性設(shè)置為pulic.

static: Java平臺(tái)調(diào)用這個(gè)方法時(shí)不會(huì)創(chuàng)建這個(gè)類(lèi)的一個(gè)實(shí)例,因此這個(gè)方法必須聲明為static。

void: main方法沒(méi)有返回值。

String是命令行傳進(jìn)參數(shù)的類(lèi)型,args是指命令行傳進(jìn)的字符串?dāng)?shù)組。

面試題NO.06-NO.10

問(wèn)題:==與equals的區(qū)別

答案:==比較兩個(gè)對(duì)象在內(nèi)存里是不是同一個(gè)對(duì)象,就是說(shuō)在內(nèi)存里的存儲(chǔ)位置一致。兩個(gè)String對(duì)象存儲(chǔ)的值是一樣的,但有可能在內(nèi)存里存儲(chǔ)在不同的地方 .

==比較的是引用而equals方法比較的是內(nèi)容。public boolean equals(Object obj) 這個(gè)方法是由Object對(duì)象提供的,可以由子類(lèi)進(jìn)行重寫(xiě)。默認(rèn)的實(shí)現(xiàn)只有當(dāng)對(duì)象和自身進(jìn)行比較時(shí)才會(huì)返回true,這個(gè)時(shí)候和==是等價(jià)的。String, BitSet, Date, 和File都對(duì)equals方法進(jìn)行了重寫(xiě),對(duì)兩個(gè)String對(duì)象 而言,值相等意味著它們包含同樣的字符序列。對(duì)于基本類(lèi)型的包裝類(lèi)來(lái)說(shuō),值相等意味著對(duì)應(yīng)的基本類(lèi)型的值一樣。

問(wèn)題:如果去掉了main方法的static修飾符會(huì)怎樣?

答案:程序能正常編譯。運(yùn)行時(shí)會(huì)拋NoSuchMethodError異常。

問(wèn)題:為什么oracle type4驅(qū)動(dòng)被稱(chēng)作瘦驅(qū)動(dòng)?

答案:oracle提供了一個(gè)type 4 JDBC驅(qū)動(dòng),被稱(chēng)為瘦驅(qū)動(dòng)。這個(gè)驅(qū)動(dòng)包含了一個(gè)oracle自己完全用Java實(shí)現(xiàn)的一個(gè)TCP/IP的Net8的實(shí)現(xiàn),因此它是平臺(tái)獨(dú)立的,可以在運(yùn)行時(shí)由瀏覽器下載,不依賴(lài)任何客戶端 的oracle實(shí)現(xiàn)??蛻舳诉B接字符串用的是TCP/IP的地址端口,而不是數(shù)據(jù)庫(kù)名的tnsname。

問(wèn)題:介紹一下finalize方法

答案: final: 常量聲明。 finally: 處理異常。 finalize: 幫助進(jìn)行垃圾回收。

接口里聲明的變量默認(rèn)是final的。final類(lèi)無(wú)法繼承,也就是沒(méi)有子類(lèi)。這么做是出于基礎(chǔ)類(lèi)型的安全考慮,比如String和Integer。這樣也使得編譯器進(jìn)行一些優(yōu)化,更容易保證線程的安全性。final方法無(wú)法重寫(xiě)。final變量的值不能改變。finalize()方法在一個(gè)對(duì)象被銷(xiāo)毀和回收前會(huì)被調(diào)用。finally,通常用于異常處理,不管有沒(méi)有異常被拋出都會(huì)執(zhí)行到。比如,關(guān)閉連接通常放到finally塊中完成。

問(wèn)題:什么是Java API?

答案:Java API是大量軟件組件的集合,它們提供了大量有用的功能,比如GUI組件。

面試題NO.11-NO.15

問(wèn)題:GregorianCalendar類(lèi)是什么東西?

答案:GregorianCalendar提供了西方傳統(tǒng)日歷的支持。

問(wèn)題:ResourceBundle類(lèi)是什么?

答案:ResourceBundle用來(lái)存儲(chǔ)指定語(yǔ)言環(huán)境的資源,應(yīng)用程序可以根據(jù)運(yùn)行時(shí)的語(yǔ)言環(huán)境來(lái)加載這些資源,從而提供不同語(yǔ)言的展示。

問(wèn)題:為什么Java里沒(méi)有全局變量?

答案:全局變量是全局可見(jiàn)的,Java不支持全局可見(jiàn)的變量,因?yàn)椋喝肿兞科茐牧艘猛该餍栽瓌t。全局變量導(dǎo)致了命名空間的沖突。

問(wèn)題:如何將String類(lèi)型轉(zhuǎn)化成Number類(lèi)型?

答案:Integer類(lèi)的valueOf方法可以將String轉(zhuǎn)成Number。下面是代碼示例:

問(wèn)題:SimpleTimeZone類(lèi)是什么?

答案:SimpleTimeZone提供公歷日期支持。

面試題NO.16-NO.20

問(wèn)題:while循環(huán)和do循環(huán)有什么不同?

答案:while結(jié)構(gòu)在循環(huán)的開(kāi)始判斷下一個(gè)迭代是否應(yīng)該繼續(xù)。do/while結(jié)構(gòu)在循環(huán)的結(jié)尾來(lái)判斷是否將繼續(xù)下一輪迭代。do結(jié)構(gòu)至少會(huì)執(zhí)行一次循環(huán)體。

問(wèn)題:Locale類(lèi)是什么?

答案:Locale類(lèi)用來(lái)根據(jù)語(yǔ)言環(huán)境來(lái)動(dòng)態(tài)調(diào)整程序的輸出。

問(wèn)題:面向?qū)ο缶幊痰脑瓌t是什么?

答案:主要有三點(diǎn),多態(tài),繼承和封裝。

問(wèn)題:介紹下繼承的原則

答案:繼承使得一個(gè)對(duì)象可以獲取另一個(gè)對(duì)象的屬性。使用繼承可以讓已經(jīng)測(cè)試完備的功能得以復(fù)用,并且可以一次修改,所有繼承的地方都同時(shí)生效。

問(wèn)題:什么是隱式的類(lèi)型轉(zhuǎn)化?

答案:隱式的類(lèi)型轉(zhuǎn)化就是簡(jiǎn)單的一個(gè)類(lèi)型賦值給另一個(gè)類(lèi)型,沒(méi)有顯式的告訴編譯器發(fā)生了轉(zhuǎn)化。并不是所有的類(lèi)型都支持隱式的類(lèi)型轉(zhuǎn)化。

代碼示例:

面試題NO.21-NO.25

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

答案:不是。

問(wèn)題:native方法是什么?

答案:native方法是非Java代碼實(shí)現(xiàn)的方法。

問(wèn)題:在System.out.println()里面,System, out, println分別是什么?

答案:System是系統(tǒng)提供的預(yù)定義的final類(lèi),out是一個(gè)PrintStream對(duì)象,println是out對(duì)象里面一個(gè)重載的方法。

問(wèn)題:封裝,繼承和多態(tài)是什么?

答案:簡(jiǎn)單來(lái)說(shuō),多態(tài)是指一個(gè)名字多種實(shí)現(xiàn)。多態(tài)使得一個(gè)實(shí)體通過(guò)一個(gè)通用的方式來(lái)實(shí)現(xiàn)不同的操作。具體的操作是由實(shí)際的實(shí)現(xiàn)來(lái)決定的。

多態(tài)在Java里有三種表現(xiàn)方式:方法重載通過(guò)繼承實(shí)現(xiàn)方法重寫(xiě)通過(guò)Java接口進(jìn)行方法重寫(xiě)。

問(wèn)題:顯式的類(lèi)型轉(zhuǎn)化是什么?

答案:顯式的類(lèi)型轉(zhuǎn)化是明確告訴了編譯器來(lái)進(jìn)行對(duì)象的轉(zhuǎn)化。

代碼示例:

面試題NO.26-NO.30

問(wèn)題:什么是Java虛擬機(jī)?

答案:Java虛擬機(jī)是能移植到不同硬件平臺(tái)上的軟件系統(tǒng)。

問(wèn)題:類(lèi)型向下轉(zhuǎn)換是什么?

答案:向下轉(zhuǎn)換是指由一個(gè)通用類(lèi)型轉(zhuǎn)換成一個(gè)具體的類(lèi)型,在繼承結(jié)構(gòu)上向下進(jìn)行。

問(wèn)題:Java的訪問(wèn)修飾符是什么?

答案:訪問(wèn)權(quán)限修飾符是表明類(lèi)成員的訪問(wèn)權(quán)限類(lèi)型的關(guān)鍵字。使用這些關(guān)鍵字來(lái)限定程序的方法或者變量的訪問(wèn)權(quán)限。它們包含:

public: 所有類(lèi)都可以訪問(wèn) protected: 同一個(gè)包內(nèi)以及所有子類(lèi)都可以訪問(wèn) private: 只有歸屬的類(lèi)才能訪問(wèn)默認(rèn): 歸屬類(lèi)及相同包下的子類(lèi)可以訪問(wèn)。

問(wèn)題:所有類(lèi)的父類(lèi)是什么?

答案:Object.

問(wèn)題:Java的基本類(lèi)型有哪些?

答案:byte,char, short, int, long, float, double, boolean。

面試題NO.31-NO.40

問(wèn)題:靜態(tài)類(lèi)型有什么特點(diǎn)?

答案:靜態(tài)變量是和類(lèi)綁定到一起的,而不是類(lèi)的實(shí)例對(duì)象。每一個(gè)實(shí)例對(duì)象都共享同樣一份靜態(tài)變量。也就是說(shuō),一個(gè)類(lèi)的靜態(tài)變量只有一份,不管它有多少個(gè)對(duì)象。類(lèi)變量或者說(shuō)靜態(tài)變量是通過(guò)static這個(gè)關(guān)鍵字來(lái)聲明的。類(lèi)變量通常被用作常量。靜態(tài)變量通常通過(guò)類(lèi)名字來(lái)進(jìn)行訪問(wèn)。當(dāng)程序運(yùn)行的時(shí)候這個(gè)變量就會(huì)創(chuàng)建直到程序結(jié)束后才會(huì)被銷(xiāo)毀。類(lèi)變量的作用域和實(shí)例變量是一樣的。它的初始值和成員變量也是一樣的,當(dāng)變量沒(méi)被初始化的時(shí)候根據(jù)它的數(shù)據(jù)類(lèi)型,會(huì)有一個(gè)默認(rèn)值。類(lèi)似的,靜態(tài)方法是屬于類(lèi)的方法,而不是類(lèi)對(duì)象,它的調(diào)用并不作用于類(lèi)對(duì)象,也不需要?jiǎng)?chuàng)建任何的類(lèi)實(shí)例。靜態(tài)方法本身就是final的,因?yàn)橹貙?xiě)只會(huì)發(fā)生在類(lèi)實(shí)例上,靜態(tài)方法是和類(lèi)綁定在一起的,不是對(duì)象。父類(lèi)的靜態(tài)方法會(huì)被子類(lèi)的靜態(tài)方法屏蔽,只要原來(lái)方法沒(méi)有聲明為final。非靜態(tài)方法不能重寫(xiě)靜態(tài)方法,也就是說(shuō),你不能在子類(lèi)中把一個(gè)靜態(tài)方法改成實(shí)例方法。

非靜態(tài)變量在每一個(gè)對(duì)象實(shí)例上都有單獨(dú)的一份值。

問(wèn)題:操作符和操作符有什么區(qū)別?

答案:當(dāng)一個(gè)表達(dá)式在求值的時(shí)候,兩個(gè)操作數(shù)都會(huì)被求值,更像是一個(gè)操作符的快捷方式。當(dāng)一個(gè)表達(dá)式求值的時(shí)候,先計(jì)算第一個(gè)操作數(shù),如果它返回true才會(huì)計(jì)算第二個(gè)操作數(shù)。如果第一個(gè)操作數(shù)取值為fale,第二個(gè)操作數(shù)就不會(huì)被求值。

問(wèn)題:Java是如何處理整型的溢出和下溢的?

答案:Java根據(jù)類(lèi)型的大小,將計(jì)算結(jié)果中的對(duì)應(yīng)低階字節(jié)存儲(chǔ)到對(duì)應(yīng)的值里面。

問(wèn)題:public static void寫(xiě)成static public void會(huì)怎樣?

答案:程序正常編譯及運(yùn)行。

問(wèn)題,聲明變量和定義變量有什么不同?

答案:聲明變量我們只提供變量的類(lèi)型和名字,并沒(méi)有進(jìn)行初始化。定義包括聲明和初始化兩個(gè)階段String s;只是變量聲明,String s = new String(“bob”); 或者String s = “bob”;是變量定義。

面試題NO.41-NO.45

問(wèn)題:Java支持哪種參數(shù)傳遞類(lèi)型?

答案:Java參數(shù)都是進(jìn)行傳值。對(duì)于對(duì)象而言,傳遞的值是對(duì)象的引用,也就是說(shuō)原始引用和參數(shù)引用的那個(gè)拷貝,都是指向同一個(gè)對(duì)象。

問(wèn)題:對(duì)象封裝的原則是什么?

答案:封裝是將數(shù)據(jù)及操作數(shù)據(jù)的代碼綁定到一個(gè)獨(dú)立的單元。這樣保障了數(shù)據(jù)的安全,防止外部代碼的錯(cuò)誤使用。對(duì)象允許程序和數(shù)據(jù)進(jìn)行封裝,以減少潛在的干涉。對(duì)封裝的另一個(gè)理解是作為數(shù)據(jù)及代碼的保護(hù)層,防止保護(hù)層外代碼的隨意訪問(wèn)。

問(wèn)題:你怎么理解變量?

答案:變量是一塊命名的內(nèi)存區(qū)域,以便程序進(jìn)行訪問(wèn)。變量用來(lái)存儲(chǔ)數(shù)據(jù),隨著程序的執(zhí)行,存儲(chǔ)的數(shù)據(jù)也可能跟著改變。

問(wèn)題:數(shù)值提升是什么?

答案:數(shù)值提升是指數(shù)據(jù)從一個(gè)較小的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成為一個(gè)更大的數(shù)據(jù)類(lèi)型,以便進(jìn)行整型或者浮點(diǎn)型運(yùn)算。在數(shù)值提升的過(guò)程中,byte,char,short值會(huì)被轉(zhuǎn)化成int類(lèi)型。需要的時(shí)候int類(lèi)型也可能被提升成long。long和float則有可能會(huì)被轉(zhuǎn)換成double類(lèi)型。

問(wèn)題:Java的類(lèi)型轉(zhuǎn)化是什么?

答案:從一個(gè)數(shù)據(jù)類(lèi)型轉(zhuǎn)換成另一個(gè)數(shù)據(jù)類(lèi)型叫做類(lèi)型轉(zhuǎn)換。Java有兩種類(lèi)型轉(zhuǎn)換的方式,一個(gè)是顯式的類(lèi)型轉(zhuǎn)換,一個(gè)是隱式的。

面試題NO.46-NO.50

問(wèn)題:main方法的參數(shù)里面,字符串?dāng)?shù)組的第一個(gè)參數(shù)是什么?

答案:數(shù)組是空的,沒(méi)有任何元素。不像C或者C++,第一個(gè)元素默認(rèn)是程序名。如果命令行沒(méi)有提供任何參數(shù)的話,main方法中的String數(shù)組為空,但不是null。

問(wèn)題:怎么判斷數(shù)組是null還是為空?

答案:輸出array.length的值,如果是0,說(shuō)明數(shù)組為空。如果是null的話,會(huì)拋出空指針異常。

問(wèn)題:程序中可以允許多個(gè)類(lèi)同時(shí)擁有都有main方法嗎?

答案:可以。當(dāng)程序運(yùn)行的時(shí)候,我們會(huì)指定運(yùn)行的類(lèi)名。JVM只會(huì)在你指定的類(lèi)中查找main方法。因此多個(gè)類(lèi)擁有main方法并不存在命名沖突的問(wèn)題。

問(wèn)題:靜態(tài)變量在什么時(shí)候加載?編譯期還是運(yùn)行期?靜態(tài)代碼塊加載的時(shí)機(jī)呢?

答案:當(dāng)類(lèi)加載器將類(lèi)加載到JVM中的時(shí)候就會(huì)創(chuàng)建靜態(tài)變量,這跟對(duì)象是否創(chuàng)建無(wú)關(guān)。靜態(tài)變量加載的時(shí)候就會(huì)分配內(nèi)存空間。靜態(tài)代碼塊的代碼只會(huì)在類(lèi)第一次初始化的時(shí)候執(zhí)行一次。一個(gè)類(lèi)可以有多個(gè)靜態(tài)代碼塊,它并不是類(lèi)的成員,也沒(méi)有返回值,并且不能直接調(diào)用。靜態(tài)代碼塊不能包含this或者super,它們通常被用初始化靜態(tài)變量。

問(wèn)題:一個(gè)類(lèi)能擁有多個(gè)main方法嗎?

答案:可以,但只能有一個(gè)main方法擁有以下簽名:

否則程序?qū)o(wú)法通過(guò)編譯。編譯器會(huì)警告你main方法已經(jīng)存在。

面試題NO.51-NO.60

問(wèn)題:簡(jiǎn)單的介紹下JVM是如何工作的?

答案:JVM是一臺(tái)抽象的計(jì)算機(jī),就像真實(shí)的計(jì)算機(jī)那樣,它們會(huì)先將.java文件編譯成.class文件(.class文件就是字節(jié)碼文件),然后用它的解釋器來(lái)加載字節(jié)碼。

問(wèn)題:如果原地交換兩個(gè)變量的值?

答案:先把兩個(gè)值相加賦值給第一個(gè)變量,然后用得到的結(jié)果減去第二個(gè)變量,賦值給第二個(gè)變量。再用第一個(gè)變量減去第二個(gè)變量,同時(shí)賦值給第一個(gè)變量。代碼如下:

使用異或操作也可以交換。第一個(gè)方法還可能會(huì)引起溢出。異或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;

問(wèn)題:什么是數(shù)據(jù)的封裝?

答案:數(shù)據(jù)封裝的一種方式是在類(lèi)中創(chuàng)建set和get方法來(lái)訪問(wèn)對(duì)象的數(shù)據(jù)變量。一般來(lái)說(shuō)變量是private的,而get和set方法是public的。封裝還可以用來(lái)在存儲(chǔ)數(shù)據(jù)時(shí)進(jìn)行數(shù)據(jù)驗(yàn)證,或者對(duì)數(shù)據(jù)進(jìn)行計(jì)算,或者用作自省(比如在struts中使用javabean)。把數(shù)據(jù)和功能封裝到一個(gè)獨(dú)立的結(jié)構(gòu)中稱(chēng)為數(shù)據(jù)封裝。封裝其實(shí)就是把數(shù)據(jù)和關(guān)聯(lián)的操作方法封裝到一個(gè)獨(dú)立的單元中,這樣使用關(guān)聯(lián)的這些方法才能對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)操作。封裝提供的是數(shù)據(jù)安全性,它其實(shí)就是一種隱藏?cái)?shù)據(jù)的方式。

問(wèn)題:什么是反射API?它是如何實(shí)現(xiàn)的?

答案:反射是指在運(yùn)行時(shí)能查看一個(gè)類(lèi)的狀態(tài)及特征,并能進(jìn)行動(dòng)態(tài)管理的功能。這些功能是通過(guò)一些內(nèi)建類(lèi)的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以獲取到類(lèi)名。

問(wèn)題:JVM自身會(huì)維護(hù)緩存嗎,是不是在堆中進(jìn)行對(duì)象分配,操作系統(tǒng)的堆還是JVM自己管理的堆?為什么?

答案:是的,JVM自身會(huì)管理緩存,它在堆中創(chuàng)建對(duì)象,然后在棧中引用這些對(duì)象。

面試題NO.61-NO.66

問(wèn)題:虛擬內(nèi)存是什么?

答案:虛擬內(nèi)存又叫延伸內(nèi)存,實(shí)際上并不存在真實(shí)的物理內(nèi)存。

問(wèn)題:方法可以同時(shí)即是static又是synchronized的嗎?

答案:可以。如果這樣做的話,JVM會(huì)獲取和這個(gè)對(duì)象關(guān)聯(lián)的java.lang.Class實(shí)例上的鎖。這樣做等于:

問(wèn)題:String和StringTokenizer的區(qū)別是什么?

答案:StringTokenizer是一個(gè)用來(lái)分割字符串的工具類(lèi)。

問(wèn)題:transient變量有什么特點(diǎn)?

答案:transient變量不會(huì)進(jìn)行序列化。例如一個(gè)實(shí)現(xiàn)Serializable接口的類(lèi)在序列化到ObjectStream的時(shí)候,transient類(lèi)型的變量不會(huì)被寫(xiě)入流中,同時(shí),反序列化回來(lái)的時(shí)候,對(duì)應(yīng)變量的值為null。

問(wèn)題:哪些容器使用Border布局作為它們的默認(rèn)布局?

答案:Window, Frame, Dialog。

問(wèn)題:怎么理解什么是同步?

答案:同步用來(lái)控制共享資源在多個(gè)線程間的訪問(wèn),以保證同一時(shí)間內(nèi)只有一個(gè)線程能訪問(wèn)到這個(gè)資源。在非同步保護(hù)的多線程程序里面,一個(gè)線程正在修改一個(gè)共享變量的時(shí)候,可能有另一個(gè)線程也在使用或者更新它的值。同步避免了臟數(shù)據(jù)的產(chǎn)生。

以上回答轉(zhuǎn)載自求職類(lèi)公眾號(hào)圈里求職,里面還有更多求職面試經(jīng),程序猿也要學(xué)起來(lái)~

Java基礎(chǔ)面試題都有哪些?

一般面試官都會(huì)讓面試者回答哪些Java基礎(chǔ)面試題啊?難不難啊? 針對(duì)這一系列的疑問(wèn),廣州增城Java培訓(xùn)學(xué)校收集了部分Java基礎(chǔ)面試題與大家分享,希望對(duì)各位參加了廣州專(zhuān)業(yè)Java培訓(xùn)的學(xué)生,有一定的幫助! 一、Java基礎(chǔ)知識(shí) 1.Java有那些基本數(shù)據(jù)類(lèi)型,String是不是基本數(shù)據(jù)類(lèi)型,他們有何區(qū)別。 2.字符串的操作: 寫(xiě)一個(gè)方法,實(shí)現(xiàn)字符串的反轉(zhuǎn),如:輸入abc,輸出cba 寫(xiě)一個(gè)方法,實(shí)現(xiàn)字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。 3.數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換 如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字(Integer,Double) 如何將數(shù)字轉(zhuǎn)換為字符 如何取小數(shù)點(diǎn)前兩位,并四舍五入。 4.日期和時(shí)間 如何取得年月日,小時(shí)分秒 如何取得從1970年到現(xiàn)在的毫秒數(shù) 如何獲取某個(gè)日期是當(dāng)月的最后一天 如何格式化日期 5.數(shù)組和集合 6.文件和目錄(I/O)操作 如何列出某個(gè)目錄下的所有文件 如何列出某個(gè)目錄下的所有子目錄 判斷一個(gè)文件或目錄是否存在 如何讀寫(xiě)文件 7.Java多態(tài)的實(shí)現(xiàn)(繼承、重載、覆蓋) 8.編碼轉(zhuǎn)換,怎樣實(shí)現(xiàn)將GB2312編碼的字符串轉(zhuǎn)換為ISO-8859-1編碼的字符串。 9.Java中訪問(wèn)數(shù)據(jù)庫(kù)的步驟,Statement和PreparedStatement之間的區(qū)別。 10.找出下列代碼可能存在的錯(cuò)誤,并說(shuō)明原因: 二、JSPServlet技術(shù) 1.描述JSP和Servlet的區(qū)別、共同點(diǎn)、各自應(yīng)用的范圍 2.在Web開(kāi)發(fā)中需要處理HTML標(biāo)記時(shí),應(yīng)做什么樣的處理,要篩選那些字符( “”) 3.在JSP中如何讀取客戶端的請(qǐng)求,如何訪問(wèn)CGI變量,如何確定某個(gè)Jsp文件的真實(shí)路徑。 4.描述Cookie和Session的作用,區(qū)別和各自的應(yīng)用范圍,Session工作原理。 5.列出Jsp中包含外部文件的方式,兩者有何區(qū)別。 6.說(shuō)明Jsp中errorPage的作用,應(yīng)用范圍。 7.介紹在Jsp中如何使用JavaBeans。 8.簡(jiǎn)單介紹JSP的標(biāo)記庫(kù) 9.Jsp和Servlet中的請(qǐng)求轉(zhuǎn)發(fā)分別如何實(shí)現(xiàn)。 三、J2EE相關(guān)知識(shí) 1.介紹J2EE、J2SE、J2SE的區(qū)別。 2.J2EE是一種技術(shù)還是一種平臺(tái),他提供了那些技術(shù)。 3.什么是Application Server,它有什么功能和優(yōu)點(diǎn)。 4.簡(jiǎn)單介紹連接池的優(yōu)點(diǎn)和原理。 5.Web.xml的作用 四、其他 1.Web安全性的考慮(表單驗(yàn)證、瀏覽器Basic方式的驗(yàn)證,應(yīng)用程序的安全性,SSL,代碼考慮) 2.簡(jiǎn)單介紹您所了解的MVC。 3.簡(jiǎn)單介紹所了解的XML。 4.文檔和編碼規(guī)范 5.Java中的分頁(yè)、效率考慮。 6.簡(jiǎn)單介紹您所了解的structs。 Java面試題收藏: 1.xml在項(xiàng)目中的作用 2.s-EJB 與 e-EJB的區(qū)別 3.會(huì)話面的作用 4.cmp與bmp的優(yōu)缺點(diǎn) 5.j2me程序的必需的幾個(gè)部分 6.c/s與b/s的區(qū)別 7.構(gòu)建一個(gè)connect pool然后再調(diào)用它, 8.j2ee平臺(tái)與dotnet平臺(tái)的區(qū)別 9.ejb的life cycle 10.session bean 和 entity bean的區(qū)別 11.ejb中的transaction機(jī)制 12.synchronized (生產(chǎn)者和消費(fèi)) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp與udp的區(qū)別 18.鏈表與散列表和數(shù)組的區(qū)別 19.堆和棧的區(qū)別 20.ejb的分類(lèi)及區(qū)別 21.你對(duì)現(xiàn)在軟件業(yè)以及國(guó)內(nèi)軟件業(yè)的看法 22.談?wù)刯ava多線程 23.談?wù)勎募用芗夹g(shù) 24.軟件開(kāi)發(fā)生命周期 25.路由協(xié)議種類(lèi)及特點(diǎn) 26.java的awt和swing組件的GUI設(shè)計(jì)的關(guān)鍵 27.對(duì)于java流的認(rèn)識(shí) 28.簡(jiǎn)單描述一下awt與swing區(qū)別。 29.簡(jiǎn)述java編程中事件處理模式。 30.你編寫(xiě)過(guò)applet嗎?applet的安全權(quán)限如何?試列舉java application或者applet中與servlet/jsp通信可以采用的方式。 31.簡(jiǎn)述邏輯操作(如|)與條件操作(如||)的區(qū)別。

java面試 碰到過(guò)哪些異常

算術(shù)異常:ArithmeticException

空指針異常:NullPointerException

類(lèi)型強(qiáng)制轉(zhuǎn)換異常:ClassCastException

數(shù)組負(fù)下標(biāo)異常:NegativeArrayException

數(shù)組下表越界異常:ArrayIndexOutOfBoundsException

違背安全原則異常:SecturityException

文件已結(jié)束異常:EOFException

文件未找到異常:FileNotFoundException

字符串轉(zhuǎn)換為數(shù)字異常:NumberFormatException

操作數(shù)據(jù)庫(kù)異常:SQLException

輸入輸出異常:IOException

方法未找到異常:NoSuchMethodException

抽象方法錯(cuò)誤,當(dāng)應(yīng)用試圖調(diào)用抽象方法時(shí)拋出:java.lang.AbstractMethodError

用來(lái)指示一個(gè)斷言失敗的問(wèn)題:java.lang.AssertionError

類(lèi)循環(huán)依賴(lài)錯(cuò)誤:java.lang.ClassCircularityError

類(lèi)格式錯(cuò)誤:java.lang.ClassFormatError

所有錯(cuò)誤的基類(lèi),用于標(biāo)識(shí)嚴(yán)重的程序運(yùn)行問(wèn)題:java.lang.Error

初始化程序錯(cuò)誤:java.lang.ExceptionInInitializerError

違法訪問(wèn)錯(cuò)誤:java.lang.IllegalAccessError

不兼容的類(lèi)變化錯(cuò)誤:java.lang.IncompatibleClassChangeError

實(shí)例化錯(cuò)誤:java.lang.InstantiationError

內(nèi)部錯(cuò)誤:java.langInternalError

連接錯(cuò)誤:java.lang.LinkageError

未找到類(lèi)定義錯(cuò)誤:java.lang.NoClassDefFoundError

域不存在錯(cuò)誤:java.lang.NoSuchFieldError

方法不存在錯(cuò)誤:java.lang.NoSuchMethodError

內(nèi)存不足錯(cuò)誤:java.lang.OutOfMemoryError

堆棧溢出錯(cuò)誤:java.lang.StackOverflowError

線程結(jié)束:java.lang.ThreadDeath

未知錯(cuò)誤:java.lang.UnknownError

未滿足的鏈接錯(cuò)誤:java.langUnsatisfiedLinkError

不支持的類(lèi)版本錯(cuò)誤:java.lang.UnsupportedClassVersionError

驗(yàn)證錯(cuò)誤:java.lang.VerifyError

虛擬機(jī)錯(cuò)誤:java.lang.VirtualMechineError

算術(shù)條件異常:java.lang.ArithmeticException

數(shù)組索引越界異常:java.lang.ArrayIndexOutOfBoundsException

數(shù)組存儲(chǔ)異常:java.lang.ArrayStoreException

類(lèi)造型異常:java.lang.ClassCastException

找不到類(lèi)異常:java.lang.NotFoundException

不支持克隆異常:Java.lang.CloneNotSupportedException

枚舉敞亮不存在異常:java.lang.EnumConstantNotPresentException

根異常:java.lang.Exception

違法的訪問(wèn)異常:java.lang.IllegalAccessExcetion

違法的監(jiān)控狀態(tài)異常:java.lang.IllegalMonitorStateException

違法的狀態(tài)異常:java.lang.IllegalStateException

違法的線程狀態(tài)異常:java.lang.IllegalThreadStateException

索引越界異常:java.lang.IndexOutOfBoundsException

實(shí)例化異常:java.lang.InstantiationException

被中止異常:java.lang.InterruptedException

數(shù)組大小為負(fù)值異常:java.lang.NegativeArraySizeException

屬性不存在異常:java.lang.NoSuchFieldException

運(yùn)行時(shí)異常:java.lang.RuntimeException

安全異常:java.lang.SecurityException

類(lèi)型不存在異常:java.lang.TypeNotPresentException

java面試題及答案?

JAVA 面試32問(wèn)

第一, 談?wù)刦inal, finally, finalize的區(qū)別。 (最常被問(wèn)到)

final修飾符(關(guān)鍵字)

如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為abstract,又被聲明為final。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。其初始化可以在兩個(gè)地方:一是其定義處,也就是說(shuō)在final變量定義時(shí)直接給其賦值;二是在構(gòu)造函數(shù)中。這兩個(gè)地方只能選其一,要么在定義時(shí)給值,要么在構(gòu)造函數(shù)中給值,不能同時(shí)既在定義時(shí)給了值,又在構(gòu)造函數(shù)中給另外的值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重寫(xiě)(override)。

finally

在異常處理時(shí)提供finally塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的catch子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入finally塊(如果有的話)。

finalize

方法名。Java 技術(shù)允許使用finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在Object類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。

第二,Anonymous Inner Class(匿名內(nèi)部類(lèi)) 是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現(xiàn))interface(接口)?

匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能extends(繼承) 其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)。

第三,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好。(面試題有的很籠統(tǒng))

Nested(嵌套)Class(一般是C++的說(shuō)法)

nested class 是合成型聚集關(guān)系(Composite Aggregation) 的另一種表達(dá)方式,也就是說(shuō)nested class也可以用Aggregation表達(dá)出來(lái),但是,nested class更加精確地表達(dá)了一種專(zhuān)用的、緊耦合的關(guān)系,尤其在代碼生成時(shí),nested class在Java中映射成inline class。比如,計(jì)算機(jī)專(zhuān)用開(kāi)關(guān)電源類(lèi)可以作為計(jì)算機(jī)類(lèi)的nested class,但是,電池組類(lèi)就不一定適合作為計(jì)算機(jī)類(lèi)的nested class,因?yàn)?,電池組類(lèi)表述的是一個(gè)過(guò)于通用的對(duì)象,可能還被包含(Aggregation)于模型中的其他設(shè)備對(duì)象。class A nested in class B,則說(shuō)明A是一個(gè)nested class,一般A是用來(lái)完成B中的某種重要功能。

Inner Class (一般是JAVA的說(shuō)法)

Java內(nèi)部類(lèi)與C++嵌套類(lèi)最大的不同就在于是否有指向外部的引用上。

靜態(tài)內(nèi)部類(lèi)(Inner Class)意味著a創(chuàng)建一個(gè)static內(nèi)部類(lèi)的對(duì)象,不需要一個(gè)外部類(lèi)對(duì)象,b不能從一個(gè)static內(nèi)部類(lèi)的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類(lèi)對(duì)象

第四,和的區(qū)別。(這個(gè)問(wèn)得很少)

是位運(yùn)算符。可為位運(yùn)算,也可為邏輯運(yùn)算,看情況而定。是布爾邏輯運(yùn)算符。

第五,HashMap和Hashtable的區(qū)別。(常問(wèn))

都屬于Map接口的類(lèi),實(shí)現(xiàn)了將惟一鍵映射到特定的值上。

HashMap 類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。

Hashtable 類(lèi)似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?/p>

Hashtable繼承自Dictionary類(lèi),而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)。

HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許,還有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue(Returns true if this map maps one or more keys to the specified value)和containsKey(Returns true if this map contains a mapping for the specified key)。因?yàn)閏ontains(Tests if some key maps into the specified value in this hashtable)方法容易讓人引起誤解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

第六,Collection 和 Collections的區(qū)別。(你千萬(wàn)別說(shuō)一個(gè)是單數(shù)一個(gè)是復(fù)數(shù))

Collections是個(gè)java.util下的類(lèi),它包含有各種有關(guān)集合操作的靜態(tài)方法。

Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。

第七,什么時(shí)候用assert。(API級(jí)的技術(shù)人員有可能會(huì)問(wèn)這個(gè))

斷言是一個(gè)包含布爾表達(dá)式的語(yǔ)句,在執(zhí)行這個(gè)語(yǔ)句時(shí)假定該表達(dá)式為 true。如果表達(dá)式計(jì)算為 false,那么系統(tǒng)會(huì)報(bào)告一個(gè) Assertionerror。它用于調(diào)試目的:

assert(a 0); // throws an Assertionerror if a = 0

斷言可以有兩種形式:

assert Expression1 ;

assert Expression1 : Expression2 ;

Expression1 應(yīng)該總是產(chǎn)生一個(gè)布爾值。

Expression2 可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的 String 消息。

斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用 source 1.4 標(biāo)記:

javac -source 1.4 Test.java

要在運(yùn)行時(shí)啟用斷言,可使用 -enableassertions 或者 -ea 標(biāo)記。

要在運(yùn)行時(shí)選擇禁用斷言,可使用 -da 或者 -disableassertions 標(biāo)記。

要系統(tǒng)類(lèi)中啟用斷言,可使用 -esa 或者 -dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。

可以在預(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過(guò),斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌?,公有方法都必須檢查其參數(shù)。不過(guò),既可以在公有方法中,也可以在非公有方法中利用斷言測(cè)試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。

第八,GC是什么?為什么要有GC?(基礎(chǔ))

GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

gc 雖可清理,但非立刻清理

第九,String s = new String("xyz");創(chuàng)建了幾個(gè)String Object?

兩個(gè)對(duì)象,一個(gè)是"xyx",一個(gè)是指向"xyx"的引用對(duì)象s。一個(gè)對(duì)象,一個(gè)對(duì)象引用。

第十,Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十一,short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)? ( 面試題都是很變態(tài)的,要做好受虐的準(zhǔn)備)

short s1 = 1; s1 = s1 + 1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1 =(short)(s1 + 1) 。

short s1 = 1; s1 += 1正確。

Byte a=1,b=1,bye c=a+b;錯(cuò)誤,byte與byte,short與short運(yùn)算返回值為int

第十二,sleep() 和 wait() 有什么區(qū)別? (搞線程的最?lèi)?ài))

sleep()

是使線程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒(méi)有被調(diào)度為放棄執(zhí)行,除非(a)"醒來(lái)"的線程具有更高的優(yōu)先級(jí) (b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?/p>

wait()

是線程交互時(shí),如果線程對(duì)一個(gè)同步對(duì)象x 發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對(duì)象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到

第十三,Java有沒(méi)有g(shù)oto?(很十三的問(wèn)題,如果哪個(gè)面試的問(wèn)到這個(gè)問(wèn)題,我勸你還是別進(jìn)這家公司)

Goto java中的保留字,現(xiàn)在沒(méi)有在java中使用。

第十四,數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?

數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。

String有有l(wèi)ength()這個(gè)方法。

第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型? (常問(wèn))

方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。

重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),

重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。

如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被"屏蔽"了。

如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。但是不能通過(guò)返回值進(jìn)行overload。

第十六,Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

Set里的元素是不能重復(fù)的,那么用iterator()方法來(lái)區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。

equals()和==方法決定引用值是否指向同一對(duì)象equals()在類(lèi)中被覆蓋,為的是當(dāng)兩個(gè)分離的對(duì)象的內(nèi)容和類(lèi)型相配的話,返回真值。

第十七,給我一個(gè)你最常見(jiàn)到的runtime exception。(如果你這個(gè)答不出來(lái),面試的人會(huì)認(rèn)為你沒(méi)有實(shí)際編程經(jīng)驗(yàn))

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,

ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

第十八,error和exception有什么區(qū)別?

error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。

exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

error--unchecked exception--checked

第十九,List, Set, Map是否繼承自Collection接口?

List,Set是Map不是(與Collection同級(jí))

第二十,abstract class和interface有什么區(qū)別? (常問(wèn))

聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。不能創(chuàng)建abstract 類(lèi)的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。取而代之,在子類(lèi)中實(shí)現(xiàn)該方法。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法。

接口(interface)是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口。

第二十一,abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

都不能

第二十二,接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?

接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。

第二十三,啟動(dòng)一個(gè)線程是用run()還是start()?

啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

第二十四,構(gòu)造器Constructor是否可被override?

構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。

第二十五,是否可以繼承String類(lèi)?

String類(lèi)是final類(lèi)故不可以繼承

第二十六,當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問(wèn)。

第二十七,try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

會(huì)執(zhí)行,在return前執(zhí)行。

第二十八,編程題: 用最有效率的方法算出2乘以8等于幾?(有C背景的程序員特別喜歡問(wèn)這種問(wèn)題)

2 3

第二十九,兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對(duì)不對(duì)?

不對(duì),有相同的hash code。看你的對(duì)象類(lèi)型了。

第三十,當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?

是值傳遞。Java 編程語(yǔ)言只由值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用。對(duì)象的內(nèi)容可以在被調(diào)用的方法中改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

Ps:在Java7中String可以用在switch中

第三十二,編程題: 寫(xiě)一個(gè)Singleton出來(lái)。

Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。

一般Singleton模式通常有幾種種形式:

第一種形式: 定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類(lèi)變量,在類(lèi)初始化時(shí)實(shí)例話,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。

public class Singleton {

private Singleton(){}

//在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?

//注意這是private 只供內(nèi)部調(diào)用

private static Singleton instance = new Singleton();

//這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)

public static Singleton getInstance() {

return instance;

}

}

第二種形式:

public class Singleton {

private static Singleton instance = null;

public static synchronized Singleton getInstance() {

//這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次

//使用時(shí)生成實(shí)例,提高了效率!

if (instance==null)

instance=new Singleton();

return instance; }

}

其他形式:

定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,所有方法為static的。

一般認(rèn)為第一種形式要更加安全些

java基礎(chǔ)面試題有哪些?

下面是10道java基礎(chǔ)面試題,后附答案

1.什么是 Java 虛擬機(jī)?為什么 Java 被稱(chēng)作是“平臺(tái)無(wú)關(guān)的編程語(yǔ)言”?

Java 虛擬機(jī)是一個(gè)可以執(zhí)行 Java 字節(jié)碼的虛擬機(jī)進(jìn)程。Java 源文件被編譯成能被 Java 虛擬機(jī)執(zhí)行的字節(jié)碼文件。

Java 被設(shè)計(jì)成允許應(yīng)用程序可以運(yùn)行在任意的平臺(tái),而不需要程序員為每一個(gè)平臺(tái)單獨(dú)重寫(xiě)或者是重新編譯。Java 虛擬機(jī)讓這個(gè)變?yōu)榭赡?,因?yàn)樗赖讓佑布脚_(tái)的指令長(zhǎng)度和其他特性。

2.“static”關(guān)鍵字是什么意思?Java 中是否可以覆蓋(override)一個(gè) private 或者是static 的方法?

“static”關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒(méi)有所屬的類(lèi)的實(shí)例變量的情況下被訪問(wèn)。

Java 中 static 方法不能被覆蓋,因?yàn)榉椒ǜ采w是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的,而 static 方法是編譯時(shí)靜態(tài)綁定的。static 方法跟類(lèi)的任何實(shí)例都不相關(guān),所以概念上不適用。

3.JDK 和 JRE 的區(qū)別是什么?

Java 運(yùn)行時(shí)環(huán)境(JRE)是將要執(zhí)行 Java 程序的 Java 虛擬機(jī)。它同時(shí)也包含了執(zhí)行 applet 需要的瀏覽器插件。Java 開(kāi)發(fā)工具包 (JDK)是完整的 Java 軟件開(kāi)發(fā)包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調(diào)試器),可以讓開(kāi)發(fā)者開(kāi)發(fā)、編譯、執(zhí)行 Java 應(yīng)用程序。

4.是否可以在 static 環(huán)境中訪問(wèn)非 static 變量?

static 變量在 Java 中是屬于類(lèi)的,它在所有的實(shí)例中的值是一樣的。當(dāng)類(lèi)被 Java 虛擬機(jī)載入的時(shí)候,會(huì)對(duì) static 變量進(jìn)行初始化。如果你的代碼嘗試不用實(shí)例來(lái)訪問(wèn)非 static 的變量,編譯器會(huì)報(bào)錯(cuò),因?yàn)檫@些變量還沒(méi)有被創(chuàng)建出來(lái),還沒(méi)有跟任何實(shí)例關(guān)聯(lián)上。

5.Java 支持的數(shù)據(jù)類(lèi)型有哪些?什么是自動(dòng)拆裝箱?

Java 語(yǔ)言支持的 8 中基本數(shù)據(jù)類(lèi)型是:

?byte

?short

?int

?long

?float

?double

?boolean

?char

自動(dòng)裝箱是 Java 編譯器在基本數(shù)據(jù)類(lèi)型和對(duì)應(yīng)的對(duì)象包裝類(lèi)型之間做的一個(gè)轉(zhuǎn)化。比如:把 int 轉(zhuǎn)化成 Integer,double 轉(zhuǎn)化成 double,等等。反之就是自動(dòng)拆箱。

6.Java 支持多繼承么?

不支持,Java 不支持多繼承。每個(gè)類(lèi)都只能繼承一個(gè)類(lèi),但是可以實(shí)現(xiàn)多個(gè)接口。

7.Java 中,什么是構(gòu)造函數(shù)?什么是構(gòu)造函數(shù)重載?什么是復(fù)制構(gòu)造函數(shù)?

當(dāng)新對(duì)象被創(chuàng)建的時(shí)候,構(gòu)造函數(shù)會(huì)被調(diào)用。每一個(gè)類(lèi)都有構(gòu)造函數(shù)。在程序員沒(méi)有給類(lèi)提供構(gòu)造函數(shù)的情況下,Java 編譯器會(huì)為這個(gè)類(lèi)創(chuàng)建一個(gè)默認(rèn)的構(gòu)造函數(shù)。

Java 中構(gòu)造函數(shù)重載和方法重載很相似。可以為一個(gè)類(lèi)創(chuàng)建多個(gè)構(gòu)造函數(shù)。每一個(gè)構(gòu)造函數(shù)必須有它自己唯一的參數(shù)列表。

Java 不支持像 C++中那樣的復(fù)制構(gòu)造函數(shù),這個(gè)不同點(diǎn)是因?yàn)槿绻悴蛔约簩?xiě)構(gòu)造函數(shù)的情況下,Java 不會(huì)創(chuàng)建默認(rèn)的復(fù)制構(gòu)造函數(shù)。

8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?

Java 中的方法重載發(fā)生在同一個(gè)類(lèi)里面兩個(gè)或者是多個(gè)方法的方法名相同但是參數(shù)不同的情況。與此相對(duì),方法覆蓋是說(shuō)子類(lèi)重新定義了父類(lèi)的方法。方法覆蓋必須有相同的方法名,參數(shù)列表和返回類(lèi)型。覆蓋者可能不會(huì)限制它所覆蓋的方法的訪問(wèn)。

9.接口和抽象類(lèi)的區(qū)別是什么?

Java 提供和支持創(chuàng)建抽象類(lèi)和接口。它們的實(shí)現(xiàn)有共同點(diǎn),不同點(diǎn)在于:

?接口中所有的方法隱含的都是抽象的。而抽象類(lèi)則可以同時(shí)包含抽象和非抽象的方法。

?類(lèi)可以實(shí)現(xiàn)很多個(gè)接口,但是只能繼承一個(gè)抽象類(lèi)

?類(lèi)如果要實(shí)現(xiàn)一個(gè)接口,它必須要實(shí)現(xiàn)接口聲明的所有方法。但是,類(lèi)可以不實(shí)現(xiàn)抽象類(lèi)聲明的所有方法,當(dāng)然,在這種情況下,類(lèi)也必須得聲明成是抽象的。

?抽象類(lèi)可以在不提供接口方法實(shí)現(xiàn)的情況下實(shí)現(xiàn)接口。

?Java 接口中聲明的變量默認(rèn)都是 final 的。抽象類(lèi)可以包含非 final 的變量。

?Java 接口中的成員函數(shù)默認(rèn)是 public 的。抽象類(lèi)的成員函數(shù)可以是 private, protected 或者是 public。

?接口是絕對(duì)抽象的,不可以被實(shí)例化。抽象類(lèi)也不可以被實(shí)例化,但是,如果它包含 main 方法的話是可以被調(diào)用的。

10.什么是值傳遞和引用傳遞?

對(duì)象被值傳遞,意味著傳遞了對(duì)象的一個(gè)副本。因此,就算是改變了對(duì)象副本,也不會(huì)影響源對(duì)象的值。

對(duì)象被引用傳遞,意味著傳遞的并不是實(shí)際的對(duì)象,而是對(duì)象的引用。因此,外部對(duì)引用對(duì)象所做的改變會(huì)反映到所有的對(duì)象上。

最后祝你面試順利!

java面試要注意什么

這些年面試了各種水平不一的Java開(kāi)發(fā)程序員,現(xiàn)在就是感覺(jué)現(xiàn)在做Java開(kāi)發(fā)的人,內(nèi)心過(guò)于浮躁,大部分的人都是急于求成,或許現(xiàn)在這個(gè)時(shí)代就是這個(gè)樣子,每一個(gè)人都想要用最少的付出,得到最快的回報(bào)。尤其是現(xiàn)在的90后!技術(shù)一般,要求還很高。

其實(shí)很多剛想要入職的人,根據(jù)不懂的面試是什么,至于面試技巧之類(lèi)的,更是一無(wú)所知,所以就導(dǎo)致面試受到了嚴(yán)重的打擊,甚至有的人就放棄了。所以我從這篇文章中,想要總結(jié)一些面試技巧和一些坑,做好準(zhǔn)備才能面試成功。

我是咋面試Java的?

一、簡(jiǎn)歷

找工作無(wú)非就是兩個(gè)步驟,首先是簡(jiǎn)歷,其次是面試。先說(shuō)簡(jiǎn)歷的問(wèn)題,一般情況公司肯定是從簡(jiǎn)歷高的從上往下進(jìn)行選擇,因?yàn)閷W(xué)歷其實(shí)本身就是代表了能力。但不是說(shuō)學(xué)歷代表了一切。在我們不了解面試者的實(shí)際情況下,我們只能從上往下面進(jìn)行選擇。無(wú)論是hr還是我們做技術(shù)的,都有自己的一個(gè)標(biāo)準(zhǔn),所以你首先是簡(jiǎn)歷要寫(xiě)的讓別人映入眼簾。而不同職能的人撈簡(jiǎn)歷的方式也千差萬(wàn)別。

我選擇簡(jiǎn)歷的角度有自己的看法,當(dāng)然,不同的面試官有不同的選擇。

1. 我看簡(jiǎn)歷中所提的技術(shù)需求是否滿足我的要求,我看重簡(jiǎn)歷中他善于的技術(shù),如果一點(diǎn)技術(shù)詞匯沒(méi)有提到,那么這個(gè)人有以下幾種可能:

NO.1很水

NO.2很牛但是概率很小

NO.3不會(huì)寫(xiě)簡(jiǎn)歷

在第一關(guān)中,很多人會(huì)因?yàn)楹?jiǎn)歷不行,所以喪失了面試的機(jī)會(huì)。

大家肯定會(huì)問(wèn),我應(yīng)該怎么在簡(jiǎn)歷中體現(xiàn)自己的實(shí)力呢?

你現(xiàn)在面試個(gè)公司,他們的主要技術(shù)是SSM技術(shù)的工程師,你的簡(jiǎn)歷里面只有 SSM這個(gè)名詞是不夠的,最好能體現(xiàn)出 SSM的生態(tài)來(lái)以及你對(duì)于SSM的理解。

二、個(gè)人介紹

如果簡(jiǎn)歷通過(guò)了篩選,下面就是見(jiàn)真章的時(shí)候了,面試環(huán)節(jié)。首先一定要準(zhǔn)備好一段5分鐘的個(gè)人介紹。

遇見(jiàn)過(guò)這樣的面試者,個(gè)人介紹說(shuō)不完,廢話太多,別人聽(tīng)的很煩,從高中時(shí)代說(shuō)起,然而面試官并沒(méi)有那么多的耐心和時(shí)間。這樣會(huì)留下不太好的初次印象。正確的做法是:

言簡(jiǎn)意賅的說(shuō)明自己的工作時(shí)間,擅長(zhǎng)技術(shù)棧和自己的工作預(yù)期。

三、技術(shù)名詞

我是通過(guò)技術(shù)名詞來(lái)篩選簡(jiǎn)歷,這就成為了我面試的重點(diǎn)部分。簡(jiǎn)歷都是技術(shù)名詞也是一把雙刃劍:

1. 不寫(xiě)技術(shù)名詞,簡(jiǎn)歷不容易通過(guò);

2. 寫(xiě)上,需要充分的準(zhǔn)備,否則你的技術(shù)能力可能會(huì)面試失?。?/p>

四、詢問(wèn)項(xiàng)目的深度

項(xiàng)目經(jīng)驗(yàn)是面試中“最”重要環(huán)節(jié),要對(duì)于面試者有全面的認(rèn)識(shí),我會(huì)用很多時(shí)間去詢問(wèn)面試者做過(guò)的項(xiàng)目。

不會(huì)有人只有一個(gè)項(xiàng)目,我的問(wèn)題就變成了:看出來(lái)你做過(guò)不少項(xiàng)目,有沒(méi)有哪個(gè)項(xiàng)目是你做的最好,你可以拿出來(lái)說(shuō)一說(shuō)。

如果大家對(duì)于學(xué)習(xí)Java有任何問(wèn)題(學(xué)習(xí)方法,學(xué)習(xí)效率,如何就業(yè)),可以隨時(shí)來(lái)咨詢我,這是我的Java交流學(xué)習(xí)扣扣qun:前面是六一五,中間是七四一,后面是六三六。 多多交流問(wèn)題,互幫互助,qun里有不錯(cuò)的學(xué)習(xí)教程和開(kāi)發(fā)工具。

當(dāng)面試者講自己項(xiàng)目的同時(shí),作為面試官,有幾件事情需要確定:

1. 首先要確定項(xiàng)目是否是自己做的,即確定項(xiàng)目的真實(shí)性;

舉個(gè)例子:你的項(xiàng)目是 SSM搭建的,是否可以告知搭建項(xiàng)目的過(guò)程和需要注意的地方是什么嗎?

這時(shí)候有人就懵逼了,什么都說(shuō)不出來(lái)。

細(xì)問(wèn)之下,告訴我項(xiàng)目是其他同事搭建的,自己只負(fù)責(zé)開(kāi)發(fā)業(yè)務(wù)。

2. 項(xiàng)目的缺陷

架構(gòu)項(xiàng)目的時(shí),想太多會(huì)過(guò)度設(shè)計(jì),想的少會(huì)出現(xiàn)業(yè)務(wù)增長(zhǎng)而造成的種種問(wèn)題。企業(yè)在探索某個(gè)技術(shù)領(lǐng)域的最佳實(shí)踐,其實(shí)并沒(méi)有行業(yè)通用標(biāo)準(zhǔn),只是思想可以借鑒罷了。

不過(guò),經(jīng)驗(yàn)豐富的話,還可以不斷重構(gòu),確實(shí)可以修復(fù)項(xiàng)目的缺陷。所以呢?我的問(wèn)題來(lái)了:在項(xiàng)目中碰到過(guò)一些問(wèn)題,你是如何解決的?

這是考察你實(shí)際處理問(wèn)題的能力,還有你這個(gè)人是否會(huì)獨(dú)立思考,是否有腦子在運(yùn)轉(zhuǎn),這個(gè)真正的個(gè)人能力。

 3. 項(xiàng)目的深度

項(xiàng)目做到一定規(guī)模后,想要得到更大的提升,一定會(huì)去深挖原理。

項(xiàng)目深度的考察其實(shí)比較難,總會(huì)有一些行業(yè)通用問(wèn)題需要去解決,這也就是 BAT,TMD 這些公司經(jīng)常會(huì)去制定一些行業(yè)標(biāo)準(zhǔn),開(kāi)源一些技術(shù)方案的原因。

當(dāng)然,很多公司還是達(dá)不到這個(gè)層次,所以項(xiàng)目深度也是因人而異,并沒(méi)有通用標(biāo)準(zhǔn)。

所以考察方向就成了對(duì)這個(gè)項(xiàng)目的持續(xù)開(kāi)發(fā),垂直領(lǐng)域以及深度思考。

五、程序基礎(chǔ),手寫(xiě)代碼,算法

如果面試要求手寫(xiě)代碼的面試官是不是都很傻叉?

當(dāng)然不是,我們通過(guò)寫(xiě)代碼就可以看出一個(gè)人的編程功底和編程思想。我們很多時(shí)候都在閱讀別人的代碼,所以能迅速的看出你代碼問(wèn)題的人,在我看來(lái),能力是在你之上的。

六、是否熱愛(ài)技術(shù)

一句話,即使你沒(méi)有那么熱愛(ài)技術(shù),你也要表現(xiàn)的很熱愛(ài)技術(shù)。

七、個(gè)人職業(yè)規(guī)劃

最開(kāi)始,我認(rèn)為所謂的個(gè)人規(guī)劃其實(shí)就是空談,一切不切實(shí)際的東西。但是當(dāng)接觸的人多了,我慢慢發(fā)現(xiàn)。有職業(yè)規(guī)劃的人和沒(méi)有職業(yè)規(guī)劃的人真的不一樣。我會(huì)發(fā)現(xiàn)有些人之后的幾年毫無(wú)進(jìn)展,完全是在混資歷,技術(shù)一塌糊涂。

為什么會(huì)有這種現(xiàn)象,我猜測(cè)大概有如下幾點(diǎn)原因:

1. 沒(méi)有個(gè)人規(guī)劃,走哪算哪,混日子型;

2. 忙于管理,疏于技術(shù);

3. 長(zhǎng)期在一個(gè)崗位,做著千篇一律的事情,永遠(yuǎn)在寫(xiě)CRUD;

八、面試者反饋

面試接近尾聲的時(shí)候,作為尊重,這時(shí)候我都會(huì)去問(wèn)這樣一個(gè)問(wèn)題:大概情況我都了解了,有沒(méi)有你覺(jué)得自己擅長(zhǎng)而又沒(méi)被問(wèn)到的東西?

每個(gè)人都會(huì)有自己的思維,甚至是偏見(jiàn),所以面試的時(shí)候一定要去得到面試者的互動(dòng)和反饋,從而映證自己的觀點(diǎn)。報(bào)著一個(gè)人才都不放過(guò)的心態(tài),去全方位了解面試者。

九、你有什么問(wèn)題想問(wèn)我?

面試官一定要放低姿態(tài),不要一副高高在上的樣子,尤其是做技術(shù)的。如果覺(jué)得面試者稍微有些緊張,可以先聊點(diǎn)其他,如:所學(xué)專(zhuān)業(yè),住在哪里,上下班時(shí)間之類(lèi)無(wú)關(guān)痛癢的問(wèn)題,緩解一下緊張氣氛。

至于最后一個(gè)問(wèn)題為什么要問(wèn):你有什么問(wèn)題想問(wèn)我?有以下幾點(diǎn)理由:

1. 確定面試反饋;

2. 給面試者一個(gè)溝通的機(jī)會(huì);

3. 看看面試者對(duì)應(yīng)試部門(mén)的了解或者是對(duì)公司的興趣;


網(wǎng)站標(biāo)題:java面試代碼安全,java軟件開(kāi)發(fā)面試
路徑分享:http://weahome.cn/article/hoejpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部