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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java mldn_MLDN java面试题

發(fā)布時間:2023/12/9 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java mldn_MLDN java面试题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、? Java中的異常處理機制的簡單原理和應用。

每當產生異常之后,如果沒有程序進行相應的處理,則程序將出現(xiàn)中斷的現(xiàn)象,那么,此時實際上一旦產生一個異常之后,JVM會跑出一個異常類的實例化對象,如果此時使用了try語句進行不活的話,則可以進行異常處理,如果沒有的話,則交給JVM進行處理,當tru語句捕獲到了異常之后,會與catch中的異常類型進行匹配,如果匹配成功,則使用catch語句進行處理。

應用:簡單的引用,就是在所有有throws關鍵字的地方加入try…catch

如果按照一個標準做的話,try、catch、finally、throw、throws關鍵字應該一起使用。

2、? 垃圾回收的優(yōu)點和原理。并考慮2種回收機制。

將無用的對象空間進行釋放,兩種回收:自動回收,手工調用System.gc()方法,實際上調用System.gc()就相當于調用了Runtime.getRuntime().gc()方法。

3、? Error與Exception有什么區(qū)別。

Error表示有JVM進行處理的,是JVM出錯。

Exception表示可以由程序進行處理的,使用try..catch 進行處理。

4、? 談談final,finally,finalize的區(qū)別。

Final是定義常量、方法、類的,生命的方法不能被覆寫、生命的類不能被繼承。

Finally:是一場的統(tǒng)一出口。

Finalize:是垃圾回收前的收尾工作,是Object類中定義的。

5、? Anonymous Inner Class (匿名內部類)是否可以extends(繼承)其他類,是否可以implements(實現(xiàn))interface(接口)?

允許繼承或實現(xiàn),因為匿名內部類就是在抽象類和接口的基礎之上發(fā)展起來的。

6、? Static Nested Class 和Inner Class的不同。

使用static聲明的內部類就是外部類,可以通過 外部類.內部類 直接訪問。

普通的內部類是不能夠直接被外部所訪問的,需要通過外部類實例再找到內部類實例。

7、? HashMap和Hashtable的區(qū)別。

HashMap

|-JDK1.2之后推出,是新的類。

|-采用異步處理方式,性能較高,但是屬于非線程安全。

|-允許設置null。

Hashtable

|-JDk1.0時推出,是舊的類。

|-采用同步處理方式,性能較高,但是屬于線程安全。

|-不允許設置null,否則將出現(xiàn)NullPointerException。

8、? 什么時候用assert?

JDK1.4之后增加的新關鍵字——assert,表示斷言,既程序執(zhí)行到某個地方之后值肯定是預計好的。

一般開發(fā)中很少使用assert。

要想使用斷言,則必須使用-ea參數。

9、? GC是什么?為什么要有GC?

GC:垃圾收集

使用GC可以進行垃圾空間的釋放操作。

10、sleep()和wait()有什么區(qū)別?

sleep()是Thred類中定義的方法,表示線程的休眠,會自動喚醒。

wait()是Object中定義的方法,需要手工調用notify()或notifyAll()方法。

11、String s = new String(“xyz”); 創(chuàng)建了幾個String Object?

產生了兩個實例化對象,一個是匿名對象“xyz”,另外一個是通過關鍵字new實例化的。

12、Java有沒有goto?

goto屬于保留的關鍵字,java中存在goto,知識無法使用。

13、數組有沒有l(wèi)ength()這個方法?String有沒有l(wèi)ength()這個方法?

數組中存在length的屬性,String中存在length()方法。

14、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?

·重載:overload

在一個定義的若干方法。

所有的方法名稱相同,但是參數的類型或個數不同

·腹瀉:override

在繼承的關系中。

在類定義了與父類同名的方法,參數類型或個數最好完全一樣,注意訪問權限不能更加嚴格。

·重載的時候不是依靠返回值類型區(qū)分的,而是靠參數。

15、Set里的元素是不能重復的,那么用什么方法來區(qū)分重復與否呢?使用==還是equals()?他們有何區(qū)別?

依靠hashCode()和equals()兩個方法完成,==屬于地址值比較,兒equals()屬于內容比較。使用的是equals()方法。

16、列舉出常見的runtime exception。

NumberFormatException、ArrayOutIndexofBoundException、NullPointerException、ClassCastException

17、abstract class和interface有什么區(qū)別?

·抽象類

由抽象方法和常量、變量、全局常量、構造方法、普通方法組成。

使用abstract聲明。

子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類中的全部抽象方法。

存在單繼承局限,一個子類只能繼承一個抽象類。

抽象類可以實現(xiàn)若干個接口。

·接口

全部由抽象方法和全局變量組成。

使用interface聲明

子類通過implements實現(xiàn)接口,子類如果不是抽象類,則必須覆寫抽象類中的全部抽象方法。

不存在單繼承局限,一個子類可以實現(xiàn)多個接口。

接口不能繼承一個抽象類,但是允許繼承多個接口。

18、啟動一個線程是用run()還是start()?

使用start()方法,因為要通知JVM進行CPU資源的分類。

19、 try{}里有一個return語句,那么緊跟在這個try{}后的finally{}里的code是不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?

會執(zhí)行,在return之前執(zhí)行,只要是finally{}的代碼永遠會被執(zhí)行。

20、編程題:寫一個Singleton出來(單例設計模式)。

·核心就是構造方法私有化。

寫上包名

class單詞的首字母要大寫

