真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

有哪些常見(jiàn)的Java面試-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、金山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為金山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

本篇文章給大家分享的是有關(guān)有哪些常見(jiàn)的Java面試,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。


  1、面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別
  面向過(guò)程
  優(yōu)點(diǎn):性能比面向?qū)ο蟾?,因?yàn)轭愓{(diào)用時(shí)需要實(shí)例化,開銷比較大,比較消耗資源;比如單片機(jī)、嵌入式開發(fā)、Linux/Unix等一般采用面向過(guò)程開發(fā),性能是最重要的因素
  缺點(diǎn):沒(méi)有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴(kuò)展
  面向?qū)ο?br/>  優(yōu)點(diǎn):易維護(hù)、易復(fù)用、易擴(kuò)展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計(jì)出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù)。
  缺點(diǎn):性能比面向過(guò)程低。


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


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


  4、采用字節(jié)碼的好處
  Java語(yǔ)言通過(guò)字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)題,同時(shí)又保留了解釋型語(yǔ)言可移植的特點(diǎn)。
  所以Java程序運(yùn)行時(shí)比較高效,而且,由于字節(jié)碼并不專對(duì)一種特定的機(jī)器,因此,Java程序無(wú)須重新編譯便可在多種不同的計(jì)算機(jī)上運(yùn)行。


  5、構(gòu)造器Constructor是否可被override
  構(gòu)造器不能被重寫,不能用static修飾構(gòu)造器,只能用public、private、protected這三個(gè)權(quán)限修飾符,且不能有返回語(yǔ)句。


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


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


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


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


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


  11、自動(dòng)裝箱與拆箱
  裝箱:將基本類型用它們對(duì)應(yīng)的引用類型包裝起來(lái);
  拆箱:將包裝類型轉(zhuǎn)換為基本數(shù)據(jù)類型;
  Java使用自動(dòng)裝箱和拆箱機(jī)制,節(jié)省了常用數(shù)值的內(nèi)存開銷和創(chuàng)建對(duì)象的開銷,提高了效率,由編譯器來(lái)完成,編譯器會(huì)在編譯期根據(jù)語(yǔ)法決定是否進(jìn)行裝箱和拆箱動(dòng)作。


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


  13、 Java中的集合類及關(guān)系圖
  List和Set繼承自Collection接口。
  Set無(wú)序不允許元素重復(fù)。HashSet和TreeSet是兩個(gè)主要的實(shí)現(xiàn)類。List有序且允許元素重復(fù)。
  ArrayList、LinkedList和Vector是三個(gè)主要的實(shí)現(xiàn)類。
  Map也屬于集合系統(tǒng),但和Collection接口沒(méi)關(guān)系。Map是key對(duì)value的映射集合,其中key列就是一個(gè)集合。key不能重復(fù),但是value可以重復(fù)。HashMap、TreeMap和Hashtable是三個(gè)主要的實(shí)現(xiàn)類。
  SortedSet和SortedMap接口對(duì)元素按指定規(guī)則排序,SortedMap是對(duì)key列進(jìn)行排序。


  14、HashMap實(shí)現(xiàn)原理
  HashMap基于hashing原理,通過(guò)put()和get()方法儲(chǔ)存和獲取對(duì)象。當(dāng)將鍵值對(duì)傳遞給put()方法時(shí),它調(diào)用鍵對(duì)象的hashCode()方法來(lái)計(jì)算hashcode,讓后找到bucket位置來(lái)儲(chǔ)存值對(duì)象。
  當(dāng)獲取對(duì)象時(shí),通過(guò)鍵對(duì)象的equals()方法找到正確的鍵值對(duì),然后返回值對(duì)象。
  HashMap使用LinkedList來(lái)解決碰撞問(wèn)題,當(dāng)發(fā)生碰撞了,對(duì)象將會(huì)儲(chǔ)存在LinkedList的下一個(gè)節(jié)點(diǎn)中。HashMap在每個(gè)LinkedList節(jié)點(diǎn)中儲(chǔ)存鍵值對(duì)對(duì)象。
  當(dāng)兩個(gè)不同的鍵對(duì)象的hashcode相同時(shí)會(huì)發(fā)生什么?它們會(huì)儲(chǔ)存在同一個(gè)bucket位置的LinkedList中。鍵對(duì)象的equals()方法用來(lái)找到鍵值對(duì)。


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


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


  17、ArrayList和vector區(qū)別
  ArrayList和Vector都實(shí)現(xiàn)了List接口,都是通過(guò)數(shù)組實(shí)現(xiàn)的。Vector是線程安全的,而ArrayList是非線程安全的。
  List第一次創(chuàng)建的時(shí)候,會(huì)有一個(gè)初始大小,隨著不斷向List中增加元素,當(dāng)List 認(rèn)為容量不夠的時(shí)候就會(huì)進(jìn)行擴(kuò)容。
  Vector缺省情況下自動(dòng)增長(zhǎng)原來(lái)一倍的數(shù)組長(zhǎng)度,ArrayList增長(zhǎng)原來(lái)的50%。

以上就是有哪些常見(jiàn)的Java面試,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。


分享文章:有哪些常見(jiàn)的Java面試-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://weahome.cn/article/cceoie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部