題目皆摘自牛客網JAVA專項練習
1.
①、面向物件如果有三大特征,那就是:封裝、繼承、多型
②、面向物件如果有四大特征,那就是:抽象、封裝、繼承、多型
2.給出下面的代碼段:
public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;z=c;
}}
在代碼說明// assignment x=a, y=b處寫入如下哪幾個代碼是正確的?()
A錯,呼叫Base這個構造方法應該這樣 new Base(a,b)
B錯,和C相比應該是分號不是逗號,帥的一塌糊涂
C正常賦值操作
D呼叫本類的構造方法
3.以下方法都是Object類中的方法,
clone()
toString()
wait()
finalize()
4.CMS垃圾回收器在那些階段是沒有用戶執行緒參與的? (初始標記、重新標記)
CMS全稱 Concurrent Mark Sweep,是一款并發的、使用標記-清除演算法的垃圾回收器,以犧牲吞吐量為代價來獲得最短回收停頓時間的垃圾回收器,對于要求服務器回應速度的應用上,這種垃圾回收器非常適合,
CMS的基礎演算法是:標記—清除,
它的程序可以分為以下6個步驟:
- 初始標記(STW initial mark)
- 并發標記(Concurrent marking)
- 并發預清理(Concurrent precleaning)
- 重新標記(STW remark)
- 并發清理(Concurrent sweeping)
- 并發重置(Concurrent reset)
在初次標記,重新標志的時候,要求我們暫停其它應用程式,那么這兩個階段用戶執行緒是不會參與的
5.關于下面一段代碼,以下說法正確的是: (A、C)
public class Test {
private synchronized void a() {
}
private void b() {
synchronized (this) {
}
}
private synchronized static void c() {
}
private void d() {
synchronized (Test.class) {
}
}
}

方法a為同步方法,方法b里面的是同步塊,同步方法使用的鎖是固有物件this,同步塊使用的鎖可以是任意物件,但是方法b里面的同步塊使用的鎖是物件this,所以方法a和方法b鎖住的是同一個物件,
方法c為靜態同步方法,使用的鎖是該類的位元組碼檔案,也就是Test.class,
方法d里面的也是同步塊,只不過使用的鎖是Test.class,所以方法c和方法d鎖住的是同一個物件,(修飾非靜態方法 鎖的是this 物件,修飾靜態方法 鎖的是class物件)
6.
java中true ,false , null在java中不是關鍵字,也不是保留字,它們只是顯式常量值,但是你在程式中不能使用它們作為識別符號,
其中const和goto是java的保留字,java中所有的關鍵字都是小寫的,還有要注意true,false,null,friendly,sizeof不是java的關鍵字,但是你不能把它們作為java識別符號用,
附加面試題:
問:
靜態方法能不能被重寫?
答:
一個指向子類物件的父類參考變數來呼叫父子同名的靜態方法時,只會呼叫父類的靜態方法,
這是因為靜態方法只能被繼承,不能被重寫,如果子類有和父類相同的靜態方法,那么父類的靜態方法將會被隱藏,對于子類不可見,
也就是說,子類和父類中相同的靜態方法是沒有關系的方法,他們的行為不具有多型性,
但是父類的靜態方法可以通過父類.方法名呼叫,
靜態方法也叫類方法是屬于類級別的,也就是屬于當前類本身,呼叫時也是通過當前類的類名進行呼叫,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280991.html
標籤:其他

