亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

瞬聯(lián)java面試題

時間:2020-11-10 15:42:58 面試問題 我要投稿

瞬聯(lián)java面試題

  1)能說一下java的反射(reflection)機(jī)制嗎?(瞬聯(lián))

瞬聯(lián)java面試題

  開放性和原因連接(causally-connected)是反射系統(tǒng)的兩大基本要素

  2)抽象類和接口有什么區(qū)別?(瞬聯(lián))

  1.abstract class 在 Java 語言中表示的是一種繼承關(guān)系,一個類只能使用一次繼承關(guān)系。但是,一個類卻可以實現(xiàn)多個interface。

  2.在abstract class 中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是static final的,不過在 interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。

  3.abstract class和interface所反映出的設(shè)計理念不同。其實abstract class表示的是"is-a"關(guān)系,interface表示的是"like-a"關(guān)系。

  4.實現(xiàn)抽象類和接口的類必須實現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實現(xiàn)方法。

  5.接口中定義的變量默認(rèn)是public static final 型,且必須給其初值,所以實現(xiàn)類中不能重新定義,也不能改變其值。

  6.抽象類中的變量默認(rèn)是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。

  7.接口中的方法默認(rèn)都是 public,abstract 類型的。

  3)transient和volatile是java關(guān)鍵字嗎?(瞬聯(lián))

  如果用transient聲明一個實例變量,當(dāng)對象存儲時,它的值不需要維持。例如:

  class T

  {

  transient int a; //不需要維持

  int b; //需要維持

  }

  這里,如果T類的一個對象寫入一個持久的存儲區(qū)域,a的內(nèi)容不被保存,但b的將被保存。

  volatile修飾符告訴編譯器被volatile修飾的變量可以被程序的其他部分改變。在多線程程序中,有時兩個或更多的線程共享一個相同的實例變量?紤]效率問題,每個線程可以自己保存該共享變量的私有拷貝。實際的變量副本在不同的時候更新,如當(dāng)進(jìn)入synchronized方法時。 用strictfp修飾類或方法,可以確保浮點運算(以及所有切斷)正如早期的Java版本那樣準(zhǔn)確。切斷只影響某些操作的指數(shù)。當(dāng)一個類被strictfp修飾,所有的方法自動被strictfp修飾。

  strictfp的意思是FP-strict,也就是說精確浮點的意思。在Java虛擬機(jī)進(jìn)行浮點運算時,如果沒有指定strictfp關(guān)鍵字時,Java的編譯器以及運行環(huán)境在對浮點運算的表達(dá)式是采取一種近似于我行我素的行為來完成這些操作,以致于得到的結(jié)果往往無法令你滿意。而一旦使用了strictfp來聲明一個類、接口或者方法時,那么所聲明的范圍內(nèi)Java的編譯器以及運行環(huán)境會完全依照浮點規(guī)范IEEE-754來執(zhí)行。因此如果你想讓你的浮點運算更加精確,而且不會因為不同的硬件平臺所執(zhí)行的結(jié)果不一致的話,那就請用關(guān)鍵字strictfp。

  你可以將一個類、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構(gòu)造函數(shù)聲明strictfp關(guān)鍵字,例如下面的代碼:

  strictfp interface A {}

  public strictfp class FpDemo1 {

  strictfp void f() {}

  }

  2. 錯誤的使用方法

  interface A {

  strictfp void f();

  }

  public class FpDemo2 {

  strictfp FpDemo2() {}

  }

  一旦使用了關(guān)鍵字strictfp來聲明某個類、接口或者方法時,那么在這個關(guān)鍵字所聲明的范圍內(nèi)所有浮點運算都是精確的,符合IEEE-754規(guī)范

  的。例如一個類被聲明為strictfp,那么該類中所有的方法都是strictfp的。

4)在java中怎樣實現(xiàn)多線程?(瞬聯(lián))

extends Thread

implement Runnable

 

