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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十道上市公司java面试试题

發布時間:2024/1/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十道上市公司java面试试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下試題均來自上市企業公司

1、列舉出JAVA中6個比較常用的包

java.lang;java.util;java.io;java.sql;java.awt;java.net;javax.swing

2、JDK中哪些類是不能繼承的?

不能繼承的是類是那些用final關鍵字修飾的類。一般比較基本的類型或防止擴展類無意間破壞原來方法的實現的類型都應該是final的。

3、String是最基本的數據類型嗎?

基本數據類型包括byte、int、char、long、float、double、boolean和short。

所以String不屬于基本數據類型范疇內,但String屬于最常見一種引用類型。

4、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?【博炎科技面試題】

對于short s1 = 1; s1 = s1 + 1;由于s1+1運算時會自動提升表達式的類型,所以結果是int型,再賦值給short類型s1時,編譯器會提示錯誤,需要強制轉換類型。

對于short s1 = 1; s1 += 1;由于+=是java語言規定的運算符,Java編譯器會對它進行特殊處理,因此可以正確編譯。

主要考查幾種基本數據類型在運算時的,由低到高會自動轉換,而由高到低時會強制轉換。

5、Java對象初始化順序?【騰鵬科技面試題】

分為兩種,一種是本類的初始化,一種是含有父類的初始化順序。這里分開來說,

本類的初始化順序是:靜態變量、靜態初始化塊、變量、初始化塊、構造函數

繼承類的初始化順序是:父類靜態變量、父類靜態初始化塊、子類靜態變量、子類靜態初始塊、父類變量、父類初始化塊、父類構造函數、子類變量、子類初始化塊、子類構造函數。

static{

System.out.println("靜態塊");

}

{

System.out.println("初始化模塊"); }

public ClassName() {

System.out.println("構造方法");

}

說明:

原則上回答全面的話,應該是完整的說出帶有繼承的這種類的初始化過程,下面有個步驟可以參考:

1.裝載程序的時候首先找到的是它的基(父)類,如果有多層基(父)類則會一級一級的往上找最后找到根基(父)類。

2.執行根基礎(父)類中的static初始化,再執行下一個衍生類中的static,依此類推,一直保持這個順序。

3.此時類已經裝載完畢,開始創建對象,所有的基本數據類型都會設成它們的默認值,對象句柄設為null

4.調用基礎(父)類的構造方法,基礎(父)類的構建采用與衍生類構造方法完全相同的處理過程。

5.構造方法初始完之后,進行變量的初始化。

6.執行構造方法中剩余的部分。

6、寫幾個線程安全類,不安全的,支持排序的類名?

線程安全類:Vector、Hashtable、Stack。

線程不安全的類:ArrayList、Linkedlist、HashSet、TreeSet、HashMap、TreeMap等。

支持排序的類有HashSet、LinkedHashSet、TreeSet等(Set接口下的實現都支持排序)

【分析】

此題主要考查集合框架的知識。在集合框架中Collection接口為集合的根類型,提供集合操作的常用API方法,該接口下派生出兩個子接口,一個是不支持排序的List接口,一個是有自身排序的Set接口,所以回答排序與不排序分別從兩接口的實現中在作答。線程安全上來說,Vector類比同屬于List接口的ArrayList要早,是一個線程安全的類,在JDK1.2以后才推出一個異步的ArrayList類,比Vector類效率高。同理Stack繼承自Vector也線程安全的類,另外在在Map接口的實現在Hashtable也是個線程安全的類。

7、哪幾個方法可以實現一個線程?

一是繼承Thread,重寫Thread類的方法run方法;另種是實現runnable接口并實現run方法。

考查線程的基本實現,很多公司喜歡考查這方面知識,另外補充一下關于線程的run方法,在多線程API中啟動一個線程是調用start()方法,線程進入就緒狀態。

8、STOP()和SUSPEND()不推薦使用的原因?

