java后臺開發(fā)筆試題匯總

java后臺開發(fā)筆試題匯總

深圳達內(nèi)教育      2022-04-09 05:42:01     8

java后臺開發(fā)筆試題匯總,java筆試題是大家比較關(guān)心的問題,因為在找工作的時候,都會有java筆試題的測試,這直接影響面試結(jié)果,深圳達內(nèi)教育java培訓(xùn)機構(gòu)

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

java筆試題是大家比較關(guān)心的問題,因為在找工作的時候,都會有java筆試題的測試,這直接影響面試結(jié)果,深圳達內(nèi)教育java培訓(xùn)機構(gòu)的小編為大家準(zhǔn)備了java后臺開發(fā)筆試題匯總,有需要的小伙伴可以看一看。

1、使用Spring框架的好處是什么?

輕量:Spring是輕量的,基本的版本大約2MB

控制反轉(zhuǎn)(IOC):Spring通過控制反轉(zhuǎn)實現(xiàn)類松散耦合,對象們給出它們的依賴,而不是創(chuàng)建或查找依賴的對象們。

面向切面的編程(AOP):Spring支持面向切面的編程,并且把業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分開。

容器:spring包含并管理應(yīng)用中對象的生命周期和配置。

MVC框架:Spring的WEB框架是個精心設(shè)計的框架,是Web框架的一個很好的替代品。

事務(wù)管理:Spring提供一個持續(xù)的事務(wù)管理接口,可以擴展到上至本地事務(wù)下至全局事務(wù)。

異常處理:Spring提供方便的API把具體技術(shù)相關(guān)的異常轉(zhuǎn)換為一致的unchecked異常。

2、Java工廠模式和Spring IOC的區(qū)別在哪?

Java工廠是在工廠中修改,在工廠中修改就要重修編譯工廠類,重新編譯的話就要先停了JVM再重新啟動。

Spring IOC是熱插拔的,在XML中直接修改,修改xmlspring就會立即發(fā)現(xiàn)你改動了XML,會再重新讀一遍XML,就會發(fā)現(xiàn)新改動了,根本不用重新啟動JVM。

3、ORM框架(Object relation mapping)有什么概念?

ORM對象關(guān)系映射關(guān)系,面向?qū)ο蟮膶ο竽P秃完P(guān)系型數(shù)據(jù)之間的相互轉(zhuǎn)換。

Hibernate和Mybatis都是常用的ORM框架,兩者區(qū)別:

(1)mybatis手寫SQL,而hibernate提供映射機制,開發(fā)人員無需擔(dān)心。

(2)mybatis控制更細粒度,但可移植型差,hibernate開發(fā)DAO很簡單,可移植性好。

(3)hibernate擁有完整的日志系統(tǒng),mybatis則欠缺一些

(4) mybatis相比hibernate需要關(guān)心很多細節(jié)

(5)sql直接優(yōu)化上,mybatis要比hibernate方便很多

4、數(shù)據(jù)庫事務(wù)的四大特性及事務(wù)隔離級別是什么?

(1)事務(wù)的四大特性:

原子性(Atomicity):事務(wù)包含的所有操作要么全部成功,要么全部失敗回滾。

一致性(Consistency):一個事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。

隔離性(Isolation):當(dāng)多個用戶并發(fā)訪問數(shù)據(jù)庫時,比如操作同一張表時,數(shù)據(jù)庫為每一個用戶開啟的事務(wù),不能被其他事務(wù)的操作所干擾,多個并發(fā)事務(wù)之間要相互隔離。

持久性(Durability):一個事務(wù)一旦被提交了,那么對數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久性的,即便是在數(shù)據(jù)庫系統(tǒng)遇到故障的情況下也不會丟失提交事務(wù)的操作。

(2)事務(wù)隔離:

更新丟失:兩事務(wù)同時更新,一個失敗回滾覆蓋另一個事務(wù)的更新。

臟讀:事務(wù)T1讀取到事務(wù)T2修改了但是還未提交的數(shù)據(jù),之后事務(wù)T2又回滾其更新操作,導(dǎo)致事務(wù)T1讀到的是臟數(shù)據(jù)。

