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