久久精品国产一区二区电影,久久精品国产亚洲av瑜伽,精品无人区一码卡二卡三,久草热8精品视频在线观看 ,久久99精品久久久久麻豆

錘子簡(jiǎn)歷品牌推廣師
出場(chǎng)率較高的Java面試題及答案分享
作者:錘子簡(jiǎn)歷 2020/06/18 12:30:00
閱讀 239

  簡(jiǎn)歷是有針對(duì)性的自我介紹的一種規(guī)范化、邏輯化的書(shū)面表達(dá)。對(duì)應(yīng)聘者來(lái)說(shuō),簡(jiǎn)歷是求職的"敲門(mén)磚"。該如何制作一份精美的“出彩”的簡(jiǎn)歷呢?以下是錘子簡(jiǎn)歷小編整理的司機(jī)個(gè)人簡(jiǎn)歷范文,僅供參考!馬上又要到招聘旺季了,小簡(jiǎn)在這里給大家整理了一些互聯(lián)網(wǎng)公司面試都喜歡問(wèn)的一些問(wèn)題或者一些出場(chǎng)率很高的Java面試題,希望能夠幫到在校招或者社招路上的你。
1. Collections.sort排序內(nèi)部原理在Java 6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,內(nèi)部實(shí)現(xiàn)換成了TimSort,其對(duì)對(duì)象間比較的實(shí)現(xiàn)要求更加嚴(yán)格
2. hashMap原理,java8做的改變從結(jié)構(gòu)實(shí)現(xiàn)來(lái)講,HashMap是數(shù)組+鏈表+紅黑樹(shù)(JDK
1. 8增加了紅黑樹(shù)部分)實(shí)現(xiàn)的。HashMap最多只允許一條記錄的鍵為null,允許多條記錄的值為null。HashMap非線程安全。ConcurrentHashMap線程安全。解決碰撞:當(dāng)出現(xiàn)沖突時(shí),運(yùn)用拉鏈法,將關(guān)鍵詞為同義詞的結(jié)點(diǎn)鏈接在一個(gè)單鏈表中,散列表長(zhǎng)m,則定義一個(gè)由m個(gè)頭指針組成的指針數(shù)組T,地址為i的結(jié)點(diǎn)插入以T(i)為頭指針的單鏈表中。Java8中,沖突的元素超過(guò)限制(8),用紅黑樹(shù)替換鏈表。
3. String 和 StringBuilder 的區(qū)別1)可變與不可變:String不可變,每一次執(zhí)行“+”都會(huì)新生成一個(gè)新對(duì)象,所以頻繁改變字符串的情況中不用String,以節(jié)省內(nèi)存。是否多線程安全:StringBuilder并沒(méi)有對(duì)方法進(jìn)行加同步鎖,所以是非線程安全的。StringBuffer和String均線程安全。
4. Vector 與 Array 的區(qū)別1)ArrayList在內(nèi)存不夠時(shí)默認(rèn)是擴(kuò)展50% + 1個(gè),Vector是默認(rèn)擴(kuò)展1倍。Vector屬于線程安全級(jí)別的,但是大多數(shù)情況下不使用Vector,因?yàn)榫€程安全需要更大的系統(tǒng)開(kāi)銷(xiāo)。
5. HashMap 與 Hashtable 的區(qū)別1) 歷史原因: Hashtable繼承Dictonary類(lèi), HashMap繼承自abstractMapHashMap允許空的鍵值對(duì), 但最多只有一個(gè)空對(duì)象,而HashTable不允許。HashTable同步,而HashMap非同步,效率上比HashTable要高
5. ConncurrentHashMap和hashtable比較(兩個(gè)線程并發(fā)訪問(wèn)map中同一條鏈,一個(gè)線程在尾部刪除,一個(gè)線程在前面遍歷查找,問(wèn)為什么前面的線程還能正確的查找到后面被另一個(gè)線程刪除的節(jié)點(diǎn))ConcurrentHashMap融合了hashtable和hashmap二者的優(yōu)勢(shì)。hashtable是做了同步的,即線程安全,hashmap未考慮同步。所以hashmap在單線程情況下效率較高。hashtable在的多線程情況下,同步操作能保證程序執(zhí)行的正確性。但是hashtable是阻塞的,每次同步執(zhí)行的時(shí)候都要鎖住整個(gè)結(jié)構(gòu),ConcurrentHashMap正是為了解決這個(gè)問(wèn)題而誕生的,ConcurrentHashMap允許多個(gè)修改操作并發(fā)進(jìn)行,其關(guān)鍵在于使用了鎖分離技術(shù)(一個(gè)Array保存多個(gè)Object,使用這些對(duì)象的鎖作為分離鎖,get/put時(shí)隨機(jī)使用任意一個(gè))。它使用了多個(gè)鎖來(lái)控制對(duì)hash表的不同部分進(jìn)行的修改。在JDK 1. 6中,有HashEntry結(jié)構(gòu)存在,每次插入將新添加節(jié)點(diǎn)作為鏈的頭節(jié)點(diǎn)(同HashMap實(shí)現(xiàn)),而且每次刪除一個(gè)節(jié)點(diǎn)時(shí),會(huì)將刪除節(jié)點(diǎn)之前的所有節(jié)點(diǎn)拷貝一份組成一個(gè)新的鏈,而將當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)的next指向當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),從而在刪除以后有兩條鏈存 在,因而可以保證即使在同一條鏈中,有一個(gè)線程在刪除,而另一個(gè)線程在遍歷,它們都能工作良好,因?yàn)楸闅v的線程能繼續(xù)使用原有的鏈。Java8中,采用volatile HashEntry保存數(shù)據(jù),table元素作為鎖;從table數(shù)組+單向鏈表加上了紅黑樹(shù)。紅黑樹(shù)是一種特別的二叉查找樹(shù),特性為:
1. 節(jié)點(diǎn)為紅或者黑
2. 根節(jié)點(diǎn)為黑
3. 葉節(jié)點(diǎn)為黑
4. 一節(jié)點(diǎn)為紅,則葉節(jié)點(diǎn)為黑
5. 一節(jié)點(diǎn)到其子孫節(jié)點(diǎn)所有路徑上的黑節(jié)點(diǎn)數(shù)目相同。
7.ArrayList與 LinkedList 的區(qū)別?最明顯的區(qū)別是:ArrrayList 底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,支持隨機(jī)訪問(wèn),而 LinkedList 的底層數(shù)據(jù)結(jié)構(gòu)書(shū)鏈表,不支持隨機(jī)訪問(wèn)。使用下標(biāo)訪問(wèn)一個(gè)元素,ArrayList 的時(shí)間復(fù)雜度是 O(1),而 LinkedList 是 O(n)。LinkedList是雙向鏈表
8.Java 中,Comparator 與Comparable 有什么不同?Comparable 接口用于定義對(duì)象的自然順序,是排序接口,而 comparator 通常用于定義用戶(hù)定制的順序,是比較接口。我們?nèi)绻枰刂颇硞€(gè)類(lèi)的次序,而該類(lèi)本身不支持排序(即沒(méi)有實(shí)現(xiàn)Comparable接口),那么我們就可以建立一個(gè)“該類(lèi)的比較器”來(lái)進(jìn)行排序。Comparable 總是只有一個(gè),但是可以有多個(gè) comparator 來(lái)定義對(duì)象的順序。
9.抽象類(lèi)是什么?它與接口有什么區(qū)別?你為什么要使用過(guò)抽象類(lèi)?抽象類(lèi)是指不允許被實(shí)例化的類(lèi);一個(gè)類(lèi)只能使用一次繼承關(guān)系。但是,一個(gè)類(lèi)卻可以實(shí)現(xiàn)多個(gè)interface。abstract class和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstract class表示的是"is-a"關(guān)系,interface表示的是"like-a"關(guān)系實(shí)現(xiàn)抽象類(lèi)和接口的類(lèi)必須實(shí)現(xiàn)其中的所有方法。抽象類(lèi)中可以有非抽象方法。接口中則不能有實(shí)現(xiàn)方法。但在Java8中允許接口中有靜態(tài)默認(rèn)的方法。接口中定義的變量默認(rèn)是public static final 型,且必須給其初值,所以實(shí)現(xiàn)類(lèi)中不能重新定義,也不能改變其值。抽象類(lèi)中的變量默認(rèn)是 friendly 型,其值可以在子類(lèi)中重新定義,也可以重新賦值。子類(lèi)中實(shí)現(xiàn)父類(lèi)中的抽象方法時(shí),可見(jiàn)性可以大于等于父類(lèi)中的;而接口實(shí)現(xiàn)類(lèi)中的接口 方法的可見(jiàn)性只能與接口中相同(public)。用抽象類(lèi)是為了重用。減少編碼量,降低耦合性。
10.描述 Java 中的重載和重寫(xiě)?重載和重寫(xiě)都允許你用相同的名稱(chēng)來(lái)實(shí)現(xiàn)不同的功能,但是重載是編譯時(shí)活動(dòng),而重寫(xiě)是運(yùn)行時(shí)活動(dòng)。你可以在同一個(gè)類(lèi)中重載方法,但是只能在子類(lèi)中重寫(xiě)方法。重寫(xiě)必須要有繼承重寫(xiě):
1、在子類(lèi)中可以根據(jù)需要對(duì)從基類(lèi)中繼承來(lái)的方法進(jìn)行重寫(xiě)。
2、重寫(xiě)的方法和被重寫(xiě)的方法必須具有相同方法名稱(chēng)、參數(shù)列表和返回類(lèi)型。
3、重寫(xiě)方法不能使用比被重寫(xiě)的方法更嚴(yán)格的訪問(wèn)權(quán)限。重載的時(shí)候,方法名要一樣,但是參數(shù)類(lèi)型和個(gè)數(shù)不一樣,返回值類(lèi)型可以相同也可以不相同。無(wú)法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。 1
1. Collection與Collections的區(qū)別是什么?Collection是Java集合框架中的基本接口;Collections是Java集合框架提供的一個(gè)工具類(lèi),其中包含了大量用于操作或返回集合的靜態(tài)方法。 1
2. Java中多態(tài)的實(shí)現(xiàn)原理所謂多態(tài),指的就是父類(lèi)引用指向子類(lèi)對(duì)象,調(diào)用方法時(shí)會(huì)調(diào)用子類(lèi)的實(shí)現(xiàn)而不是父類(lèi)的實(shí)現(xiàn)。多態(tài)的實(shí)現(xiàn)的關(guān)鍵在于“動(dòng)態(tài)綁定”。 1
3. object中定義了哪些方法?clone(), equals(), hashCode(), toString(), notify(), notifyAll(),wait(), finalize(), getClass() 1
4. Java泛型和類(lèi)型擦除?泛型即參數(shù)化類(lèi)型,在創(chuàng)建集合時(shí),指定集合元素的類(lèi)型,此集合只能傳入該類(lèi)型的參數(shù)。類(lèi)型擦除:java編譯器生成的字節(jié)碼不包含泛型信息,所以在編譯時(shí)擦除:
1. 泛型用最頂級(jí)父類(lèi)替換;
2. 移除。 1
5. 說(shuō)出 5 個(gè) JDK 1. 8 引入的新特性?Java 8 在 Java 歷史上是一個(gè)開(kāi)創(chuàng)新的版本,下面 JDK 8 中 5 個(gè)主要的特性:Lambda 表達(dá)式;允許像對(duì)象一樣傳遞匿名函數(shù) Stream API,充分利用現(xiàn)代多核 CPU,可以寫(xiě)出很簡(jiǎn)潔的代碼 ;Date 與 Time API,最終,有一個(gè)穩(wěn)定、簡(jiǎn)單的日期和時(shí)間庫(kù)可供你使用 擴(kuò)展方法,現(xiàn)在,接口中可以有靜態(tài)、默認(rèn)方法; 重復(fù)注解,現(xiàn)在你可以將相同的注解在同一類(lèi)型上使用多次。 1
6. java中public,private,protected以及默認(rèn)關(guān)鍵字的訪問(wèn)范圍:Protected可在包內(nèi)及包外子類(lèi)訪問(wèn),default只能同一包內(nèi)訪問(wèn),prvate只能同一類(lèi) 1
7. 常用數(shù)據(jù)結(jié)構(gòu):集合,線性結(jié)構(gòu)(數(shù)組,隊(duì)列,鏈表和棧),樹(shù)形結(jié)構(gòu),圖狀結(jié)構(gòu)1
8.Java 中的 TreeMap 是采用什么樹(shù)實(shí)現(xiàn)的?(答案)Java 中的 TreeMap 是使用紅黑樹(shù)實(shí)現(xiàn)的。 1
9. 匿名內(nèi)部類(lèi)是什么?如何訪問(wèn)在其外面定義的變量?匿名內(nèi)部類(lèi)也就是沒(méi)有名字的內(nèi)部類(lèi),匿名內(nèi)部類(lèi)只能使用一次,它通常用來(lái)簡(jiǎn)化代碼編寫(xiě)。匿名內(nèi)部類(lèi)只能訪問(wèn)外部類(lèi)的Final變量. Java 8更加智能:如果局部變量被匿名內(nèi)部類(lèi)訪問(wèn),那么該局部變量相當(dāng)于自動(dòng)使用了final修飾。 20. 如何創(chuàng)建單例模式?說(shuō)了雙重檢查,他說(shuō)不是線程安全的。如何高效的創(chuàng)建一個(gè)線程安全的單例?一種是通過(guò)枚舉,一種是通過(guò)靜態(tài)內(nèi)部類(lèi)。 2
1. poll() 方法和 remove() 方法的區(qū)別?poll() 和remove() 都是從隊(duì)列中取出一個(gè)元素,但是 poll() 在獲取元素失敗的時(shí)候會(huì)返回空,但是 remove() 失敗的時(shí)候會(huì)拋出異常。 2
2. 寫(xiě)一段代碼在遍歷 ArrayList 時(shí)移除一個(gè)元素使用迭代器。Iterator itr = list.iterator();while(itr.hasNext()) {if(…) { itr.remove();} }—END—

內(nèi)容來(lái)源說(shuō)明:本文章來(lái)自網(wǎng)絡(luò)收集,如侵犯了你的權(quán)益,請(qǐng)聯(lián)系QQ:2772182309進(jìn)行刪除。
智能在線簡(jiǎn)歷編輯器
錘子簡(jiǎn)歷在線簡(jiǎn)歷制作,一鍵導(dǎo)出,快速生成 專(zhuān)屬你的優(yōu)秀求職簡(jiǎn)歷,敲定高薪 Offer~
立即創(chuàng)建簡(jiǎn)歷

【使用錘子簡(jiǎn)歷小程序制作簡(jiǎn)歷】

范文模板 更多>