91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

有哪些常見的Java面試

發布時間:2020-07-29 17:04:50 來源:億速云 閱讀:157 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關有哪些常見的Java面試,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。


  1、面向對象和面向過程的區別
  面向過程
  優點:性能比面向對象高,因為類調用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發、Linux/Unix等一般采用面向過程開發,性能是最重要的因素
  缺點:沒有面向對象易維護、易復用、易擴展
  面向對象
  優點:易維護、易復用、易擴展,由于面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易于維護。
  缺點:性能比面向過程低。


  2、 java的四個基本特性
  抽象:就是把現實生活中的某一類東西提取出來,用程序代碼表示,我們通常叫做類或者接口。抽象包括兩個方面:一個是數據抽象,一個是過程抽象。數據抽象也就是對象的屬性。過程抽象是對象的行為特征。
  封裝:把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行封裝隱藏。封裝分為屬性的封裝和方法的封裝。
  繼承:是對有著共同特性的多類事物,進行再抽象成一個類。這個類就是多類事物的父類。父類的意義在于抽取多類事物的共性。
  多態:允許不同類的對象對同一消息做出響應。方法的重載、類的覆蓋正體現了多態。


  3、重載和重寫的區別
  重載:發生在同一個類中,方法名必須相同,參數類型不同、個數不同、順序不同,方法返回值和訪問修飾符可以不同,發生在編譯時。
  重寫:發生在父子類中,方法名、參數列表必須相同,返回值小于等于父類,拋出的異常小于等于父類,訪問修飾符大于等于父類;如果父類方法訪問修飾符為private則子類中就不是重寫。


  4、采用字節碼的好處
  Java語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。
  所以Java程序運行時比較高效,而且,由于字節碼并不專對一種特定的機器,因此,Java程序無須重新編譯便可在多種不同的計算機上運行。


  5、構造器Constructor是否可被override
  構造器不能被重寫,不能用static修飾構造器,只能用public、private、protected這三個權限修飾符,且不能有返回語句。


  6、訪問控制符public,protected,private,以及默認的區別
  private只有在本類中才能訪問;
  public在任何地方都能訪問;
  protected在同包內的類及包外的子類能訪問;
  默認不寫在同包內能訪問。


  7、是否可以繼承String類
  String類是final類故不可以繼承,一切由final修飾過的都不能繼承。


  8、String、StringBuffer、StringBuilder區別
  可變性
  String類中使用字符數組保存字符串,private final char value[],所以string對象是不可變的。StringBuilder與StringBuffer都繼承自AbstractStringBuilder類
  在AbstractStringBuilder中也是使用字符數組保存字符串,char[] value,這兩種對象都是可變的。
  線程安全性
  String中的對象是不可變的,也就可以理解為常量,線程安全。AbstractStringBuilder是StringBuilder與StringBuffer的公共父類,定義了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。
  StringBuffer對方法加了同步鎖或者對調用的方法加了同步鎖,所以是線程安全的。StringBuilder并沒有對方法進行加同步鎖,所以是非線程安全的。
  性能
  每次對String 類型進行改變的時候,都會生成一個新的String 對象,然后將指針指向新的String 對象。
  StringBuffer每次都會對StringBuffer 對象本身進行操作,而不是生成新的對象并改變對象引用。相同情況下使用StirngBuilder 相比使用StringBuffer 僅能獲得10%~15% 左右的性能提升,但卻要冒多線程不安全的風險。


  9、hashCode和equals方法的關系
  equals相等,hashcode必相等;hashcode相等,equals可能不相等。
  Java語言采用的編碼方案
  Java語言采用Unicode編碼標準,Unicode(標準碼),它為每個字符制訂了一個唯一的數值,因此在任何的語言,平臺,程序都可以放心的使用。


  10、抽象類和接口的區別
  語法層次:抽象類和接口分別給出了不同的語法定義。
  設計層次:抽象層次不同,抽象類是對類抽象,而接口是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是接口卻是對類局部(行為)進行抽象。抽象類是自底向上抽象而來的,接口是自頂向下設計出來的。
  跨域不同:抽象類所體現的是一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在"is-a"關系,即父類和派生類在概念本質上應該是相同的。對于接口則不然,并不要求接口的實現者和接口定義在概念本質上是一致的,僅僅是實現了接口定義的契約而已,"like-a"的關系。


  11、自動裝箱與拆箱
  裝箱:將基本類型用它們對應的引用類型包裝起來;
  拆箱:將包裝類型轉換為基本數據類型;
  Java使用自動裝箱和拆箱機制,節省了常用數值的內存開銷和創建對象的開銷,提高了效率,由編譯器來完成,編譯器會在編譯期根據語法決定是否進行裝箱和拆箱動作。


  12:什么是泛型、為什么要使用以及泛型擦除
  泛型,即“參數化類型”。
  創建集合時就指定集合元素的類型,該集合只能保存其指定類型的元素,避免使用強制類型轉換。
  Java編譯器生成的字節碼是不包涵泛型信息的,泛型類型信息將在編譯處理是被擦除,這個過程即類型擦除。
  泛型擦除可以簡單的理解為將泛型java代碼轉換為普通java代碼,只不過編譯器更直接點,將泛型java代碼直接轉換成普通java字節碼。
  類型擦除的主要過程如下:
  1)將所有的泛型參數用其最左邊界(最頂級的父類型)類型替換。
  2)移除所有的類型參數。


  13、 Java中的集合類及關系圖
  List和Set繼承自Collection接口。
  Set無序不允許元素重復。HashSet和TreeSet是兩個主要的實現類。List有序且允許元素重復。
  ArrayList、LinkedList和Vector是三個主要的實現類。
  Map也屬于集合系統,但和Collection接口沒關系。Map是key對value的映射集合,其中key列就是一個集合。key不能重復,但是value可以重復。HashMap、TreeMap和Hashtable是三個主要的實現類。
  SortedSet和SortedMap接口對元素按指定規則排序,SortedMap是對key列進行排序。


  14、HashMap實現原理
  HashMap基于hashing原理,通過put()和get()方法儲存和獲取對象。當將鍵值對傳遞給put()方法時,它調用鍵對象的hashCode()方法來計算hashcode,讓后找到bucket位置來儲存值對象。
  當獲取對象時,通過鍵對象的equals()方法找到正確的鍵值對,然后返回值對象。
  HashMap使用LinkedList來解決碰撞問題,當發生碰撞了,對象將會儲存在LinkedList的下一個節點中。HashMap在每個LinkedList節點中儲存鍵值對對象。
  當兩個不同的鍵對象的hashcode相同時會發生什么?它們會儲存在同一個bucket位置的LinkedList中。鍵對象的equals()方法用來找到鍵值對。


  15、HashTable實現原理
  和HashMap一樣,Hashtable 也是一個散列表,它存儲的內容是鍵值對(key-value)映射。
  Hashtable 繼承于Dictionary,實現了Map、Cloneable、java.io.Serializable接口。
  Hashtable 的函數都是同步的,這意味著它是線程安全的。它的key、value都不可以為null。
  此外,Hashtable中的映射不是有序的。


  16、HashMap和HashTable區別
  1).HashTable的方法前面都有synchronized來同步,是線程安全的;HashMap未經同步,是非線程安全的。
  2).HashTable不允許null值(key和value都不可以) ;HashMap允許null值(key和value都可以)。
  3).HashTable有一個contains(Objectvalue)功能和containsValue(Objectvalue)功能一樣。
  4).HashTable使用Enumeration進行遍歷;HashMap使用Iterator進行遍歷。
  5).HashTable中hash數組默認大小是11,增加的方式是old*2+1;HashMap中hash數組的默認大小是16,而且一定是2的指數。
  6).哈希值的使用不同,HashTable直接使用對象的hashCode;HashMap重新計算hash值,而且用與代替求模


  17、ArrayList和vector區別
  ArrayList和Vector都實現了List接口,都是通過數組實現的。Vector是線程安全的,而ArrayList是非線程安全的。
  List第一次創建的時候,會有一個初始大小,隨著不斷向List中增加元素,當List 認為容量不夠的時候就會進行擴容。
  Vector缺省情況下自動增長原來一倍的數組長度,ArrayList增長原來的50%。

以上就是有哪些常見的Java面試,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周口市| 调兵山市| 庆云县| 五华县| 丰县| 英吉沙县| 天全县| 玉龙| 拜泉县| 察隅县| 清流县| 甘德县| 明溪县| 宜昌市| 陆川县| 平南县| 达州市| 金昌市| 许昌市| 宣城市| 邵阳市| 连江县| 绥芬河市| 武宁县| 寿宁县| 宁波市| 安庆市| 泰来县| 哈巴河县| 宣威市| 象山县| 台中市| 芦溪县| 永寿县| 浙江省| 桃园市| 青浦区| 高州市| 清徐县| 重庆市| 乌鲁木齐市|