无码天堂亚洲内射精品课堂_日韩AV电影在线观看不卡_日韩精品人妻系列无码AV小草_亚洲极限拳头交异物交极端_中文亚洲无线码49vv

學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場(chǎng) > 面試題 > java初級(jí)工程師面試題

java初級(jí)工程師面試題

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

java初級(jí)工程師面試題

  根據(jù)《Java面試問(wèn)題集》、《Java程序員面試寶典》、《程序員面試寶典》等書(shū)籍概括精選而來(lái)的面試題都是干貨!下面就由學(xué)習(xí)啦小編為大家介紹一下java初級(jí)工程師面試題的文章,歡迎閱讀。

  java初級(jí)工程師面試題篇1

  1.Java中的作用域public,private,protected,以及不寫(xiě)作用域(default)時(shí)有什么區(qū)別?

  Java中有四種作用域,按照作用域范圍由大到小排列一次是:public , protected , default , private。

  private表示只能在當(dāng)前類(lèi)中使用;

  default表示只能在當(dāng)前類(lèi)或者是同一個(gè)包下面使用;

  protected表示可以在當(dāng)前類(lèi),同一個(gè)包下,當(dāng)前類(lèi)的子類(lèi)中使用;

  public表示除了上面的情況外,還可以被其它包中的類(lèi)使用。

  2.匿名內(nèi)部類(lèi)是否可以繼承其它類(lèi),是否可以實(shí)現(xiàn)其它接口?

  首先需要搞清楚內(nèi)部類(lèi)和匿名內(nèi)部類(lèi)的概念和特點(diǎn),可以參考以下鏈接:

  http://android.blog.51cto.com/268543/384844/

  http://www.cnblogs.com/o-andy-o/archive/2012/04/07/2435825.html

  內(nèi)部類(lèi)分為三種:成員內(nèi)部類(lèi),局部?jī)?nèi)部類(lèi)(又稱(chēng)方法內(nèi)部類(lèi)),匿名內(nèi)部類(lèi)。(這里不把靜態(tài)嵌套類(lèi)歸類(lèi)于內(nèi)部類(lèi),在后面會(huì)單獨(dú)講到)

  本題問(wèn)的是匿名內(nèi)部類(lèi),那么我們來(lái)看一段代碼:

  public class Car {

  public void drive() {

  System.out.println("drive a car!");

  }

  }1234512345

  public class Outer {

  public static void main(String[] args) {

  Car car = new Car(){

  //要使用匿名內(nèi)部類(lèi)必須先定義該類(lèi)(接口)

  //此處匿名內(nèi)部類(lèi)會(huì)默認(rèn)繼承已經(jīng)定義的類(lèi)(Car)

  public void drive() {

  System.out.println("drive another car!");

  }

  };

  car.drive();

  }

  }123456789101112123456789101112

  其中,new Car()就是一個(gè)匿名內(nèi)部類(lèi),繼承了它的父類(lèi)Car。

  所以,本題答案是匿名內(nèi)部類(lèi)可以而且是必須繼承一個(gè)父類(lèi)或者實(shí)現(xiàn)一個(gè)接口。

  3.靜態(tài)嵌套類(lèi)和內(nèi)部類(lèi)的區(qū)別。

  首先,我們看一下靜態(tài)嵌套類(lèi)的例子:

  public class Outer {

  public static void main(String[] args) {

  Outer.Inner inner = new Inner();

  Outer.Inner.print();

  }

  public static class Inner {

  public static void print() {

  }

  }

  }

  123456789101112123456789101112

  該靜態(tài)嵌套內(nèi)部類(lèi)可以像其它靜態(tài)成員一樣,沒(méi)有外部類(lèi)對(duì)象時(shí)也能夠通過(guò)外部類(lèi)的類(lèi)名訪(fǎng)問(wèn)它。但是,它不能訪(fǎng)問(wèn)外部類(lèi)的成員和方法,因?yàn)闊o(wú)法知道外部類(lèi)是否生成對(duì)象,只有外部類(lèi)實(shí)例化了對(duì)象,外部類(lèi)才會(huì)有成員和方法。

  而內(nèi)部類(lèi)必須要實(shí)例化外部類(lèi)的對(duì)象才能被訪(fǎng)問(wèn),而且,內(nèi)部類(lèi)是可以通過(guò)Outer.this來(lái)獲取外部類(lèi)對(duì)象,從而訪(fǎng)問(wèn)外部類(lèi)的成員和方法。

  4.&和&&的區(qū)別。

  &是位運(yùn)算符,&&是邏輯運(yùn)算符。位運(yùn)算2&3=2是因?yàn)檗D(zhuǎn)換為二進(jìn)制為10&11=10,10是2的二進(jìn)制表示。邏輯運(yùn)算true&&false=false。在Java中&也可也用來(lái)做邏輯運(yùn)算true&false=false。

  它們的區(qū)別在于:在做邏輯運(yùn)算的時(shí)候,&&具有短路的功能,而&不具備。下面舉例說(shuō)明。

  public class TestAnd {

  //類(lèi)變量,不會(huì)被初始化,值為null

  public static String str1;

  public static String str2;

  public static void main(String[] args) {

  if(str1 != null && str2.equals(“”)) {

  ...

  } else {

  ...

  }

  }

  }1234567891011121312345678910111213

  當(dāng)使用&&時(shí),首先判斷str1 != null 為false,所以短路,不會(huì)執(zhí)行后面的操作。

  當(dāng)使用&時(shí),雖然前面為false,但是仍然執(zhí)行后面的判斷str2.equals(""),此時(shí)會(huì)拋出空指針異常。

  java初級(jí)工程師面試題篇2

  1.Java中Collection和Collections的區(qū)別。

  Collection是Java集合框架中最上級(jí)的接口之一。Collection的實(shí)現(xiàn)類(lèi)主要有List,Queue,Set等等。

  Colelctions是Collection集合框架的一個(gè)幫助類(lèi)(工具類(lèi)),它直接繼承Object,不屬于集合框架,主要提供一系列的靜態(tài)方法對(duì)Collection集合進(jìn)行各種操作。

  2.String s = new String(“abc”);這句話(huà)創(chuàng)建了幾個(gè)對(duì)象?

  兩個(gè)。new String(“abc”)是一個(gè)字符串對(duì)象;s是一個(gè)字符串對(duì)象的引用對(duì)象。

  3.Math.round(11.5),Math.round(-11.5),Math.floor(11.7),Math.floor(-11.7)的值各是多少?

  Math.round(a)是四舍五入;Math.floor(a)是返回小于等于a的最大的double值(即向下取整)。

  所以答案為:12,-11,11,-12

  另外:還有一個(gè)ceil方法是向上取整。

  4.short s1 = 1;s1=s1+1和short s1 = 1;s1+=1;有什么區(qū)別?

  s1 + 1會(huì)自動(dòng)向上轉(zhuǎn)型成為int,將int賦給short會(huì)編譯報(bào)錯(cuò),需要強(qiáng)制類(lèi)型轉(zhuǎn)換:s1 = (short)s1 + 1;

  對(duì)于s1 += 1;編譯器會(huì)自動(dòng)將+=后面的操作數(shù)強(qiáng)制轉(zhuǎn)換成前面變量的類(lèi)型,然后在變量所在的內(nèi)存區(qū)上直接根據(jù)右邊的操作數(shù)修改左邊變量?jī)?nèi)存存儲(chǔ)的二進(jìn)制數(shù)值,屬于位運(yùn)算,能正確通過(guò)編譯。

  另外,后一種方式屬于位運(yùn)算,效率比前者要高。

  5.Java中有沒(méi)有g(shù)oto語(yǔ)句?

  Java關(guān)鍵字:共51個(gè)。

  Java保留字:共14個(gè),表示現(xiàn)有的Java版本尚未使用,但以后版本可能會(huì)作為關(guān)鍵字使用。

  其中,goto就是Java的保留字。

  6.數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法,String有沒(méi)有l(wèi)ength()這個(gè)方法?

  數(shù)組沒(méi)有l(wèi)ength()方法,但是有l(wèi)ength屬性。String有l(wèi)ength()方法。

  補(bǔ)充:集合框架測(cè)量長(zhǎng)度的方法是size()。

  java初級(jí)工程師面試題篇3

  1.簡(jiǎn)述Overload(重載)和Override(重寫(xiě))的區(qū)別。

  重載和重寫(xiě)是Java多態(tài)中的內(nèi)容。重寫(xiě)是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現(xiàn),重載是一個(gè)類(lèi)中多態(tài)性的一種表現(xiàn)。

  重載是在一個(gè)類(lèi)中定義多個(gè)同名的方法,但是允許這些方法的返回值類(lèi)型,參數(shù)列表,訪(fǎng)問(wèn)修飾符,異常等不同。換言之,除了方法名之外,其它都可以不同。

  重寫(xiě)是因?yàn)樽宇?lèi)想對(duì)父類(lèi)中某個(gè)方法的功能做修改,而不再增加一個(gè)新的方法。重寫(xiě)的要求比較嚴(yán)格,返回值類(lèi)型,方法名稱(chēng),參數(shù)列表必須嚴(yán)格一致,訪(fǎng)問(wèn)修飾符必須大于等于被重寫(xiě)的方法,比如,父類(lèi)的訪(fǎng)問(wèn)修飾符是protected,子類(lèi)重寫(xiě)方法的修飾符可以是protected或者是public。

  值得一提的是,如果父類(lèi)的方法是private,那么子類(lèi)中重寫(xiě)的這個(gè)方法就不能算是重寫(xiě),相當(dāng)于子類(lèi)中增加了一個(gè)全新的方法。重寫(xiě)的方法不能拋出新的異常類(lèi)型,但是允許是原異常類(lèi)型的子類(lèi)異常。

  2.集合框架Set中的元素能否重復(fù)?用什么方法來(lái)判斷集合中的元素是否重復(fù)?用==還是equals()?它們有什么區(qū)別?

  Set是不能存放重復(fù)元素的,即使是null,在Set中也只能存放一個(gè)。Set中元素的順序和元素的插入順序無(wú)關(guān),是由Set內(nèi)部的排序機(jī)制自行排序的。

  再來(lái)說(shuō)說(shuō)==和equals()的區(qū)別:

  當(dāng)比較雙方是基本數(shù)據(jù)類(lèi)型的時(shí)候,應(yīng)該使用==來(lái)進(jìn)行比較,比較的是它們的值。

  當(dāng)比較雙方是復(fù)合數(shù)據(jù)類(lèi)型的時(shí)候,可以使用==也可以使用equals()來(lái)進(jìn)行比較。

  首先,當(dāng)使用==時(shí),比較的是它們?cè)趦?nèi)存中的存放地址。當(dāng)使用equals()方法時(shí),默認(rèn)比較的是兩者的內(nèi)存地址,和==一樣。這是因?yàn)樵贠bject這個(gè)類(lèi)中定義了這個(gè)比較內(nèi)存地址的equals()方法。但在一些類(lèi)庫(kù)中這個(gè)equals()方法被重寫(xiě)了,比如String,Integer和Date等,在這類(lèi)中equals()就有了它們自己的實(shí)現(xiàn),比較的就不一定是兩者的內(nèi)存地址了。如果想讓兩個(gè)復(fù)合數(shù)據(jù)類(lèi)型的equals方法比較的是它們的值而不是地址,需要重寫(xiě)hashCode和equals方法。

  3.給我一個(gè)你最常見(jiàn)到的runtime exception

  ArithmeticException,

  BufferOverFlowException,

  ClassCastException,

  IllegalArgumentException,

  NullPointerException…

  Exception:http://blog.csdn.net/hguisu/article/details/6155636

  4.Error和Exception的區(qū)別。

  Error和Exception都是Throwable的子類(lèi)。

  Error是程序無(wú)法處理的錯(cuò)誤,表示運(yùn)行應(yīng)用程序中較嚴(yán)重的問(wèn)題,比如內(nèi)存溢出。

  Exception是程序本身可以處理的異常,表示一種設(shè)計(jì)或者實(shí)現(xiàn)上的問(wèn)題。

  詳見(jiàn)http://blog.csdn.net/hguisu/article/details/6155636

  5.List,Set,Map是否繼承自Collection接口?

  List和Set是,Map不是。

  可以參考Java集合框架的繼承圖。

  http://blog.csdn.net/zsw101259/article/details/7570033

  6.abstract class(抽象類(lèi))和interface(接口)有什么區(qū)別?

  說(shuō)到抽象類(lèi)和接口,不得不先說(shuō)一下抽象方法,有關(guān)抽象方法,抽象類(lèi)和接口的知識(shí)詳細(xì)參見(jiàn):

  http://www.cnblogs.com/dolphin0520/p/3811437.html

  這里補(bǔ)充強(qiáng)調(diào)一下區(qū)別:

  a)抽象類(lèi)可以有構(gòu)造方法,接口中不能有構(gòu)造方法。(雖然抽象類(lèi)不能創(chuàng)建實(shí)例對(duì)象)

  b)抽象類(lèi)的成員變量可以是各種類(lèi)型的,接口中的成員變量是public static final 類(lèi)型的。

  c)抽象類(lèi)可以有抽象方法,也可以有具體實(shí)現(xiàn)的方法;接口只能有抽象方法。

  d)抽象類(lèi)的抽象方法可以是public和protected,接口的抽象方法只能是public abstract。

  e)抽象類(lèi)中可以有靜態(tài)方法和靜態(tài)代碼塊,接口中不行。

  f)單繼承,多實(shí)現(xiàn)。

  g)從使用方面來(lái)說(shuō),繼承是為了代碼的復(fù)用,接口是為了系統(tǒng)的邏輯設(shè)計(jì)。

  7.抽象方法是否可以用static,native,synchronized來(lái)修飾嗎?

  在類(lèi)中,沒(méi)有方法體的方法就是抽象方法。

  構(gòu)造方法,靜態(tài)方法,私有方法,final方法不能被聲明為抽象方法,抽象方法也不能使用native,static,final,private,protected,synchronized來(lái)修飾。

  原因:

  抽象方法是需要在子類(lèi)中實(shí)現(xiàn)的,本身沒(méi)有實(shí)現(xiàn)體,通過(guò)抽象類(lèi)名來(lái)調(diào)用這個(gè)沒(méi)有實(shí)現(xiàn)體的抽象靜態(tài)方法完全沒(méi)有意義,所以抽象方法不能是static。

  雖然native修飾的方法不能有實(shí)現(xiàn)體但卻表示該方法要用另外一種編程語(yǔ)言實(shí)現(xiàn),不存在被子類(lèi)實(shí)現(xiàn)的問(wèn)題,所以native方法不能是abstract的。因此,抽象方法不能是native。

  一個(gè)抽象方法沒(méi)有實(shí)現(xiàn)體,需要synchronized有什么用,也不行。

  8.接口是否可以繼承接口,抽象類(lèi)是否可以實(shí)現(xiàn)接口,抽象類(lèi)是否可以繼承實(shí)體類(lèi)?抽象類(lèi)中是否可以有靜態(tài)的main方法?

  接口可以繼承接口,抽象類(lèi)可以實(shí)現(xiàn)接口,但接口不能繼承抽象類(lèi),抽象類(lèi)也可以繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)(或者說(shuō),實(shí)體類(lèi)中必須有子類(lèi)可以訪(fǎng)問(wèn)的構(gòu)造函數(shù))。抽象類(lèi)中可以有靜態(tài)的main方法這個(gè)詳見(jiàn):

  http://blog.sina.com.cn/s/blog_7042a6c101013ung.html

  tips:抽象類(lèi)和具體類(lèi)的區(qū)別:抽象類(lèi)用abstract修飾,抽象類(lèi)不能被實(shí)例化,抽象類(lèi)中允許有抽象方法。

  9.構(gòu)造器(構(gòu)造函數(shù))能否被重寫(xiě)?

  一個(gè)類(lèi)的構(gòu)造函數(shù)不能被重寫(xiě),但是可以重載。

  10.是否可以繼承String類(lèi)?

  查閱JDK幫助文檔,可以看到String類(lèi)的定義聲明:

  public final class String extends Object implements Serializable, Comparable, CharSequence由于是final類(lèi)型的,所以,String類(lèi)是不能被繼承的。

  建議:String類(lèi)的所有方法都要看一下,考的很多。

3151034