方法一:繼承 Thread 類,覆蓋方法 run(),我們在創(chuàng)建的 Thread 類的子類中重寫 run() ,加入線程所要執(zhí)行的代碼即可。下面是一個例子:

  public class MyThread extends Thread
  
{
   
int count= 1, number;
   
public MyThread(int num)
   
{
    
number = num;
    
System.out.println
    ("創(chuàng)建線程
" + number);
   
}
   
public void run() {
    
while(true) {
     
System.out.println
      ("線程 " + number + ":計數(shù)
" + count);
     
if(++count== 6) return;
    
}
  
}
  
public static void main(String args[])
  
{
   for(int i = 0;i
5; i++) new MyThread(i+1).start();
  
}
 
}
  

  這種方法簡單明了,符合大家的習(xí)慣,但是,它也有一個很大的缺點,那就是如果我們的類已經(jīng)從一個類繼承(如小程序必須繼承自 Applet 類),則無法再繼承 Thread 類,這時如果我們又不想建立一個新的類,應(yīng)該怎么辦呢?

  我們不妨來探索一種新的方法:我們不創(chuàng)建Thread類的子類,而是直接使用它,那么我們只能將我們的方法作為參數(shù)傳遞給 Thread 類的實例,有點類似回調(diào)函數(shù)。但是 Java 沒有指針,我們只能傳遞一個包含這個方法的類的實例。

  那么如何限制這個類必須包含這一方法呢?當(dāng)然是使用接口。m然抽象類也可滿足,但是需要繼承,而我們之所以要采用這種新方法,不就是為了避免繼承帶來的'限制嗎?)

  Java 提供了接口 java.lang.Runnable 來支持這種方法。

  方法二:實現(xiàn) Runnable 接口

  Runnable接口只有一個方法run(),我們聲明自己的類實現(xiàn)Runnable接口并提供這一方法,將我們的線程代碼寫入其中,就完成了這一部分的任務(wù)。但是Runnable接口并沒有任何對線程的支持,我們還必須創(chuàng)建Thread類的實例,這一點通過Thread類的構(gòu)造函數(shù) public Thread(Runnable target);來實現(xiàn)。下面是一個例子:

  public class MyThread implements Runnable
  
{
   
int count= 1, number;
   
public MyThread(int num)
   
{
    
number = num;
    System.out.println("創(chuàng)建線程
" + number);
   
}
   
public void run()
   
{
    
while(true)
    
{
     
System.out.println
     ("線程 " + number + ":計數(shù)
" + count);
     
if(++count== 6) return;
    
}
   
}
   
public static void main(String args[])
   
{
    for(int i = 0; i
5;i++) new Thread(new MyThread(i+1)).start();
   
}
  
}
  

  嚴(yán)格地說,創(chuàng)建Thread子類的實例也是可行的,但是必須注意的是,該子類必須沒有覆蓋 Thread 類的 run 方法,否則該線程執(zhí)行的將是子類的 run 方法,而不是我們用以實現(xiàn)Runnable 接口的類的 run 方法,對此大家不妨試驗一下。

  使用 Runnable 接口來實現(xiàn)多線程使得我們能夠在一個類中包容所有的代碼,有利于封裝,它的缺點在于,我們只能使用一套代碼,若想創(chuàng)建多個線程并使各個線程執(zhí)行不同的代碼,則仍必須額外創(chuàng)建類,如果這樣的話,在大多數(shù)情況下也許還不如直接用多個類分別繼承 Thread 來得緊湊。

【瞬聯(lián)java面試題】相關(guān)文章:

java基礎(chǔ)面試題201711-13

華為Java面試題精選10-24

高級Java面試題匯總09-12

2016年JAVA面試題11-07

精選Java線程面試題06-15

2017年java華為面試題08-20

經(jīng)典的Java基礎(chǔ)面試題08-22

JAVA經(jīng)典面試題目匯總10-12

java程序員面試題08-27

最新java面試題及答案08-20