不可重復(fù)讀:事務(wù)T1讀取某個數(shù)據(jù)后,事務(wù)T2對其做了修改,當(dāng)事務(wù)T1再次讀該數(shù)據(jù)時得到與前一次不同的值。

虛讀(幻讀):事務(wù)T1讀取在讀取某范圍數(shù)據(jù)時,事務(wù)T2又插入一條數(shù)據(jù),當(dāng)事務(wù)T1再次數(shù)據(jù)這個范圍數(shù)據(jù)時發(fā)現(xiàn)不一樣了,出現(xiàn)了一些“幻影行”。

不可重復(fù)讀和臟讀的區(qū)別:臟讀是某一事務(wù)讀取了另一個事務(wù)未提交的臟數(shù)據(jù),而不可重復(fù)讀則是讀取了前一事務(wù)提交的數(shù)據(jù)。

幻讀和不可重復(fù)讀的異同:都是讀取了另一條已經(jīng)提交的事務(wù)(這點就臟讀不同),所不同的是不可重復(fù)讀查詢的都是同一個數(shù)據(jù)項,而幻讀針對的是一批數(shù)據(jù)整體(比如數(shù)據(jù)的個數(shù))。

(3)事務(wù)隔離的級別:

讀未提交(1000):只限制同一數(shù)據(jù)寫事務(wù)禁止其他寫事務(wù)。解決”更新丟失”。

讀已提交(1100):只限制同一數(shù)據(jù)寫事務(wù)禁止其它讀寫事務(wù)。解決”臟讀”,以及”更新丟失”。

可重復(fù)讀(1110):限制同一數(shù)據(jù)寫事務(wù)禁止其他讀寫事務(wù),讀事務(wù)禁止其它寫事務(wù)(允許讀)。解決”不可重復(fù)讀”,以及”更新丟失”和”臟讀”。

串行化(1111):提供嚴(yán)格的事務(wù)隔離。它要求事務(wù)序列化執(zhí)行,事務(wù)只能一個接著一個地執(zhí)行,但不能并發(fā)執(zhí)行。如果僅僅通過“行級鎖”是無法實現(xiàn)事務(wù)序列化的,必須通過其他機制保證新插入的數(shù)據(jù)不會被剛執(zhí)行查詢操作的事務(wù)訪問到。

5、假設(shè)有一張用戶表,正常的表只能存放大概一千萬或是兩千萬左右的數(shù)據(jù),但是有上億的用戶?怎么存儲?

橫向分割或者縱向分割。

不太嚴(yán)格的將,對于海量數(shù)據(jù)的數(shù)據(jù)庫,如果是因為表多而數(shù)據(jù)多,這時候適合垂直切分,即把關(guān)系緊密的(比如同一模塊)的表切分出來出來放在一個servlet上。如果對于表并不多,但每張表的數(shù)據(jù)非常多,這時候就適合水平切分,即把表的數(shù)據(jù)按某種規(guī)則切分到對個數(shù)據(jù)庫(server)上。

可以橫向分割,把表分割成多個表然后分布式存儲。

6、庫函數(shù)和系統(tǒng)調(diào)用是什么?

(1)系統(tǒng)調(diào)用是為了方便應(yīng)用使用操作系統(tǒng)的接口,而庫函數(shù)是為了方便入門編寫應(yīng)用程序而引出的,比如自己編寫一個函數(shù)其實也可以說是一個庫函數(shù)。

(2)系統(tǒng)調(diào)用可以理解為內(nèi)核提供給我們在用戶態(tài)的接口函數(shù),可以認為是某種內(nèi)核的庫函數(shù)。

(3)read()函數(shù)是系統(tǒng)調(diào)用,而fread()函數(shù)是C標(biāo)準(zhǔn)庫函數(shù)。

7、Java設(shè)計模式有哪些?

創(chuàng)建型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。

結(jié)構(gòu)型模式(7種):適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。

行為型模式(11種):策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問者模式、中介者模式、解釋器模式。

