• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 創業指南 > 職場 > 面試題 > java初級工程師面試題

    java初級工程師面試題

    時間: 護托1061 分享

    java初級工程師面試題

      根據《Java面試問題集》、《Java程序員面試寶典》、《程序員面試寶典》等書籍概括精選而來的面試題都是干貨!下面就由學習啦小編為大家介紹一下java初級工程師面試題的文章,歡迎閱讀。

      java初級工程師面試題篇1

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

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

      private表示只能在當前類中使用;

      default表示只能在當前類或者是同一個包下面使用;

      protected表示可以在當前類,同一個包下,當前類的子類中使用;

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

      2.匿名內部類是否可以繼承其它類,是否可以實現其它接口?

      首先需要搞清楚內部類和匿名內部類的概念和特點,可以參考以下鏈接:

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

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

      內部類分為三種:成員內部類,局部內部類(又稱方法內部類),匿名內部類。(這里不把靜態嵌套類歸類于內部類,在后面會單獨講到)

      本題問的是匿名內部類,那么我們來看一段代碼:

      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(){

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

      //此處匿名內部類會默認繼承已經定義的類(Car)

      public void drive() {

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

      }

      };

      car.drive();

      }

      }123456789101112123456789101112

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

      所以,本題答案是匿名內部類可以而且是必須繼承一個父類或者實現一個接口。

      3.靜態嵌套類和內部類的區別。

      首先,我們看一下靜態嵌套類的例子:

      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

      該靜態嵌套內部類可以像其它靜態成員一樣,沒有外部類對象時也能夠通過外部類的類名訪問它。但是,它不能訪問外部類的成員和方法,因為無法知道外部類是否生成對象,只有外部類實例化了對象,外部類才會有成員和方法。

      而內部類必須要實例化外部類的對象才能被訪問,而且,內部類是可以通過Outer.this來獲取外部類對象,從而訪問外部類的成員和方法。

      4.&和&&的區別。

      &是位運算符,&&是邏輯運算符。位運算2&3=2是因為轉換為二進制為10&11=10,10是2的二進制表示。邏輯運算true&&false=false。在Java中&也可也用來做邏輯運算true&false=false。

      它們的區別在于:在做邏輯運算的時候,&&具有短路的功能,而&不具備。下面舉例說明。

      public class TestAnd {

      //類變量,不會被初始化,值為null

      public static String str1;

      public static String str2;

      public static void main(String[] args) {

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

      ...

      } else {

      ...

      }

      }

      }1234567891011121312345678910111213

      當使用&&時,首先判斷str1 != null 為false,所以短路,不會執行后面的操作。

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

      java初級工程師面試題篇2

      1.Java中Collection和Collections的區別。

      Collection是Java集合框架中最上級的接口之一。Collection的實現類主要有List,Queue,Set等等。

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

      2.String s = new String(“abc”);這句話創建了幾個對象?

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

      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

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

      4.short s1 = 1;s1=s1+1和short s1 = 1;s1+=1;有什么區別?

      s1 + 1會自動向上轉型成為int,將int賦給short會編譯報錯,需要強制類型轉換:s1 = (short)s1 + 1;

      對于s1 += 1;編譯器會自動將+=后面的操作數強制轉換成前面變量的類型,然后在變量所在的內存區上直接根據右邊的操作數修改左邊變量內存存儲的二進制數值,屬于位運算,能正確通過編譯。

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

      5.Java中有沒有goto語句?

      Java關鍵字:共51個。

      Java保留字:共14個,表示現有的Java版本尚未使用,但以后版本可能會作為關鍵字使用。

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

      6.數組有沒有length()這個方法,String有沒有length()這個方法?

      數組沒有length()方法,但是有length屬性。String有length()方法。

      補充:集合框架測量長度的方法是size()。

      java初級工程師面試題篇3

      1.簡述Overload(重載)和Override(重寫)的區別。

      重載和重寫是Java多態中的內容。重寫是父類與子類之間多態性的一種表現,重載是一個類中多態性的一種表現。

      重載是在一個類中定義多個同名的方法,但是允許這些方法的返回值類型,參數列表,訪問修飾符,異常等不同。換言之,除了方法名之外,其它都可以不同。

      重寫是因為子類想對父類中某個方法的功能做修改,而不再增加一個新的方法。重寫的要求比較嚴格,返回值類型,方法名稱,參數列表必須嚴格一致,訪問修飾符必須大于等于被重寫的方法,比如,父類的訪問修飾符是protected,子類重寫方法的修飾符可以是protected或者是public。

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

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

      Set是不能存放重復元素的,即使是null,在Set中也只能存放一個。Set中元素的順序和元素的插入順序無關,是由Set內部的排序機制自行排序的。

      再來說說==和equals()的區別:

      當比較雙方是基本數據類型的時候,應該使用==來進行比較,比較的是它們的值。

      當比較雙方是復合數據類型的時候,可以使用==也可以使用equals()來進行比較。

      首先,當使用==時,比較的是它們在內存中的存放地址。當使用equals()方法時,默認比較的是兩者的內存地址,和==一樣。這是因為在Object這個類中定義了這個比較內存地址的equals()方法。但在一些類庫中這個equals()方法被重寫了,比如String,Integer和Date等,在這類中equals()就有了它們自己的實現,比較的就不一定是兩者的內存地址了。如果想讓兩個復合數據類型的equals方法比較的是它們的值而不是地址,需要重寫hashCode和equals方法。

      3.給我一個你最常見到的runtime exception

      ArithmeticException,

      BufferOverFlowException,

      ClassCastException,

      IllegalArgumentException,

      NullPointerException…

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

      4.Error和Exception的區別。

      Error和Exception都是Throwable的子類。

      Error是程序無法處理的錯誤,表示運行應用程序中較嚴重的問題,比如內存溢出。

      Exception是程序本身可以處理的異常,表示一種設計或者實現上的問題。

      詳見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(抽象類)和interface(接口)有什么區別?

      說到抽象類和接口,不得不先說一下抽象方法,有關抽象方法,抽象類和接口的知識詳細參見:

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

      這里補充強調一下區別:

      a)抽象類可以有構造方法,接口中不能有構造方法。(雖然抽象類不能創建實例對象)

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

      c)抽象類可以有抽象方法,也可以有具體實現的方法;接口只能有抽象方法。

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

      e)抽象類中可以有靜態方法和靜態代碼塊,接口中不行。

      f)單繼承,多實現。

      g)從使用方面來說,繼承是為了代碼的復用,接口是為了系統的邏輯設計。

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

      在類中,沒有方法體的方法就是抽象方法。

      構造方法,靜態方法,私有方法,final方法不能被聲明為抽象方法,抽象方法也不能使用native,static,final,private,protected,synchronized來修飾。

      原因:

      抽象方法是需要在子類中實現的,本身沒有實現體,通過抽象類名來調用這個沒有實現體的抽象靜態方法完全沒有意義,所以抽象方法不能是static。

      雖然native修飾的方法不能有實現體但卻表示該方法要用另外一種編程語言實現,不存在被子類實現的問題,所以native方法不能是abstract的。因此,抽象方法不能是native。

      一個抽象方法沒有實現體,需要synchronized有什么用,也不行。

      8.接口是否可以繼承接口,抽象類是否可以實現接口,抽象類是否可以繼承實體類?抽象類中是否可以有靜態的main方法?

      接口可以繼承接口,抽象類可以實現接口,但接口不能繼承抽象類,抽象類也可以繼承實體類,但前提是實體類必須有明確的構造函數(或者說,實體類中必須有子類可以訪問的構造函數)。抽象類中可以有靜態的main方法這個詳見:

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

      tips:抽象類和具體類的區別:抽象類用abstract修飾,抽象類不能被實例化,抽象類中允許有抽象方法。

      9.構造器(構造函數)能否被重寫?

      一個類的構造函數不能被重寫,但是可以重載。

      10.是否可以繼承String類?

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

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

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

    3151034 主站蜘蛛池模板: 中国大陆高清aⅴ毛片| japanese色国产在线看免费| 久久人人做人人玩人精品| 欧美综合自拍亚洲综合图| 小魔女娇嫩的菊蕾| 国产东北老头老太露脸| 亚洲午夜精品久久久久久人妖| aaa日本高清在线播放免费观看| 色噜噜狠狠一区二区三区| 日韩精品无码一区二区三区| 国产精品婷婷久青青原| 亚洲精品午夜国产va久久成人| 一级做a爰片性色毛片黄书| 精品无人区一区二区三区a| 国语自产偷拍精品视频偷蜜芽 | 日产乱码卡1卡2卡三免费 | 精品国产三级a∨在线观看| 人妻被按摩师玩弄到潮喷| 欧美换爱交换乱理伦片试看| 久久青青草原综合伊人| 成全视频免费高清| 中文字幕日韩有码| 女人18毛片水真多免费播放| 2021国产麻豆剧果冻传媒影视| 国产成人一区二区动漫精品| 老鸭窝laoyawo国产精品| 健身私教干了好几次| 欧美性大战久久久久久| 久久人人妻人人做人人爽| 尤物视频在线看| 91久久青青草原线免费| 国产性色视频在线高清| 精品视频久久久| 亚洲欧美日韩在线综合福利| 日韩精品无码一区二区三区四区| 中文字幕一区二区三区精彩视频 | 曰批全过程免费视频网址| 国产在AJ精品| 粗大的内捧猛烈进出在线视频| 亚洲成年www| 日本大胆欧美艺术337p|