package org.pzx.demo;

public class Singleton{

private static final Singletonsin = new Singleton(); ——在內部產生singleton()對象

private Singleto(){?????? } ?????????????????????????????????????? ??——將構造方法私有化

public static Singleton getInstance(){??????????????? ? ——通過靜態(tài)方法renturn sin

return sin;

}

}

21、編一段代碼,實現(xiàn)在控制臺輸入一組數字后,排序后在控制臺輸出。

·假設數字中間使用“”進行分割,既然要排序,則可以使用集合保存,使用TreeSet保存。

package org.pzx.demo;

import java.io.BufferedReader;

import java.io.InputStremReader;

import java.util.Iterator;

import java.util.Set;

import java.util.TreeSet;

public class Demo{

public static void main(String args[]) throws Exception{

BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

System.out.print("請輸入一組數據,中間使用空格分隔:");

String str = buf.readLine();

Set set = new TreeSet();

String s[] = str.split(" ");//進行拆分

for (String x : s){

set.add(Integer.parseInt(x));//加入數據

}

System.out.println("排序之后的結果是:");

Iterator iter = set.iterator();

while(iter.hasNext()){

System.out.print(iter.next() + "、");

}

}

}

以上的操作中,因為所有的數據都已經架設是正確的數字,但是實際中可能是字符串。

·第一種方法:允許有字符串,但是將所有的字符串忽略。

·第二種方法:不允許有字符串,如果出現(xiàn)了字符串,則程序不再向下繼續(xù)執(zhí)行。

為程序改善功能:第二種方法

package org.pzx.demo;

import java.io.BufferedReader;

import java.io.InputStremReader;

import java.util.Iterator;

import java.util.Set;

import java.util.TreeSet;

public class Demo{

public static void main(String args[]) throws Exception{

BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

System.out.print("請輸入一組數據,中間使用空格分隔:");

String str = buf.readLine();

Set set = new TreeSet();

String s[] = str.split(" ");//進行拆分

for (String x : s){

if(x.matches("\\d+")){

set.add(Integer.parseInt(x));//加入數據

}

}

System.out.println("排序之后的結果是:");

Iterator iter = set.iterator();

while(iter.hasNext()){

System.out.print(iter.next() + "、");

}

}

}

為程序改善功能:第一種方法

package org.pzx.demo;

import java.io.BufferedReader;

import java.io.InputStremReader;

import java.util.Iterator;

import java.util.Set;

import java.util.TreeSet;

public class Demo{

public static void main(String args[]) throws Exception{

BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

System.out.print("請輸入一組數據,中間使用空格分隔:");

String str = buf.readLine();

Set set = new TreeSet();

String s[] = str.replaceAll("\\D+", "").trim()split(" +");//進行拆分

for (String x : s){

set.add(Integer.parseInt(x));//加入數據

}

System.out.println("排序之后的結果是:");

Iterator iter = set.iterator();

while(iter.hasNext()){

System.out.print(iter.next() + "、");

}

}

}

22、列出某文件夾下的所有文件。

·遞歸調用

package org.pzx.demo;

import java.io.Files;

public class ListFiles{

public static void main(Strign args[]){

File file = new File("D:"+File.separator+"doc");

fun(file);

}

public static void fun(File file){

if(file.isDirectory()){

File f[]=file.listFiles();

if(f != null){

for (int x = 0;x < f.length;x++){

fun(f[x]);

}

}

}else{

System.out.println(file);

}

}

}

23、char型變量中能不能存貯一個中文漢字?為什么?

·可以存放,因為使用的是unicode編碼。

24、多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?

·兩種實現(xiàn)方法,繼承Thread類,實現(xiàn)Runnable接口

|-Thread類是Runnable接口的子類。

|-使用Runnable接口可以實現(xiàn)資源共享的目的

|-所有的線程操作都必須通過Thread類的Start()方法啟動

·兩種實現(xiàn)同步的方法:

|-同步代碼塊:Synchronized(this){}

|-同步方法

25、float型 float f=3.4是否正確?

·不正確,默認情況下3.4是double類型的數據。

26、String與StringBuffer區(qū)別?

·String不可修改,StringBuffer允許修改。

27、Class.forName的作用?為什么要用?

Class.forName屬于向容器之中加載驅動程序。

28、int和Integer區(qū)別?

int是基本數據類型,Integer是包裝類

在JDK1.5之后,可以實現(xiàn)自動裝箱及拆箱的操作。

29、用最有效的方法算出2乘以8等于幾?

使用移位操作:2<<3

30、請說出類集框架的完整結構。

·類集框架最大的接口:Collection、Map、Iterator、Enumeration

·Collection:存放單值

|-List:允許有重復內容

|-ArrayList:一步處理,新的操作類,非線程安全

|-Vector:同步處理,舊的操作類,線程安全,支持Enumeration輸出

|-Set:不允許有重復內容,靠hashCode()和equals()進行重復的驗證

·Map:存放一對值

|-HashMap:新的類,異步處理,非線程安全,允許有null

|-Hashtable:舊的類,同步處理,非線程安全,不允許有null

|-Properties:屬性操作類

|-TreeMap:有序排列,按key排序,根據Comparable制定排序規(guī)則

·Iterator:

|-迭代輸出,依靠Collection接口中的Iterator方法輸出,是新的輸出標準

·Enumeration:舊的輸出操作。

31、是否可以繼承String類?

·不允許,因為使用了final聲明。

總結

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

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