8、講講類的實例化順序,比如父類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,子類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,當(dāng)new的時候,他們的執(zhí)行順序。

父類靜態(tài)成員和靜態(tài)初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行

子類靜態(tài)成員和靜態(tài)初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行

結(jié)論:對象初始化的順序,先靜態(tài)方法,再構(gòu)造方法,每個又是先基類后子類

父類實例成員和實例初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行

父類構(gòu)造方法

子類實例成員和實例初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行

子類構(gòu)造方法

9、請你講述數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)之間各自的時間復(fù)雜度。

數(shù)組,是將元素在內(nèi)存中連續(xù)存放,由于每個元素占用內(nèi)存相同,可以通過下標(biāo)迅速訪問數(shù)組中任何元素。但是如果要在數(shù)組中增加一個元素,需要移動大量元素,在內(nèi)存中空出一個元素的空間,然后將要增加的元素放在其中。同樣的道理,如果想刪除一個元素,同樣需要移動大量元素去填掉被移動的元素。如果應(yīng)用需要快速訪問數(shù)據(jù),很少插入和刪除元素,就應(yīng)該用數(shù)組。

鏈表 中的元素在內(nèi)存中不是順序存儲的,而是通過存在元素中的指針聯(lián)系到一起,每個結(jié)點包括兩個部分:一個是存儲 數(shù)據(jù)元素 的 數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的 指針。

如果要訪問鏈表中一個元素,需要從第一個元素開始,一直找到需要的元素位置。但是增加和刪除一個元素對于鏈表數(shù)據(jù)結(jié)構(gòu)就非常簡單了,只要修改元素中的指針就可以了。如果應(yīng)用需要經(jīng)常插入和刪除元素你就需要用鏈表。

內(nèi)存存儲區(qū)別

數(shù)組從棧中分配空間, 對于程序員方便快速,但自由度小。

鏈表從堆中分配空間, 自由度大但申請管理比較麻煩。

邏輯結(jié)構(gòu)區(qū)別

數(shù)組必須事先定義固定的長度(元素個數(shù)),不能適應(yīng)數(shù)據(jù)動態(tài)地增減的情況。當(dāng)數(shù)據(jù)增加時,可能超出原先定義的元素個數(shù);當(dāng)數(shù)據(jù)減少時,造成內(nèi)存浪費。

鏈表動態(tài)地進行存儲分配,可以適應(yīng)數(shù)據(jù)動態(tài)地增減的情況,且可以方便地插入、刪除數(shù)據(jù)項。(數(shù)組中插入、刪除數(shù)據(jù)項時,需要移動其它數(shù)據(jù)項)

總結(jié)

存取方式上,數(shù)組可以順序存取或者隨機存取,而鏈表只能順序存取;

存儲位置上,數(shù)組邏輯上相鄰的元素在物理存儲位置上也相鄰,而鏈表不一定;

存儲空間上,鏈表由于帶有指針域,存儲密度不如數(shù)組大;

按序號查找時,數(shù)組可以隨機訪問,時間復(fù)雜度為O(1),而鏈表不支持隨機訪問,平均需要O(n);

按值查找時,若數(shù)組無序,數(shù)組和鏈表時間復(fù)雜度均為O(1),但是當(dāng)數(shù)組有序時,可以采用折半查找將時間復(fù)雜度降為O(logn);

插入和刪除時,數(shù)組平均需要移動n/2個元素,而鏈表只需修改指針即可;

空間分配方面:

數(shù)組在靜態(tài)存儲分配情形下,存儲元素數(shù)量受限制,動態(tài)存儲分配情形下,雖然存儲空間可以擴充,但需要移動大量元素,導(dǎo)致操作效率降低,而且如果內(nèi)存中沒有更大塊連續(xù)存儲空間將導(dǎo)致分配失敗;

鏈表存儲的節(jié)點空間只在需要的時候申請分配,只要內(nèi)存中有空間就可以分配,操作比較靈活高效;

以上就是深圳達內(nèi)教育java培訓(xùn)機構(gòu)的小編針對“java后臺開發(fā)筆試題匯總”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

Java筆試題

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹防上當(dāng)。