Java面試題基礎篇02 (問題和答案)

上一篇: Java面試題基礎篇01 (問題和答案)

15. 下面String的區別 重要

String str1 = “abc”; // 創建1個對象, 放入String 常量池, 一般稱爲常量對象
String str2 = new String(“abc”); // 創建 2個對象,先 new一個對象,然後判斷”abc” String常量池是否有,沒有會再創建一個

16. 下面Integer和 int的輸出和區別 重要
Integer a1 = 127, b1 = 127; 
Integer a2 = 128, b2 = 128;
System.out.println(a1 == b1); // true 
System.out.println(a2 == b2); // false
// 解釋:Integer類內部 通過靜態內部類提供了一個緩存池,範圍在-128~127之間,
        Integer如果賦值在這個範圍之間,會直接指向內存池,如果超出會 new 新的對象。

Integer aa = new Integer(1);
Integer bb = new Integer(1);
System.out.println(aa == bb); //false
System.out.println(aa.equals(bb)); //true
// 解釋: 對象只要是new的就是新的內存地址

Integer aa = new Integer(1);
int bb = 1;
System.out.println(aa == bb); //true
System.out.println(aa.equals(bb)); //true
// 解釋:Integer 和 int 使用 == 比較時候,會被降維到int

Integer aa = new Integer(1);
Integer bb = 1;
System.out.println(aa==bb); //false
System.out.println(aa.equals(bb)); //true
// 解釋:new 的對象 和 棧內存池對象地址不一樣
17. Set集合怎麼保證數據的不重複

先判斷 hashCode,如果不同,直接插入
先判斷 hashCode,如果相同,再調用equals,如果不同,再插入

18. 將 ‘abc123’ 字符串反轉,把你能想到的方法都寫下來。重要

方法一 :StringBuffer

public static String reverse1(String str) {
	return new StringBuilder(str).reverse().toString();
}

方法二: 字符串轉化爲 char[]

	char[] chars = str.toCharArray()
19. throw 和 throws 的區別

throw是語句拋出一個異常。
throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)

實例:

public void inputStreamInit () throws FileNotFoundException {
		try {
			InputStream inputStream = new FileInputStream(new File("//"));
		} catch (FileNotFoundException e) {
			throw e;
		}
	}
20. 一個.java源文件中可以有多個類嗎?

只能有一個 public 修飾的類
其他作用域類不限制,內部類不限制,可以多類

實例一:

 public class a {}   
 class b {}   
 class c {}  

實例二:

public class A {   
       class B {   
       }   
 } 
21. mysql

mysql分頁limit 、
mysql 引擎InnoDB、
Sql速度慢優化,增加索引
Mysql 索引數據結構 B+樹。 優點: 單次請求涉及的磁盤IO次數少、查詢效率穩定、遍歷效率高

22. jsp 和 servlet 的區別

Jsp的本質是servet,只是更注意前端顯示。
Servlet更注重後端邏輯,似於一個Controller,用來做控制。

23. 用最有效率的方法計算2乘以8? 重要
 2 << 3
24. java 中break、continue、return之間的區別

break 結束當前運行的循環
continue 結束本次循環,下一次繼續
return 結束當前運行方法

25. java中有幾種類型的io流?

字符流和字節流。
字節流繼承inputStreamOutputStream
字符流繼承自InputSteamReaderOutputStreamWriter

26. 字節流和字符流區別

字節流是按字節讀取或寫入設備,但字符流是以字符爲單位讀取或寫入設備。
如果是二進制文件,需要用字節流讀取。
一般來說,字符流只處理文本文件。
在設備中,大多數情況是以字節形式存儲數據的,因此字符流通過需要傳入字節流當參數。

27. Java有沒有goto

goto 是Java中的保留字,在目前版本的Java中沒有使用。

28. &和&&的區別?

Java中&&和&都是表示與的邏輯運算符,都表示邏輯運輸符and,
當兩邊的表達式都爲true的時候,整個運算結果才爲true,否則爲false。

&&的短路功能,當第一個表達式的值爲false的時候,則不再計算第二個表達式;
&則兩個表達式都執行。

&可以用作位運算符,當&兩邊的表達式不是Boolean類型的時候,&表示按位操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章