您好,登錄后才能下訂單哦!
這篇文章主要介紹了java中級(jí)面試題的考點(diǎn)有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1.SpringMVC,Spring Web MVC是一種基于Java的實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式的請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架。2.Shiro,Apache Shiro是Java的一個(gè)安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。4.Dubbo,Dubbo是一個(gè)分布式服務(wù)框架。5.Maven,Maven是個(gè)項(xiàng)目管理和構(gòu)建自動(dòng)化工具。6.RabbitMQ,RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。7.Ehcache,EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架。
在我們對(duì)java有一定的基礎(chǔ)學(xué)習(xí)后,能力再往上升一些就是中級(jí)。對(duì)于初級(jí)和中級(jí)來說,后者除了對(duì)于基礎(chǔ)java內(nèi)容把握能力強(qiáng)外,在一些知識(shí)點(diǎn)的比較分析和原理解剖上有所理解能力。
1.比較接口和抽象類的語法區(qū)別
(1)抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。
(2)抽象類中可以有普通成員變量,接口中沒有普通成員變量!!!(注意重點(diǎn)在普通,即非靜態(tài)和變量)
(3)抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。
(4)抽象類中的抽象方法的訪問類型可以是public,protected和(默認(rèn)類型,雖然eclipse下不報(bào)錯(cuò),但應(yīng)該也不行),但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型。
2.HashMap,LinkedHashMap,TreeMap的區(qū)別
(1)HashMap,LinkedHashMap,TreeMap都屬于Map。
(2)Map的主要作用是用于存儲(chǔ)鍵(key)值(value)對(duì),根據(jù)鍵得到值,因此不允許鍵重復(fù),但允許值重復(fù)。
(3)HashMap是一個(gè)最常用的Map,它根據(jù)鍵的HashCode值存儲(chǔ)數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有最快的訪問速度。HashMap最多只允許一條記錄的鍵為Null;允許多條記錄的值為Null;HashMap不支持線程的同步,即任一時(shí)刻可以有多個(gè)線程同時(shí)寫HashMap;可能會(huì)導(dǎo)致數(shù)據(jù)的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。
(4)LinkedHashMap也是一個(gè)HashMap,但是內(nèi)部維持了一個(gè)雙向鏈表,可以保持順序;
(5)TreeMap不僅可以保持順序,而且可以用于排序;
3.Java中堆和棧有什么不同
堆:(對(duì)象)
引用類型的變量,其內(nèi)存分配在堆上或者常量池(字符串常量、基本數(shù)據(jù)類型常量),需要通過new等方式來創(chuàng)建。
堆內(nèi)存主要作用是存放運(yùn)行時(shí)創(chuàng)建(new)的對(duì)象。
(主要用于存放對(duì)象,存取速度慢,可以運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,生存期不需要提前確定)
棧:(基本數(shù)據(jù)類型變量、對(duì)象的引用變量)
基本數(shù)據(jù)類型的變量(int、short、long、byte、float、double、boolean、char等)以及對(duì)象的引用變量,其內(nèi)存分配在棧上,變量出了作用域就會(huì)自動(dòng)釋放。
4. 內(nèi)存溢出是怎么回事?
對(duì)象有被指向的引用,但是再也用不到它就是內(nèi)存溢出了。
GC機(jī)制:復(fù)制回收,標(biāo)記清除,引用計(jì)數(shù)(如果有循環(huán)引用后,會(huì)影響垃圾回收,所以JVM虛擬機(jī)沒有采用此方法進(jìn)行垃圾回收)。
5.有哪些垃圾回收算法?
垃圾回收從理論上非常容易理解,具體的方法有以下四種:(1)標(biāo)記-清除;(2)標(biāo)記-復(fù)制;(3)標(biāo)記-整理;(4)分代回收
6.說一下對(duì)存儲(chǔ)過程的理解
存儲(chǔ)過程:存儲(chǔ)過程就是編譯好了的一些sql語句。
存儲(chǔ)過程因?yàn)镾QL語句已經(jīng)預(yù)編繹過了,因此運(yùn)行的速度比較快。
可保證數(shù)據(jù)的安全性和完整性。通過存儲(chǔ)過程可以使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。通過存儲(chǔ)過程可以使相關(guān)的動(dòng)作在一起發(fā)生,從而可以維護(hù)數(shù)據(jù)庫的完整性。
可以降低網(wǎng)絡(luò)的通信量。存儲(chǔ)過程主要是在服務(wù)器上運(yùn)行,減少對(duì)客戶機(jī)的壓力。
存儲(chǔ)過程可以接受參數(shù)、輸出參數(shù)、返回單個(gè)或多個(gè)結(jié)果集以及返回值。可以向程序返回錯(cuò)誤原因。
存儲(chǔ)過程可以包含程序流、邏輯以及對(duì)數(shù)據(jù)庫的查詢。同時(shí)可以實(shí)體封裝和隱藏了數(shù)據(jù)邏輯。
7.數(shù)據(jù)庫連接池是什么意思
像打開關(guān)閉數(shù)據(jù)庫連接這種和數(shù)據(jù)庫的交互可能是很費(fèi)時(shí)的,尤其是當(dāng)客戶端數(shù)量增加的時(shí)候,會(huì)消耗大量的資源,成本是非常高的。可以在應(yīng)用服務(wù)器啟動(dòng)的時(shí)候建立很多個(gè)數(shù)據(jù)庫連接并維護(hù)在一個(gè)池中。連接請(qǐng)求由池中的連接提供。在連接使用完畢以后,把連接歸還到池中,以用于滿足將來更多的請(qǐng)求。
8.HashMap的底層實(shí)現(xiàn)
首先有一個(gè)每個(gè)元素都是鏈表(可能表述不準(zhǔn)確)的數(shù)組,當(dāng)添加一個(gè)元素(key-value)時(shí),就首先計(jì)算元素key的hash值,以此確定插入數(shù)組中的位置,但是可能存在同一hash值的元素已經(jīng)被放在數(shù)組同一位置了,這時(shí)就添加到同一hash值的元素的后面,他們?cè)跀?shù)組的同一位置,但是形成了鏈表,同一各鏈表上的Hash值是相同的,所以說數(shù)組存放的是鏈表。而當(dāng)鏈表長(zhǎng)度太長(zhǎng)時(shí),鏈表就轉(zhuǎn)換為紅黑樹,這樣大大提高了查找的效率。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java中級(jí)面試題的考點(diǎn)有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。