stop()是因為它不安全。它會解除由線程獲取的所有鎖定,當在一個線程對象上調用stop()方法時,這個線程對象所運行的線程就會立即停止,假如一個線程正在執行:synchronized void { x = 3; y = 4;}由于方法是同步的,多個線程訪問時總能保證x,y被同時賦值,而如果一個線程正在執行到x = 3;時,被調用了stop()方法,即使在同步塊中,它也干脆地stop了,這樣就產生了不完整的殘廢數據。而多線程編程中最最基礎的條件要保證數據的完整性,所以請忘記線程的stop方法,以后我們再也不要說“停止線程”了。而且如果對象處于一種不連貫狀態,那么其他線程能在那種狀態下檢查和修改它們。

suspend()方法容易發生死鎖。調用suspend()的時候,目標線程會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復運行。對任何線程來說,如果它們想恢復目標線程,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用suspend(),而應在自己的Thread類中置入一個標志,指出線程應該活動還是掛起。若標志指出線程應該掛起,便用wait()命其進入等待狀態。若標志指出線程應當恢復,則用一個notify()重新啟動線程。

【分析】

9、"=="和equals方法有什么區別?

==操作符專門用來比較兩個變量的值是否相等,也就是用于比較變量所對應的內存中所存儲的數值是否相同,要比較兩個基本類型的數據或兩個引用變量是否相等,只能用==操作符。

如果一個變量指向的數據是對象類型的,那么,這時候涉及了兩塊內存,對象本身占用一塊內存(堆內存),變量也占用一塊內存,例如Objet obj = new Object();變量obj是一個內存,new Object()是另一個內存,此時,變量obj所對應的內存中存儲的數值就是對象占用的那塊內存的首地址。對于指向對象類型的變量,如果要比較兩個變量是否指向同一個對象,即要看這兩個變量所對應的內存中的數值是否相等,這時候就需要用==操作符進行比較。

equals方法是用于比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。例如,對于下面的代碼:

String a=new String("foo");

String b=new String("foo");

兩條new語句創建了兩個對象,然后用a,b這兩個變量分別指向了其中一個對象,這是兩個不同的對象,它們的首地址是不同的,即a和b中存儲的數值是不相同的,所以,表達式a==b將返回false,而這兩個對象中的內容是相同的,所以,表達式a.equals(b)將返回true。

在實際開發中,我們經常要比較傳遞進行來的字符串內容是否等,例如,String input =…;input.equals(“quit”),如果一個類沒有自己定義equals方法,那么它將繼承Object類的equals方法,Object類的equals方法的實現代碼如下:

boolean equals(Object o){

return this==o;

}

這說明,如果一個類沒有自己定義equals方法,它默認的equals方法(從Object類繼承的)就是使用==操作符,也是在比較兩個變量指向的對象是否是同一對象,這時候使用equals和使用==會得到同樣的結果,如果比較的是兩個獨立的對象則總返回false。如果你編寫的類希望能夠比較該類創建的兩個實例對象的內容是否相同,那么你必須覆蓋equals方法,由你自己寫代碼來決定在什么情況即可認為兩個對象的內容是相同的。

10、靜態變量和實例變量的區別?

在語法定義上的區別:靜態變量前要加static關鍵字,而實例變量前則不加。

在程序運行時的區別:實例變量屬于某個對象的屬性,必須創建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。靜態變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以被使用了。總之,實例變量必須創建對象后才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。

例如,對于下面的程序,無論創建多少個實例對象,永遠都只分配了一個staticVar變量,并且每創建一個實例對象,這個staticVar就會加1;但是,每創建一個實例對象,就會分配一個instanceVar,即可能分配多個instanceVar,并且每個instanceVar的值都只自加了1次。

public class VariantTest

{

public static int staticVar = 0;

public int instanceVar = 0;

public VariantTest()

{

staticVar++;

instanceVar++;

System.out.println(“staticVar=”+ staticVar +”,instanceVar=”+ instanceVar);

}

}

備注:這個解答除了說清楚兩者的區別外,最后還用一個具體的應用例子來說明兩者的差異,體現了自己有很好的解說問題和設計案例的能力,思維敏捷,超過一般程序員,有寫作能力!

總結

以上是生活随笔為你收集整理的十道上市公司java面试试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。