• <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工程師面試題必考

    時間: 曉晴1082 分享

      Java軟件工程師是指運用Java這種開發語言去完成軟件產品的軟件程序設計、開發、測試、維護升級等工作的人員。Java軟件工程師近年來成為熱門職業之一,你知道他們的面試試題考什么嗎?下面由學習啦小編為你提供的aa,希望大家喜歡。

      Java工程師面試題

      1、面向對象的特征有哪些方面?

      答:面向對象的特征主要有以下幾個方面:

      - 抽象:抽象是將一類對象的共同特征總結出來構造類的過程,包括數據抽象和行為抽象兩方面。抽象只關注對象有哪些屬性和行為,并不關注這些行為的細節是什么。

      - 繼承:繼承是從已有類得到繼承信息創建新類的過程。提供繼承信息的類被稱為父類(超類、基類);得到繼承信息的類被稱為子類(派生類)。繼承讓變化中的軟件系統有了一定的延續性,同時繼承也是封裝程序中可變因素的重要手段(如果不能理解請閱讀閻宏博士的《Java與模式》或《設計模式精解》中關于橋梁模式的部分)。

      - 封裝:通常認為封裝是把數據和操作數據的方法綁定起來,對數據的訪問只能通過已定義的接口。面向對象的本質就是將現實世界描繪成一系列完全自治、封閉的對象。我們在類中編寫的方法就是對實現細節的一種封裝;我們編寫一個類就是對數據和數據操作的封裝??梢哉f,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口(可以想想普通洗衣機和全自動洗衣機的差別,明顯全自動洗衣機封裝更好因此操作起來更簡單;我們現在使用的智能手機也是封裝得足夠好的,因為幾個按鍵就搞定了所有的事情)。

      - 多態性:多態性是指允許不同子類型的對象對同一消息作出不同的響應。簡單的說就是用同樣的對象引用調用同樣的方法但是做了不同的事情。多態性分為編譯時的多態性和運行時的多態性。如果將對象的方法視為對象向外界提供的服務,那么運行時的多態性可以解釋為:當A系統訪問B系統提供的服務時,B系統有多種提供服務的方式,但一切對A系統來說都是透明的(就像電動剃須刀是A系統,它的供電系統是B系統,B系統可以使用電池供電或者用交流電,甚至還有可能是太陽能,A系統只會通過B類對象調用供電的方法,但并不知道供電系統的底層實現是什么,究竟通過何種方式獲得了動力)。方法重載(overload)實現的是編譯時的多態性(也稱為前綁定),而方法重寫(override)實現的是運行時的多態性(也稱為后綁定)。運行時的多態是面向對象最精髓的東西,要實現多態需要做兩件事:1). 方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);2). 對象造型(用父類型引用引用子類型對象,這樣同樣的引用調用同樣的方法就會根據子類對象的不同而表現出不同的行為)。

      2、訪問修飾符public,private,protected,以及不寫(默認)時的區別?

      答:

    修飾符 當前類 同包 子類 其他包
    public
    protected ×
    default × ×
    private × × ×

      類的成員不寫訪問修飾時默認為default。默認對于同一個包中的其他類相當于公開(public),對于不是同一個包中的其他類相當于私有(private)。受保護(protected)對子類相當于公開,對不是同一包中的沒有父子關系的類相當于私有。Java中,外部類的修飾符只能是public或默認,類的成員(包括內部類)的修飾符可以是以上四種。

      3、String 是最基本的數據類型嗎?

      答:不是。Java中的基本數據類型只有8個:byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type),剩下的都是引用類型(reference type),Java 5以后引入的枚舉類型也算是一種比較特殊的引用類型。

      4、float f=3.4;是否正確?

      答:不正確。3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬于下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉換float f =(float)3.4; 或者寫成float f =3.4F;。

      5、short s1 = 1; s1 = s1 + 1;有錯嗎?short s1 = 1; s1 += 1;有錯嗎?

      答:對于short s1 = 1; s1 = s1 + 1;由于1是int類型,因此s1+1運算結果也是int 型,需要強制轉換類型才能賦值給short型。而short s1 = 1; s1 += 1;可以正確編譯,因為s1+= 1;相當于s1 = (short)(s1 + 1);其中有隱含的強制類型轉換。

      6、Java有沒有goto?

      答:goto 是Java中的保留字,在目前版本的Java中沒有使用。(根據James Gosling(Java之父)編寫的《The Java Programming Language》一書的附錄中給出了一個Java關鍵字列表,其中有goto和const,但是這兩個是目前無法使用的關鍵字,因此有些地方將其稱之為保留字,其實保留字這個詞應該有更廣泛的意義,因為熟悉C語言的程序員都知道,在系統類庫中使用過的有特殊意義的單詞或單詞的組合都被視為保留字)

      7、int和Integer有什么區別?

      答:Java是一個近乎純潔的面向對象編程語言,但是為了編程的方便還是引入了基本數據類型,但是為了能夠將這些基本數據類型當成對象操作,Java為每一個基本數據類型都引入了對應的包裝類型(wrapper class),int的包裝類就是Integer,從Java 5開始引入了自動裝箱/拆箱機制,使得二者可以相互轉換。

      Java 為每個原始類型提供了包裝類型:

      - 原始類型: boolean,char,byte,short,int,long,float,double

      - 包裝類型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

      class AutoUnboxingTest {

      public static void main(String[] args) {

      Integer a = new Integer(3);

      Integer b = 3; // 將3自動裝箱成Integer類型

      int c = 3;

      System.out.println(a == b); // false 兩個引用沒有引用同一對象

      System.out.println(a == c); // true a自動拆箱成int類型再和c比較

      }

      }1234567891012345678910

      最近還遇到一個面試題,也是和自動裝箱和拆箱有點關系的,代碼如下所示:

      public class Test03 {

      public static void main(String[] args) {

      Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;

      System.out.println(f1 == f2);

      System.out.println(f3 == f4);

      }

      }123456789123456789

      如果不明就里很容易認為兩個輸出要么都是true要么都是false。首先需要注意的是f1、f2、f3、f4四個變量都是Integer對象引用,所以下面的==運算比較的不是值而是引用。裝箱的本質是什么呢?當我們給一個Integer對象賦一個int值的時候,會調用Integer類的靜態方法valueOf,如果看看valueOf的源代碼就知道發生了什么。

      public static Integer valueOf(int i) {

      if (i >= IntegerCache.low && i <= IntegerCache.high)

      return IntegerCache.cache[i + (-IntegerCache.low)];

      return new Integer(i);

      }1234512345

      IntegerCache是Integer的內部類,其代碼如下所示:

      /**

      * Cache to support the object identity semantics of autoboxing for values between

      * -128 and 127 (inclusive) as required by JLS.

      *

      * The cache is initialized on first usage. The size of the cache

      * may be controlled by the {@code -XX:AutoBoxCacheMax=} option.

      * During VM initialization, java.lang.Integer.IntegerCache.high property

      * may be set and saved in the private system properties in the

      * sun.misc.VM class.

      */

      private static class IntegerCache {

      static final int low = -128;

      static final int high;

      static final Integer cache[];

      static {

      // high value may be configured by property

      int h = 127;

      String integerCacheHighPropValue =

      sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");

      if (integerCacheHighPropValue != null) {

      try {

      int i = parseInt(integerCacheHighPropValue);

      i = Math.max(i, 127);

      // Maximum array size is Integer.MAX_VALUE

      h = Math.min(i, Integer.MAX_VALUE - (-low) -1);

      } catch( NumberFormatException nfe) {

      // If the property cannot be parsed into an int, ignore it.

      }

      }

      high = h;

      cache = new Integer[(high - low) + 1];

      int j = low;

      for(int k = 0; k < cache.length; k++)

      cache[k] = new Integer(j++);

      // range [-128, 127] must be interned (JLS7 5.1.7)

      assert IntegerCache.high >= 127;

      }

      private IntegerCache() {}

      }12345678910111213141516171819202122232425262728293031323334353637383940414243441234567891011121314151617181920212223242526272829303132333435363738394041424344

      簡單的說,如果整型字面量的值在-128到127之間,那么不會new新的Integer對象,而是直接引用常量池中的Integer對象,所以上面的面試題中f1==f2的結果是true,而f3==f4的結果是false。

      提醒:越是貌似簡單的面試題其中的玄機就越多,需要面試者有相當深厚的功力。

      8、&和&&的區別?

      答:&運算符有兩種用法:(1)按位與;(2)邏輯與。&&運算符是短路與運算。邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運算符左右兩端的布爾值都是true整個表達式的值才是true。&&之所以稱為短路運算是因為,如果&&左邊的表達式的值是false,右邊的表達式會被直接短路掉,不會進行運算。很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應當寫為:username != null &&!username.equals(""),二者的順序不能交換,更不能用&運算符,因為第一個條件如果不成立,根本不能進行字符串的equals比較,否則會產生NullPointerException異常。注意:邏輯或運算符(|)和短路或運算符(||)的差別也是如此。

      補充:如果你熟悉JavaScript,那你可能更能感受到短路運算的強大,想成為javascript的高手就先從玩轉短路運算開始吧。

      9、解釋內存中的棧(stack)、堆(heap)和方法區(method area)的用法。

      答:通常我們定義一個基本數據類型的變量,一個對象的引用,還有就是函數調用的現場保存都使用JVM中的棧空間;而通過new關鍵字和構造器創建的對象則放在堆空間,堆是垃圾收集器管理的主要區域,由于現在的垃圾收集器都采用分代收集算法,所以堆空間還可以細分為新生代和老生代,再具體一點可以分為Eden、Survivor(又可分為From Survivor和To Survivor)、Tenured;方法區和堆都是各個線程共享的內存區域,用于存儲已經被JVM加載的類信息、常量、靜態變量、JIT編譯器編譯后的代碼等數據;程序中的字面量(literal)如直接書寫的100、"hello"和常量都是放在常量池中,常量池是方法區的一部分,。??臻g操作起來最快但是棧很小,通常大量的對象都是放在堆空間,棧和堆的大小都可以通過JVM的啟動參數來進行調整,??臻g用光了會引發StackOverflowError,而堆和常量池空間不足則會引發OutOfMemoryError。

      String str = new String("hello");11

      上面的語句中變量str放在棧上,用new創建出來的字符串對象放在堆上,而"hello"這個字面量是放在方法區的。

      補充1:較新版本的Java(從Java 6的某個更新開始)中,由于JIT編譯器的發展和"逃逸分析"技術的逐漸成熟,棧上分配、標量替換等優化技術使得對象一定分配在堆上這件事情已經變得不那么絕對了。

      補充2:運行時常量池相當于Class文件常量池具有動態性,Java語言并不要求常量一定只有編譯期間才能產生,運行期間也可以將新的常量放入池中,String類的intern()方法就是這樣的。

      看看下面代碼的執行結果是什么并且比較一下Java 7以前和以后的運行結果是否一致。

      String s1 = new StringBuilder("go")

      .append("od").toString();

      System.out.println(s1.intern() == s1);

      String s2 = new StringBuilder("ja")

      .append("va").toString();

      System.out.println(s2.intern() == s2);123456123456

      10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

      答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數上加0.5然后進行下取整。

      JAVA工程師面試技巧

      1.自我介紹。

      講清楚自己的學校,工作經歷,離職原因。

      2.項目介紹。

      做過的項目是什么,多少人參與,負責哪個模塊,做的什么業務,解決方案是什么,為什么這么做。

      我跟面試者聊的最多的就是他們做過的項目用到的技術方案,我會自己想一下,如果是我做這個需求,我怎么做,他們怎么做。

      如果我有經驗,知道他的方式不正確,會問一下他,這個方案怎么來的,為什么這么做,有沒有更好的辦法,能否看到這個方案中存在的問題。

      如果我沒經驗,我會把我的方案拿出來,跟他對比一下,問問他我的這個方案怎么樣,有什么風險。

      這部分主要考察的是業務理解能力和方案設計能力。

      3.方案交流

      我會主動問他,我們現在要做一個什么東西,假設你就是這個項目的負責人,你會怎么做。

      他給出一個方案之后, 會當場跟他交流這個方案的問題,順便借此交流看一下,如果他真的加入了我們團隊,是不是好交流。

      不怕不會,就怕點不透,太固執已見的,無法交流的,根本不知道你在說什么的,完全摸不著頭腦的,不考慮。

      4.技術面

      簡單的問Maven,Shell,nexus,Memcache,Redis,JMS,Rest,aop,SCA了解多少,有沒有特別熟悉的,如果有的話,挑一個他比較熟悉的問題問一下,看看他對一個知識點的掌握程度。

      比如說,Snapshot和Release的區別是什么?什么樣的場景下應該用Snapshot,什么時候去發布Release版本,Maven是如何識別有新的Snapshot新版本的?

      以及除了java之外還會別的什么語言。

      5.候選人自已的特長

      問我自己關心的問題,往往會補一句。除了以上我們聊到的,還有哪些你擅長的,但是我們剛剛沒有說的技術點?

      如果候選人說了,繼續聊,看看他的知識掌握程度。

      如果候選人說沒有了,就問他有沒有對我們公司想要了解的

    Java工程師面試題必考

    Java軟件工程師是指運用Java這種開發語言去完成軟件產品的軟件程序設計、開發、測試、維護升級等工作的人員。Java軟件工程師近年來成為熱門職業之一,你知道他們的面試試題考什么嗎?下面由學習啦小編為你提供的aa,希望大家喜歡。 Java
    推薦度:
    點擊下載文檔文檔為doc格式

    精選文章

    • 2017年山東農商行面試模擬題有哪些
      2017年山東農商行面試模擬題有哪些

      山東農村信用社的招聘考試一般會采用結構化面試形式。所謂結構化面試是指面試的內容、形式、程序、評分標準及結果的合成與分析等構成要素,按統一

    • 山東農商行歷年面試真題
      山東農商行歷年面試真題

      山東農村信用社的招聘考試一般會采用結構化面試形式。所謂結構化面試是指面試的內容、形式、程序、評分標準及結果的合成與分析等構成要素,按統一

    • 終極面試問題會有哪些參考答案
      終極面試問題會有哪些參考答案

      面試時,面試官最看中的是哪些能力?下面就由學習啦小編為大家介紹一下終極面試問題的文章,歡迎閱讀。 終極面試問題篇1 1. 說說你不得不糾正某人錯誤

    • selenium自動化面試題及答案
      selenium自動化面試題及答案

      自動化技術是一門綜合性技術,它和控制論、信息論、系統工程、計算機技術、電子學、液壓氣壓技術、自動控制等都有著十分密切的關系,而其中又以控

    3567624
    主站蜘蛛池模板: 欧洲精品一区二区三区| 妖神记1000多章哪里看| 精品无码三级在线观看视频 | 一区二区三区内射美女毛片| 免费观看无遮挡www的视频| 日本一在线中文字幕天堂| 精品久久久久久无码中文字幕一区| 久久久99视频| 亚洲欧美清纯丝袜另类| 国产激情视频一区二区三区| 成年人性生活片| 欧美日韩在线不卡| 色噜噜狠狠狠狠色综合久一| caoporm在线| 久久成人精品视频| 国产免费一期二期三期四期| 好男人日本社区www| 欧美无人区码卡二卡3卡4免费| 91精品免费观看| 中文字幕制服丝袜| 再深点灬舒服灬太大了添学长 | 粗大黑硬长爽猛欧美视频| h小视频在线观看| 久久精品女人天堂AV免费观看| 伊人影院中文字幕| 国产麻豆成人传媒免费观看| 日日婷婷夜日日天干| 欧美成年黄网站色视频| 精品国产日韩亚洲一区| 成人草莓视频在线观看| 97一区二区三区四区久久| 中文字幕丝袜诱惑| 九九热这里都是精品| 亚洲精品韩国美女在线| 又黄又爽又色的视频在线看| 国产在线视频福利| 好大好硬好深好爽的视频| 插我一区二区在线观看| 波多野结衣潜入搜查官| 精品国产三级a在线观看| 色综合久久天天综合|