一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

java面試問(wèn)題及答案

時(shí)間:2023-04-04 11:24:54 面試問(wèn)題 我要投稿
  • 相關(guān)推薦

java面試問(wèn)題及答案

  JAVA經(jīng)典面試題及參考答案

java面試問(wèn)題及答案

  1、作用域public,private,protected,以及不寫(xiě)時(shí)的區別

  答:區別如下:

  作用域 當前類(lèi) 同一package 子孫類(lèi) 其他package

  public √ √ √ √

  protected √ √ √ ×

  friendly √ √ × ×

  private √ × × ×

  不寫(xiě)時(shí)默認為friendly

  2、ArrayList和Vector的區別,HashMap和Hashtable的區別

  答:就ArrayList與Vector主要從二方面來(lái)說(shuō).

  一.同步性:Vector是線(xiàn)程安全的,也就是說(shuō)是同步的,而ArrayList是線(xiàn)程序不安全的,不是同步的

  二.數據增長(cháng):當需要增長(cháng)時(shí),Vector默認增長(cháng)為原來(lái)一培,而ArrayList卻是原來(lái)的一半

  就HashMap與HashTable主要從三方面來(lái)說(shuō)。

  一.歷史原因:Hashtable是基于陳舊的Dictionary類(lèi)的,HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現

  二.同步性:Hashtable是線(xiàn)程安全的,也就是說(shuō)是同步的,而HashMap是線(xiàn)程序不安全的,不是同步的

  三.值:只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value

  3、char型變量中能不能存貯一個(gè)中文漢字?為什么?

  答:是能夠定義成為一個(gè)中文的,因為java中以unicode編碼,一個(gè)char占16個(gè)字節,所以放一個(gè)中文是沒(méi)問(wèn)題的

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

  答:多線(xiàn)程有兩種實(shí)現方法,分別是繼承Thread類(lèi)與實(shí)現Runnable接口

  同步的實(shí)現方面有兩種,分別是synchronized,wait與notify

  JAVA經(jīng)典面試題及參考答案

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

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

  class T

  {

  transient int a; //不需要維持

  int b; //需要維持

  }

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

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

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

  你可以將一個(gè)類(lèi)、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構造函數聲明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來(lái)聲明某個(gè)類(lèi)、接口或者方法時(shí),那么在這個(gè)關(guān)鍵字所聲明的范圍內所有浮點(diǎn)運算都是精確的,符合IEEE-754規范

  的。例如一個(gè)類(lèi)被聲明為strictfp,那么該類(lèi)中所有的方法都是strictfp的。

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

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

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

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

  4.實(shí)現抽象類(lèi)和接口的類(lèi)必須實(shí)現其中的所有方法。抽象類(lèi)中可以有非抽象方法。接口中則不能有實(shí)現方法。

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

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

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

  3)能說(shuō)一下java的反射(reflection)機制嗎?(瞬聯(lián))

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

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

  extends Thread

  implement Runnable

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

  public class MyThread extends Thread

  {

  int count= 1, number;

  public MyThread(int num)

  {

  number = num;

  System.out.println

  ("創(chuàng )建線(xiàn)程 " + number);

  }

  public void run() {

  while(true) {

  System.out.println

  ("線(xiàn)程 " + number + ":計數 " + count);

  if(++count== 6) return;

  }

  }

  public static void main(String args[])

  {

  for(int i = 0;i 〈 5; i++) new MyThread(i+1).start();

  }

  }

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

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

  那么如何限制這個(gè)類(lèi)必須包含這一方法呢?當然是使用接口!(雖然抽象類(lèi)也可滿(mǎn)足,但是需要繼承,而我們之所以要采用這種新方法,不就是為了避免繼承帶來(lái)的限制嗎?)

  Java 提供了接口 java.lang.Runnable 來(lái)支持這種方法。

  方法二:實(shí)現 Runnable 接口

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

  public class MyThread implements Runnable

  {

  int count= 1, number;

  public MyThread(int num)

  {

  number = num;

  System.out.println("創(chuàng )建線(xiàn)程 " + number);

  }

  public void run()

  {

  while(true)

  {

  System.out.println

  ("線(xiàn)程 " + number + ":計數 " + 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();

  }

  }

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

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

  綜上所述,兩種方法各有千秋,大家可以靈活運用。

  下面讓我們一起來(lái)研究一下多線(xiàn)程使用中的一些問(wèn)題。

  三、線(xiàn)程的四種狀態(tài)

  1. 新?tīng)顟B(tài):線(xiàn)程已被創(chuàng )建但尚未執行(start() 尚未被調用)。

  2. 可執行狀態(tài):線(xiàn)程可以執行,雖然不一定正在執行。CPU 時(shí)間隨時(shí)可能被分配給該線(xiàn)程,從而使得它執行。

  3. 死亡狀態(tài):正常情況下 run() 返回使得線(xiàn)程死亡。調用 stop()或 destroy() 亦有同樣效果,但是不被推薦,前者會(huì )產(chǎn)生異常,后者是強制終止,不會(huì )釋放鎖。

  4. 阻塞狀態(tài):線(xiàn)程不會(huì )被分配 CPU 時(shí)間,無(wú)法執行。

  四、線(xiàn)程的優(yōu)先級

  線(xiàn)程的優(yōu)先級代表該線(xiàn)程的重要程度,當有多個(gè)線(xiàn)程同時(shí)處于可執行狀態(tài)并等待獲得 CPU 時(shí)間時(shí),線(xiàn)程調度系統根據各個(gè)線(xiàn)程的優(yōu)先級來(lái)決定給誰(shuí)分配 CPU 時(shí)間,優(yōu)先級高的線(xiàn)程有更大的機會(huì )獲得 CPU 時(shí)間,優(yōu)先級低的線(xiàn)程也不是沒(méi)有機會(huì ),只是機會(huì )要小一些罷了。

  你可以調用 Thread 類(lèi)的方法 getPriority() 和 setPriority()來(lái)存取線(xiàn)程的優(yōu)先級,線(xiàn)程的優(yōu)先級界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之間,缺省是5(NORM_PRIORITY)。

  5)你用過(guò)哪種設計模式?(瞬聯(lián),IBM,aspenTech)

  設計:design

  模式:pattern

  框架:framework

  創(chuàng )建模式,結構模式和行為模式

  GoF設計模式

  A.創(chuàng )建模式

  設計模式之Factory(工廠(chǎng)模式)

  使用工廠(chǎng)模式就象使用new一樣頻繁.2002/10/9更新

  設計模式之Prototype(原型模式)

  用原型實(shí)例指定創(chuàng )建對象的種類(lèi),并且通過(guò)拷貝這些原型創(chuàng )建新的對象。

  設計模式之Builder

  汽車(chē)由車(chē)輪 方向盤(pán) 發(fā)動(dòng)機很多部件組成,同時(shí),將這些部件組裝成汽車(chē)也是一件復雜的工作,Builder模式就是將這兩種情況分開(kāi)進(jìn)行。

  設計模式之Singleton(單態(tài)模式)

  保證一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)訪(fǎng)問(wèn)它的全局訪(fǎng)問(wèn)點(diǎn) 2002/10/9更新

  B.結構模式

  設計模式之Facade

  可擴展的使用JDBC針對不同的數據庫編程,Facade提供了一種靈活的實(shí)現.

  設計模式之Proxy

  以Jive為例,剖析代理模式在用戶(hù)級別授權機制上的應用

  設計模式之Adapter

  使用類(lèi)再生的兩個(gè)方式:組合(new)和繼承(extends),這個(gè)已經(jīng)在"thinking in java"中提到過(guò).

  設計模式之Composite

  就是將類(lèi)用樹(shù)形結構組合成一個(gè)單位.你向別人介紹你是某單位,你是單位中的一個(gè)元素,別人和你做買(mǎi)賣(mài),相當于和單位做買(mǎi)賣(mài)。文章中還對Jive再進(jìn)行了剖析。

  設計模式之Decorator

  Decorator是個(gè)油漆工,給你的東東的外表刷上美麗的顏色.

  設計模式之Bridge

  將"牛郎織女"分開(kāi)(本應在一起,分開(kāi)他們,形成兩個(gè)接口),在他們之間搭建一個(gè)橋(動(dòng)態(tài)的結合)

  設計模式之Flyweight

  提供Java運行性能,降低小而大量重復的類(lèi)的開(kāi)銷(xiāo).

  C.行為模式

  設計模式之Template

  實(shí)際上向你介紹了為什么要使用Java 抽象類(lèi),該模式原理簡(jiǎn)單,使用很普遍.

  設計模式之Memento

  很簡(jiǎn)單一個(gè)模式,就是在內存中保留原來(lái)數據的拷貝.

  設計模式之Observer

  介紹如何使用Java API提供的現成Observer

  設計模式之Chain of Responsibility

  各司其職的類(lèi)串成一串,好象擊鼓傳花,當然如果自己能完成,就不要推委給下一個(gè).

  設計模式之Command

  什么是將行為封裝,Command是最好的說(shuō)明.

  設計模式之State

  狀態(tài)是編程中經(jīng)常碰到的實(shí)例,將狀態(tài)對象化,設立狀態(tài)變換器,便可在狀態(tài)中輕松切換.

  設計模式之Strategy

  不同算法各自封裝,用戶(hù)端可隨意挑選需要的算法.

  設計模式之Mediator

  Mediator很象十字路口的紅綠燈,每個(gè)車(chē)輛只需和紅綠燈交互就可以.

  設計模式之Interpreter

  主要用來(lái)對語(yǔ)言的分析,應用機會(huì )不多.

  設計模式之Visitor

  訪(fǎng)問(wèn)者在進(jìn)行訪(fǎng)問(wèn)時(shí),完成一系列實(shí)質(zhì)性操作,而且還可以擴展.

  設計模式之Iterator

  這個(gè)模式已經(jīng)被整合入Java的Collection.在大多數場(chǎng)合下無(wú)需自己制造一個(gè)Iterator,只要將對象裝入Collection中,直接使用Iterator進(jìn)行對象遍歷。

【java面試問(wèn)題及答案】相關(guān)文章:

java招聘面試常見(jiàn)問(wèn)題12-10

java面試最常見(jiàn)問(wèn)題03-24

JAVA面試真題及答案分享11-20

面試后勤問(wèn)題及答案09-23

面試領(lǐng)導的問(wèn)題及答案10-20

銷(xiāo)售面試的問(wèn)題及答案11-08

面試問(wèn)題及答案02-15

面試問(wèn)題及答案01-02

社團面試的問(wèn)題及答案11-20

面試司機的問(wèn)題及答案04-26

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看