天天看點

Java基礎總結——筆面題Java基礎總結——筆面題9.請列出資料庫事務的四個特性

Java基礎總結——筆面題

1.抽象方法能否可以使用static修飾?原因是什麼?

答案:不能,抽象方法需要被子類重寫,而靜态方法不能被重寫。

2.int 和 Integer 有什麼差別?下面倆個輸出語句列印出的結果是什麼?

int a = 1;

int b = 1;

println(a==b);

Integer c = 1;

Integer d = 1;

println(c==d);

答案:int是基本類型,用來表示整型資料,Integer是int對應的包裝類型,可以指向對象。

輸出結果:true true

(Integer内有緩存)

3.編寫一個方法(addAll()),實作以下如何結果:

addAll(1,8); //結果:9

addAll(5,8,-7); // 結果:6

addAll(6,7,-1,-8) // 結果:4

答案:

public int addAll(int... a){
		int sum = 0;
		for(int i:a){
			sum+=i;
		}
		return sum;
	}
           

4.請闡述線程中run方法與start的關系

答案:run方法中是線程啟動後真正要運作的代碼,start方法的作用是用來啟動線程,線程啟動後會自動執行run方法。

5.說說下面語句是否有錯誤,并指出錯在哪裡

import java.util.List;
	...
	List list = new List();
           

答案:報錯,List是接口,不能直接new對象。

6.有以下代碼,請寫出輸出結果

int i = 1;
	println(i++);
	println(++i);
	println(i);
           

答案:1 , 3, 3

7.有以下程式是否會編譯報錯,如果沒報錯,請描述輸出結果是什麼?如果報錯請寫出理由,并指出如何修改,以及修改後的輸出結果是什麼?

public void test() {
		int a;
		try{
			a = (int)Math.random()*10;
		}catch(Exception e){
			e.printStackTrace();
		}
		System.out.println(a);
	}
           

答案:編譯報錯,編譯器認為輸出變量a的時候可能尚未初始化,去掉try-catch或者給a一個初始值即可,輸出結果為0

8.線程中sleep方法與wait方法的差別

答案:sleep是讓目前線程進行休眠,如果這時候線程是拿着鎖對象的,這個鎖對象是【不會】釋放的。

wait是讓目前線程進入等待池,如果這時候線程是拿着鎖對象的,這個鎖對象是【會】釋放的。

9.請列出資料庫事務的四個特性

答案:

原子性、一緻性、隔離性、持久性

10.現在有t1、t2、t3三個線程,你怎樣保證t2在t1執行完後執行,t3在t2執行完後執行?

答案:

在t3線程中調用t2.join().在t2線程中調用t1.join();

11.運作時異常與編譯時異常的差別?

答案:

運作時異常在編譯的時候是不會報錯的,隻有在運作的時候才可能會報錯。

編譯時異常在編譯的時候如果不處理,那麼編譯器就會報錯。

12.以下程式是否會報錯,如果沒有,請寫出結果,有的話請寫出理由。

public class A extends String {
		public static void main(String[] agrs) {
			int num = 0;
			for(int i = 1; i <= 10; i++) {
				num += i;
			}
			System.out.println(num);
		}
	}
           

答案:報錯,Stirng類型不能被繼承。

13.請寫出jdbc程式設計步驟

答案:

1.加載/注冊驅動類

2.獲得conn對象

3.獲得stmt對象

4.執行sql語句

5.處理結果集rs

6.關閉資源

14.同步方法和同步代碼塊分别指的是什麼?

答案:給代碼塊加上synchronized關鍵字,那麼就是同步代碼塊

給方法加上synchronized關鍵字,那麼就是同步方法

15. 以下代碼是否會報錯,如果沒有請寫出結果,有請寫出理由

public class A extends Object {
		public static void main(String[] agrs)  {
			short a = 1;
			System.out.println(a += 1);
			a = a + 1;
			System.out.println(a);
		}
	}
           

答案:報錯,因為a = a+1;這句代碼中,a+1的結果int類型,會提示int值無法指派給short類型變量。

16. JDK8中的函數式接口的特點是什麼

答案:接口中隻有一個抽象方法。

17.有以下代碼:請使用Lambda在進行實作一次,并将代碼進行簡化。

Action a = new Action(){
		public int test(int x,int y){
			return x+y;
		}
	};    
           

答案:Action a = (x,y)->x+y;

18.有以下代碼:編譯是否報錯,如果報錯,請說明原因并進行修改,如果不報錯,請說明代碼的含義。其實Person是Studnet的父類型。

List<Person> list = new ArrayList<Student>();

答案: 報錯,

List<Person>

不是

ArrayList<Student>

的父類型。

修改:

List<Person> list = new ArrayList<Person>();
List<Student> list = new ArrayList<Student>();
List<?> list = new ArrayList<Person>();
           

19.有以下代碼:編譯是否報錯,如果報錯,請說明原因,如果不報錯,請說明代碼的運作結果

public void test() {
		int a = 1;
		try {
			System.exit(0);
		}finally {
			System.out.println(a);
		}
	}
           

答案:不報錯,運作後什麼都不輸出,因為System.exit(0);直接将JVM退出了。

20.在java中,數字16,使用2進制、8進制、10進制、16進制分别怎麼聲明

答案:

int a1 = 0b10000;

int a2 = 020;

int a3 = 16;

int a4 = 0x10;

21.java中,A類繼承B類,B類繼承C類,那麼在A中是否可以通過super關鍵字直接調用到C類中的方法?

答案:不能。

22.java中,Map集合如何擷取所有key值的集合,如何擷取所有value值的集合,如何擷取key-value鍵值對的集合?寫出調用的方法即可。

答案:

map.keySet();

map.values();

map.entrySet();

23.Mysql的分頁可以使用關鍵字limit來完成,那麼Oracle中的分頁功能可以什麼來完成?

答案:oracle中可以使用rownum來完成分頁功能。

24.抽象類中是否有構造器,它的作用是什麼?

答案: 有構造器,作用是讓子類調用的。

25.請寫出jsp的九大内置對象(WEB)

答案:

pageContent

request

session

application

page

response

out

config

exception