更新時(shí)間:2020-06-22 13:26:42 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽4492次
java筆試題是大家比較關(guān)心的問(wèn)題,因?yàn)樵谡夜ぷ鞯臅r(shí)候,都會(huì)有java筆試題的測(cè)試,這直接影響面試結(jié)果,動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編為大家準(zhǔn)備了java后臺(tái)開發(fā)筆試題匯總,有需要的小伙伴可以看一看。
輕量:Spring是輕量的,基本的版本大約2MB
控制反轉(zhuǎn)(IOC):Spring通過(guò)控制反轉(zhuǎn)實(shí)現(xiàn)類松散耦合,對(duì)象們給出它們的依賴,而不是創(chuàng)建或查找依賴的對(duì)象們。
面向切面的編程(AOP):Spring支持面向切面的編程,并且把業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分開。
容器:spring包含并管理應(yīng)用中對(duì)象的生命周期和配置。
MVC框架:Spring的WEB框架是個(gè)精心設(shè)計(jì)的框架,是Web框架的一個(gè)很好的替代品。
事務(wù)管理:Spring提供一個(gè)持續(xù)的事務(wù)管理接口,可以擴(kuò)展到上至本地事務(wù)下至全局事務(wù)。
異常處理:Spring提供方便的API把具體技術(shù)相關(guān)的異常轉(zhuǎn)換為一致的unchecked異常。
Java工廠是在工廠中修改,在工廠中修改就要重修編譯工廠類,重新編譯的話就要先停了JVM再重新啟動(dòng)。
Spring IOC是熱插拔的,在XML中直接修改,修改xmlspring就會(huì)立即發(fā)現(xiàn)你改動(dòng)了XML,會(huì)再重新讀一遍XML,就會(huì)發(fā)現(xiàn)新改動(dòng)了,根本不用重新啟動(dòng)JVM。
ORM對(duì)象關(guān)系映射關(guān)系,面向?qū)ο蟮膶?duì)象模型和關(guān)系型數(shù)據(jù)之間的相互轉(zhuǎn)換。
Hibernate和Mybatis都是常用的ORM框架,兩者區(qū)別:
(1)mybatis手寫SQL,而hibernate提供映射機(jī)制,開發(fā)人員無(wú)需擔(dān)心。
(2)mybatis控制更細(xì)粒度,但可移植型差,hibernate開發(fā)DAO很簡(jiǎn)單,可移植性好。
(3)hibernate擁有完整的日志系統(tǒng),mybatis則欠缺一些
(4) mybatis相比hibernate需要關(guān)心很多細(xì)節(jié)
(5)sql直接優(yōu)化上,mybatis要比hibernate方便很多
(1)事務(wù)的四大特性:
原子性(Atomicity):事務(wù)包含的所有操作要么全部成功,要么全部失敗回滾。
一致性(Consistency):一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。
隔離性(Isolation):當(dāng)多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)時(shí),比如操作同一張表時(shí),數(shù)據(jù)庫(kù)為每一個(gè)用戶開啟的事務(wù),不能被其他事務(wù)的操作所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離。
持久性(Durability):一個(gè)事務(wù)一旦被提交了,那么對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的改變就是永久性的,即便是在數(shù)據(jù)庫(kù)系統(tǒng)遇到故障的情況下也不會(huì)丟失提交事務(wù)的操作。
(2)事務(wù)隔離:
更新丟失:兩事務(wù)同時(shí)更新,一個(gè)失敗回滾覆蓋另一個(gè)事務(wù)的更新。
臟讀:事務(wù)T1讀取到事務(wù)T2修改了但是還未提交的數(shù)據(jù),之后事務(wù)T2又回滾其更新操作,導(dǎo)致事務(wù)T1讀到的是臟數(shù)據(jù)。
不可重復(fù)讀:事務(wù)T1讀取某個(gè)數(shù)據(jù)后,事務(wù)T2對(duì)其做了修改,當(dāng)事務(wù)T1再次讀該數(shù)據(jù)時(shí)得到與前一次不同的值。
虛讀(幻讀):事務(wù)T1讀取在讀取某范圍數(shù)據(jù)時(shí),事務(wù)T2又插入一條數(shù)據(jù),當(dāng)事務(wù)T1再次數(shù)據(jù)這個(gè)范圍數(shù)據(jù)時(shí)發(fā)現(xiàn)不一樣了,出現(xiàn)了一些“幻影行”。
不可重復(fù)讀和臟讀的區(qū)別:臟讀是某一事務(wù)讀取了另一個(gè)事務(wù)未提交的臟數(shù)據(jù),而不可重復(fù)讀則是讀取了前一事務(wù)提交的數(shù)據(jù)。
幻讀和不可重復(fù)讀的異同:都是讀取了另一條已經(jīng)提交的事務(wù)(這點(diǎn)就臟讀不同),所不同的是不可重復(fù)讀查詢的都是同一個(gè)數(shù)據(jù)項(xiàng),而幻讀針對(duì)的是一批數(shù)據(jù)整體(比如數(shù)據(jù)的個(gè)數(shù))。
(3)事務(wù)隔離的級(jí)別:
讀未提交(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ù)只能一個(gè)接著一個(gè)地執(zhí)行,但不能并發(fā)執(zhí)行。如果僅僅通過(guò)“行級(jí)鎖”是無(wú)法實(shí)現(xiàn)事務(wù)序列化的,必須通過(guò)其他機(jī)制保證新插入的數(shù)據(jù)不會(huì)被剛執(zhí)行查詢操作的事務(wù)訪問(wèn)到。
橫向分割或者縱向分割。
不太嚴(yán)格的將,對(duì)于海量數(shù)據(jù)的數(shù)據(jù)庫(kù),如果是因?yàn)楸矶喽鴶?shù)據(jù)多,這時(shí)候適合垂直切分,即把關(guān)系緊密的(比如同一模塊)的表切分出來(lái)出來(lái)放在一個(gè)servlet上。如果對(duì)于表并不多,但每張表的數(shù)據(jù)非常多,這時(shí)候就適合水平切分,即把表的數(shù)據(jù)按某種規(guī)則切分到對(duì)個(gè)數(shù)據(jù)庫(kù)(server)上。
可以橫向分割,把表分割成多個(gè)表然后分布式存儲(chǔ)。
(1)系統(tǒng)調(diào)用是為了方便應(yīng)用使用操作系統(tǒng)的接口,而庫(kù)函數(shù)是為了方便入門編寫應(yīng)用程序而引出的,比如自己編寫一個(gè)函數(shù)其實(shí)也可以說(shuō)是一個(gè)庫(kù)函數(shù)。
(2)系統(tǒng)調(diào)用可以理解為內(nèi)核提供給我們?cè)谟脩魬B(tài)的接口函數(shù),可以認(rèn)為是某種內(nèi)核的庫(kù)函數(shù)。
(3)read()函數(shù)是系統(tǒng)調(diào)用,而fread()函數(shù)是C標(biāo)準(zhǔn)庫(kù)函數(shù)。
創(chuàng)建型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。
結(jié)構(gòu)型模式(7種):適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。
行為型模式(11種):策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問(wèn)者模式、中介者模式、解釋器模式。
父類靜態(tài)成員和靜態(tài)初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行
子類靜態(tài)成員和靜態(tài)初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行
結(jié)論:對(duì)象初始化的順序,先靜態(tài)方法,再構(gòu)造方法,每個(gè)又是先基類后子類
父類實(shí)例成員和實(shí)例初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行
父類構(gòu)造方法
子類實(shí)例成員和實(shí)例初始化塊 ,按在代碼中出現(xiàn)的順序依次執(zhí)行
子類構(gòu)造方法
數(shù)組,是將元素在內(nèi)存中連續(xù)存放,由于每個(gè)元素占用內(nèi)存相同,可以通過(guò)下標(biāo)迅速訪問(wèn)數(shù)組中任何元素。但是如果要在數(shù)組中增加一個(gè)元素,需要移動(dòng)大量元素,在內(nèi)存中空出一個(gè)元素的空間,然后將要增加的元素放在其中。同樣的道理,如果想刪除一個(gè)元素,同樣需要移動(dòng)大量元素去填掉被移動(dòng)的元素。如果應(yīng)用需要快速訪問(wèn)數(shù)據(jù),很少插入和刪除元素,就應(yīng)該用數(shù)組。
鏈表 中的元素在內(nèi)存中不是順序存儲(chǔ)的,而是通過(guò)存在元素中的指針聯(lián)系到一起,每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ) 數(shù)據(jù)元素 的 數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的 指針。
如果要訪問(wèn)鏈表中一個(gè)元素,需要從第一個(gè)元素開始,一直找到需要的元素位置。但是增加和刪除一個(gè)元素對(duì)于鏈表數(shù)據(jù)結(jié)構(gòu)就非常簡(jiǎn)單了,只要修改元素中的指針就可以了。如果應(yīng)用需要經(jīng)常插入和刪除元素你就需要用鏈表。
內(nèi)存存儲(chǔ)區(qū)別
數(shù)組從棧中分配空間, 對(duì)于程序員方便快速,但自由度小。
鏈表從堆中分配空間, 自由度大但申請(qǐng)管理比較麻煩。
邏輯結(jié)構(gòu)區(qū)別
數(shù)組必須事先定義固定的長(zhǎng)度(元素個(gè)數(shù)),不能適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況。當(dāng)數(shù)據(jù)增加時(shí),可能超出原先定義的元素個(gè)數(shù);當(dāng)數(shù)據(jù)減少時(shí),造成內(nèi)存浪費(fèi)。
鏈表動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配,可以適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況,且可以方便地插入、刪除數(shù)據(jù)項(xiàng)。(數(shù)組中插入、刪除數(shù)據(jù)項(xiàng)時(shí),需要移動(dòng)其它數(shù)據(jù)項(xiàng))
總結(jié)
存取方式上,數(shù)組可以順序存取或者隨機(jī)存取,而鏈表只能順序存取;
存儲(chǔ)位置上,數(shù)組邏輯上相鄰的元素在物理存儲(chǔ)位置上也相鄰,而鏈表不一定;
存儲(chǔ)空間上,鏈表由于帶有指針域,存儲(chǔ)密度不如數(shù)組大;
按序號(hào)查找時(shí),數(shù)組可以隨機(jī)訪問(wèn),時(shí)間復(fù)雜度為O(1),而鏈表不支持隨機(jī)訪問(wèn),平均需要O(n);
按值查找時(shí),若數(shù)組無(wú)序,數(shù)組和鏈表時(shí)間復(fù)雜度均為O(1),但是當(dāng)數(shù)組有序時(shí),可以采用折半查找將時(shí)間復(fù)雜度降為O(logn);
插入和刪除時(shí),數(shù)組平均需要移動(dòng)n/2個(gè)元素,而鏈表只需修改指針即可;
空間分配方面:
數(shù)組在靜態(tài)存儲(chǔ)分配情形下,存儲(chǔ)元素?cái)?shù)量受限制,動(dòng)態(tài)存儲(chǔ)分配情形下,雖然存儲(chǔ)空間可以擴(kuò)充,但需要移動(dòng)大量元素,導(dǎo)致操作效率降低,而且如果內(nèi)存中沒(méi)有更大塊連續(xù)存儲(chǔ)空間將導(dǎo)致分配失敗;
鏈表存儲(chǔ)的節(jié)點(diǎn)空間只在需要的時(shí)候申請(qǐng)分配,只要內(nèi)存中有空間就可以分配,操作比較靈活高效;
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“java后臺(tái)開發(fā)筆試題匯總”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743