學(xué)習(xí)啦>創(chuàng)業(yè)指南>職場(chǎng)>面試題>

中軟國(guó)際面試筆試真題

時(shí)間: 護(hù)托1061 分享

  中軟國(guó)際有限公司是國(guó)內(nèi)大型綜合性軟件與信息服務(wù)企業(yè),具有極高的市場(chǎng)感召力和客戶(hù)忠誠(chéng)度,以領(lǐng)先的技術(shù)、豐富的經(jīng)驗(yàn)、精湛的服務(wù)在中國(guó) IT 行業(yè)享有極高的聲譽(yù)。下面就由學(xué)習(xí)啦小編為大家介紹一下中軟國(guó)際面試筆試真題的文章,歡迎閱讀。

  中軟國(guó)際面試筆試真題篇1

  1、 GC是什么? 為什么要有GC?

  GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問(wèn)題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測(cè)對(duì)象是否超過(guò)作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,Java語(yǔ)言沒(méi)有提供釋放已分配內(nèi)存的顯示操作方法。

  2、接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)

  (concrete class)?

  接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。

  3、 Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型?

  方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類(lèi)中的定義,對(duì)它而言,父類(lèi)中的定義如同被"屏蔽"了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

  4 、sleep() 和wait() 有什么區(qū)別?

  sleep是線程類(lèi)(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。wait是Object類(lèi)的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。

  5、 final, finally, finalize的區(qū)別。

  final 用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,類(lèi)不可繼承。 finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。 finalize是Object類(lèi)的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。

  中軟國(guó)際面試筆試真題篇2

  1、HashMap和Hashtable的區(qū)別。

  HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完成了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全,效率上可能高于Hashtable。 HashMap允許將null作為一個(gè)entry的key或者value,而Hashtable不允許。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因?yàn)閏ontains方法容易讓人引起誤解。 Hashtable繼承自Dictionary類(lèi),而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步,而HashMap 就必須為之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差異。

  2、&和&&的區(qū)別。

  &是位運(yùn)算符,表示按位與運(yùn)算,&&是邏輯運(yùn)算符,表示邏輯與(and)。

  3、Set 里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還

  是equals()? 它們有何區(qū)別?

  Set 里的元素是不能重復(fù)的,用equals ()方法來(lái)區(qū)分重復(fù)與否。覆蓋

  equals()方法用來(lái)判斷對(duì)象的內(nèi)容是否相同,而”==”判斷地址是否相等,用來(lái)

  決定引用值是否指向同一對(duì)象。

  中軟國(guó)際面試筆試真題篇3

  什么是內(nèi)部類(lèi)?

  內(nèi)部類(lèi)就是在一個(gè)類(lèi)的內(nèi)部定義的類(lèi),內(nèi)部類(lèi)中不能定義靜態(tài)成員(我想可能是既然靜態(tài)成員類(lèi)似c語(yǔ)言的全局變量,而內(nèi)部類(lèi)通常是用于創(chuàng)建內(nèi)部對(duì)象用的,所以,把“全局變量”放在內(nèi)部類(lèi)中就是毫無(wú)意義的事情,既然是毫無(wú)意義的事情,就應(yīng)該被禁止),內(nèi)部類(lèi)可以直接訪問(wèn)外部類(lèi)中的成員變量,內(nèi)部類(lèi)可以定義在外部類(lèi)的方法外面,也可以定義在外部類(lèi)的方法體中,如下所示:

  public class Outer

  {

  int out_x = 0;

  public void method()

  {

  Inner1 inner1 = new Inner1();

  class Inner2 //在方法體內(nèi)部定義的內(nèi)部類(lèi)

  {

  public method()

  {

  out_x = 3;

  }

  }

  Inner2 inner2 = new Inner2();

  }

  public class Inner1 //在方法體外面定義的內(nèi)部類(lèi)

  {

  }

  }

  在方法體外面定義的內(nèi)部類(lèi)的訪問(wèn)類(lèi)型可以是public,protecte,默認(rèn)的,private等4種類(lèi)型,這就好像類(lèi)中定義的成員變量有4種訪問(wèn)類(lèi)型一樣,它們決定這個(gè)內(nèi)部類(lèi)的定義對(duì)其他類(lèi)是否可見(jiàn);對(duì)于這種情況,我們也可以在外面創(chuàng)建內(nèi)部類(lèi)的實(shí)例對(duì)象,創(chuàng)建內(nèi)部類(lèi)的實(shí)例對(duì)象時(shí),一定要先創(chuàng)建外部類(lèi)的實(shí)例對(duì)象,然后用這個(gè)外部類(lèi)的實(shí)例對(duì)象去創(chuàng)建內(nèi)部類(lèi)的實(shí)例對(duì)象,代碼如下:

  Outer outer = new Outer();

  Outer.Inner1 inner1 = outer.new Innner1();

  在方法內(nèi)部定義的內(nèi)部類(lèi)前面不能有訪問(wèn)類(lèi)型修飾符,就好像方法中定義的局部變量一樣,但這種內(nèi)部類(lèi)的前面可以使用final或abstract修飾符。這種內(nèi)部類(lèi)對(duì)其他類(lèi)是不可見(jiàn)的其他類(lèi)無(wú)法引用這種內(nèi)部類(lèi),但是這種內(nèi)部類(lèi)創(chuàng)建的實(shí)例對(duì)象可以傳遞給其他類(lèi)訪問(wèn)。這種內(nèi)部類(lèi)必須是先定義,后使用,即內(nèi)部類(lèi)的定義代碼必須出現(xiàn)在使用該類(lèi)之前,這與方法中的局部變量必須先定義后使用的道理也是一樣的。這種內(nèi)部類(lèi)可以訪問(wèn)方法體中的局部變量,但是,該局部變量前必須加final修飾符。

  對(duì)于這些細(xì)節(jié),只要在eclipse寫(xiě)代碼試試,根據(jù)開(kāi)發(fā)工具提示的各類(lèi)錯(cuò)誤信息就可以馬上了解到。

  在方法外部定義的內(nèi)部類(lèi)前面可以加上static關(guān)鍵字,從而成為靜態(tài)內(nèi)部類(lèi),或者叫Static Nested Class。Static Nested Class與普通類(lèi)在運(yùn)行時(shí)的行為和功能上沒(méi)有什么區(qū)別,只是在編程引用時(shí)的語(yǔ)法上有一些差別,它可以定義成public、protected、默認(rèn)的、private等多種類(lèi)型,而普通類(lèi)只能定義成public和默認(rèn)的這兩種類(lèi)型。在外面引用Static Nested Class類(lèi)的名稱(chēng)為“外部類(lèi)名.內(nèi)部類(lèi)名”。在外面不需要?jiǎng)?chuàng)建外部類(lèi)的實(shí)例對(duì)象,就可以直接創(chuàng)建Static Nested Class,例如,假設(shè)Inner是定義在Outer類(lèi)中的Static Nested Class,那么可以使用如下語(yǔ)句創(chuàng)建Inner類(lèi):

  Outer.Inner inner = new Outer.Inner();

  由于static Nested Class不依賴(lài)于外部類(lèi)的實(shí)例對(duì)象,所以,static Nested Class能訪問(wèn)外部類(lèi)的非static成員變量。當(dāng)在外部類(lèi)中訪問(wèn)Static Nested Class時(shí),可以直接使用Static Nested Class的名字,而不需要加上外部類(lèi)的名字了,在Static Nested Class中也可以直接引用外部類(lèi)的static的成員變量,不需要加上外部類(lèi)的名字。

  最后,在方法體內(nèi)部還可以采用如下語(yǔ)法來(lái)創(chuàng)建一種匿名內(nèi)部類(lèi),即定義某一接口或類(lèi)的子類(lèi)的同時(shí),還創(chuàng)建了該子類(lèi)的實(shí)例對(duì)象,無(wú)需為該子類(lèi)定義名稱(chēng):

  public class Outer

  {

  public void start()

  {

  new Thread(

  new Runable(){

  public void run(){};

  }

  ).start();

  }

  }

3189240