發(fā)布時(shí)間:2024-01-24閱讀(22)
JAVA中的幾種基本類型,各占用多少字節(jié)?

下圖單位是bit,非字節(jié) 1B=8bit

String能被繼承嗎?為什么?
不可以,因?yàn)镾tring類有final修飾符,而final修飾的類是不能被繼承的,實(shí)現(xiàn)細(xì)節(jié)不允許改變。平常我們定義的String str=”a”;其實(shí)和String str=new String(“a”)還是有差異的。
前者默認(rèn)調(diào)用的是String.valueOf來返回String實(shí)例對(duì)象,至于調(diào)用哪個(gè)則取決于你的賦值,比如String num=1,調(diào)用的是
public static String valueOf(int i) {
return Integer.toString(i);
}
后者則是調(diào)用如下部分:
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
最后我們的變量都存儲(chǔ)在一個(gè)char數(shù)組中
private final char value[];
也為大家推薦了技術(shù)教程:
Java8零基礎(chǔ)入門https://edu.csdn.net/course/detail/3044?utm_source=ttxk
Drools7規(guī)則引擎入門教程https://edu.csdn.net/course/detail/5523?utm_source=ttxk
Spring Boot開發(fā)小而美的個(gè)人博客https://edu.csdn.net/course/detail/6359?utm_source=ttxk
探究Linux的總線、設(shè)備、驅(qū)動(dòng)模型https://edu.csdn.net/course/detail/5329?utm_source=ttxk
軟件測(cè)試入門到精通https://edu.csdn.net/course/detail/8729?utm_source=ttxk
Spring Boot 入門https://edu.csdn.net/course/detail/9068?utm_source=ttxk
Java多線程 網(wǎng)銀取款案例精講https://edu.csdn.net/course/detail/8973?utm_source=ttxk
String, StringBuffer, StringBuilder 的區(qū)別。
String 字符串常量(final修飾,不可被繼承),String是常量,當(dāng)創(chuàng)建之后即不能更改。(可以通過StringBuffer和StringBuilder創(chuàng)建String對(duì)象(常用的兩個(gè)字符串操作類)。)
StringBuffer 字符串變量(線程安全),其也是final類別的,不允許被繼承,其中的絕大多數(shù)方法都進(jìn)行了同步處理,包括常用的Append方法也做了同步處理(synchronized修飾)。其自jdk1.0起就已經(jīng)出現(xiàn)。其toString方法會(huì)進(jìn)行對(duì)象緩存,以減少元素復(fù)制開銷。
public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
return new String(toStringCache, true);
}
StringBuilder 字符串變量(非線程安全)其自jdk1.5起開始出現(xiàn)。與StringBuffer一樣都繼承和實(shí)現(xiàn)了同樣的接口和類,方法除了沒使用synch修飾以外基本一致,不同之處在于最后toString的時(shí)候,會(huì)直接返回一個(gè)新對(duì)象。
public String toString() {
// Create a copy, don’t share the array
return new String(value, 0, count);
}
ArrayList 和 LinkedList 有什么區(qū)別。
ArrayList和LinkedList都實(shí)現(xiàn)了List接口,有以下的不同點(diǎn):
1、ArrayList是基于索引的數(shù)據(jù)接口,它的底層是數(shù)組。它可以以O(shè)(1)時(shí)間復(fù)雜度對(duì)元素進(jìn)行隨機(jī)訪問。與此對(duì)應(yīng),LinkedList是以元素列表的形式存儲(chǔ)它的數(shù)據(jù),每一個(gè)元素都和它的前一個(gè)和后一個(gè)元素鏈接在一起,在這種情況下,查找某個(gè)元素的時(shí)間復(fù)雜度是O(n)。
2、相對(duì)于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因?yàn)楫?dāng)元素被添加到集合任意位置的時(shí)候,不需要像數(shù)組那樣重新計(jì)算大小或者是更新索引。
3、LinkedList比ArrayList更占內(nèi)存,因?yàn)長(zhǎng)inkedList為每一個(gè)節(jié)點(diǎn)存儲(chǔ)了兩個(gè)引用,一個(gè)指向前一個(gè)元素,一個(gè)指向下一個(gè)元素。
講講類的實(shí)例化順序,比如父類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,子類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,當(dāng) new 的時(shí)候, 他們的執(zhí)行順序。
此題考察的是類加載器實(shí)例化時(shí)進(jìn)行的操作步驟(加載–>連接->初始化)。
父類靜態(tài)代變量、
父類靜態(tài)代碼塊、
子類靜態(tài)變量、
子類靜態(tài)代碼塊、
父類非靜態(tài)變量(父類實(shí)例成員變量)、
父類構(gòu)造函數(shù)、
子類非靜態(tài)變量(子類實(shí)例成員變量)、
子類構(gòu)造函數(shù)。
測(cè)試demo:http://blog.csdn.net/u014042066/article/details/77574956
參閱我的博客《深入理解類加載》:http://blog.csdn.net/u014042066/article/details/77394480
用過哪些 Map 類,都有什么區(qū)別,HashMap 是線程安全的嗎,并發(fā)下使用的 Map 是什么,他們內(nèi)部原理分別是什么,比如存儲(chǔ)方式, hashcode,擴(kuò)容, 默認(rèn)容量等。
hashMap是線程不安全的,HashMap是數(shù)組 鏈表 紅黑樹(JDK1.8增加了紅黑樹部分)實(shí)現(xiàn)的,采用哈希表來存儲(chǔ)的,
參照該鏈接:https://zhuanlan.zhihu.com/p/21673805
JAVA8 的 ConcurrentHashMap 為什么放棄了分段鎖,有什么問題嗎,如果你來設(shè)計(jì),你如何設(shè)計(jì)。
參照:https://yq.aliyun.com/articles/36781
有沒有有順序的 Map 實(shí)現(xiàn)類, 如果有, 他們是怎么保證有序的。
TreeMap和LinkedHashMap是有序的(TreeMap默認(rèn)升序,LinkedHashMap則記錄了插入順序)。
參照:http://uule.iteye.com/blog/1522291
抽象類和接口的區(qū)別,類可以繼承多個(gè)類么,接口可以繼承多個(gè)接口么,類可以實(shí)現(xiàn)多個(gè)接口么。
1、抽象類和接口都不能直接實(shí)例化,如果要實(shí)例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對(duì)象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對(duì)象。
2、抽象類要被子類繼承,接口要被類實(shí)現(xiàn)。
3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實(shí)現(xiàn)
4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。
5、抽象類里的抽象方法必須全部被子類所實(shí)現(xiàn),如果子類不能全部實(shí)現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如不能全部實(shí)現(xiàn)接口方法,那么該類也只能為抽象類。
6、抽象方法只能申明,不能實(shí)現(xiàn)。abstract void abc();不能寫成abstract void abc(){}。
7、抽象類里可以沒有抽象方法
8、如果一個(gè)類里有抽象方法,那么這個(gè)類只能是抽象類
9、抽象方法要被實(shí)現(xiàn),所以不能是靜態(tài)的,也不能是私有的。
10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。
繼承和聚合的區(qū)別在哪。
繼承指的是一個(gè)類(稱為子類、子接口)繼承另外的一個(gè)類(稱為父類、父接口)的功能,并可以增加它自己的新功能的能力,繼承是類與類或者接口與接口之間最常見的關(guān)系;在Java中此類關(guān)系通過關(guān)鍵字extends明確標(biāo)識(shí),在設(shè)計(jì)時(shí)一般沒有爭(zhēng)議性;

聚合是關(guān)聯(lián)關(guān)系的一種特例,他體現(xiàn)的是整體與部分、擁有的關(guān)系,即has-a的關(guān)系,此時(shí)整體與部分之間是可分離的,他們可以具有各自的生命周期,部分可以屬于多個(gè)整體對(duì)象,也可以為多個(gè)整體對(duì)象共享;比如計(jì)算機(jī)與CPU、公司與員工的關(guān)系等;表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語義級(jí)別來區(qū)分;

參考:http://www.cnblogs.com/jiqing9006/p/5915023.html
講講你理解的 nio和 bio 的區(qū)別是啥,談?wù)?reactor 模型。
IO是面向流的,NIO是面向緩沖區(qū)的
參考:https://zhuanlan.zhihu.com/p/23488863
http://developer.51cto.com/art/201103/252367.htm
http://www.jianshu.com/p/3f703d3d804c
反射的原理,反射創(chuàng)建類實(shí)例的三種方式是什么
參照:http://www.jianshu.com/p/3ea4a6b57f87?amp
http://blog.csdn.net/yongjian1092/article/details/7364451
反射中,Class.forName 和 ClassLoader 區(qū)別。
https://my.oschina.net/gpzhang/blog/486743
描述動(dòng)態(tài)代理的幾種實(shí)現(xiàn)方式,分別說出相應(yīng)的優(yōu)缺點(diǎn)。
Jdk cglib jdk底層是利用反射機(jī)制,需要基于接口方式,這是由于
Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(), this);
Cglib則是基于asm框架,實(shí)現(xiàn)了無反射機(jī)制進(jìn)行代理,利用空間來換取了時(shí)間,代理效率高于jdk
http://lrd.ele.me/2017/01/09/dynamic_proxy/
動(dòng)態(tài)代理與 cglib 實(shí)現(xiàn)的區(qū)別
同上(基于invocationHandler和methodInterceptor)
為什么 CGlib 方式可以對(duì)接口實(shí)現(xiàn)代理。
同上
final 的用途
類、變量、方法
http://www.importnew.com/7553.html
寫出三種單例模式實(shí)現(xiàn)。
懶漢式單例,餓漢式單例,雙重檢查等
參考:https://my.oschina.net/dyyweb/blog/609021
如何在父類中為子類自動(dòng)完成所有的 hashcode 和 equals 實(shí)現(xiàn)?這么做有何優(yōu)劣。
同時(shí)復(fù)寫hashcode和equals方法,優(yōu)勢(shì)可以添加自定義邏輯,且不必調(diào)用超類的實(shí)現(xiàn)。
參照:http://java-min.iteye.com/blog/1416727
請(qǐng)結(jié)合 OO 設(shè)計(jì)理念,談?wù)勗L問修飾符 public、private、protected、default 在應(yīng)用設(shè)計(jì)中的作用。
訪問修飾符,主要標(biāo)示修飾塊的作用域,方便隔離防護(hù)
同一個(gè)類 同一個(gè)包 不同包的子類 不同包的非子類
Private √
Default √ √
Protected √ √ √
Public √ √ √ √
public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不
僅可以跨類訪問,而且允許跨包(package)訪問。
private: Java語言中對(duì)訪問權(quán)限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的類、屬性以
及方法只能被該類的對(duì)象訪問,其子類不能訪問,更不能允許跨包訪問。
protect: 介于public 和 private 之間的一種訪問修飾符,一般稱之為“保護(hù)形”。被其修飾的類、
屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
default:即不加任何訪問修飾符,通常稱為“默認(rèn)訪問模式“。該模式下,只允許在同一個(gè)包中進(jìn)行訪
問。
深拷貝和淺拷貝區(qū)別。
http://www.oschina.net/translate/java-copy-shallow-vs-deep-in-which-you-will-swim
數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)描述,各自的時(shí)間復(fù)雜度
http://blog.csdn.net/snow_wu/article/details/53172721
error 和 exception 的區(qū)別,CheckedException,RuntimeException 的區(qū)別
http://blog.csdn.net/woshixuye/article/details/8230407
請(qǐng)列出 5 個(gè)運(yùn)行時(shí)異常。
同上
在自己的代碼中,如果創(chuàng)建一個(gè) java.lang.String 對(duì)象,這個(gè)對(duì)象是否可以被類加載器加載?為什么
類加載無須等到“首次使用該類”時(shí)加載,JVM允許預(yù)加載某些類。。。。
http://www.cnblogs.com/jasonstorm/p/5663864.html
說一說你對(duì) java.lang.Object 對(duì)象中 hashCode 和 equals 方法的理解。在什么場(chǎng)景下需要重新實(shí)現(xiàn)這兩個(gè)方法。
參考上邊試題
在 jdk1.5 中,引入了泛型,泛型的存在是用來解決什么問題。
泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù),泛型的好處是在編譯的時(shí)候檢查類型安全,并且所有的強(qiáng)制轉(zhuǎn)換都是自動(dòng)和隱式的,以提高代碼的重用率
http://baike.baidu.com/item/java泛型
這樣的 a.hashcode() 有什么用,與 a.equals(b)有什么關(guān)系。
hashcode
hashcode()方法提供了對(duì)象的hashCode值,是一個(gè)native方法,返回的默認(rèn)值與System.identityHashCode(obj)一致。
通常這個(gè)值是對(duì)象頭部的一部分二進(jìn)制位組成的數(shù)字,具有一定的標(biāo)識(shí)對(duì)象的意義存在,但絕不定于地址。
作用是:用一個(gè)數(shù)字來標(biāo)識(shí)對(duì)象。比如在HashMap、HashSet等類似的集合類中,如果用某個(gè)對(duì)象本身作為Key,即要基于這個(gè)對(duì)象實(shí)現(xiàn)Hash的寫入和查找,那么對(duì)象本身如何實(shí)現(xiàn)這個(gè)呢?就是基于hashcode這樣一個(gè)數(shù)字來完成的,只有數(shù)字才能完成計(jì)算和對(duì)比操作。
hashcode是否唯一
hashcode只能說是標(biāo)識(shí)對(duì)象,在hash算法中可以將對(duì)象相對(duì)離散開,這樣就可以在查找數(shù)據(jù)的時(shí)候根據(jù)這個(gè)key快速縮小數(shù)據(jù)的范圍,但hashcode不一定是唯一的,所以hash算法中定位到具體的鏈表后,需要循環(huán)鏈表,然后通過equals方法來對(duì)比Key是否是一樣的。
equals與hashcode的關(guān)系
equals相等兩個(gè)對(duì)象,則hashcode一定要相等。但是hashcode相等的兩個(gè)對(duì)象不一定equals相等。
https://segmentfault.com/a/1190000004520827
有沒有可能 2 個(gè)不相等的對(duì)象有相同的 hashcode。
有
Java 中的 HashSet 內(nèi)部是如何工作的。
底層是基于hashmap實(shí)現(xiàn)的
http://wiki.jikexueyuan.com/project/java-collection/hashset.html
什么是序列化,怎么序列化,為什么序列化,反序列化會(huì)遇到什么問題,如何解決。
http://www.importnew.com/17964.html
JVM 知識(shí)什么情況下會(huì)發(fā)生棧內(nèi)存溢出。
如果線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的深度,將拋出StackOverflowError異常。 如果虛擬機(jī)在動(dòng)態(tài)擴(kuò)展棧時(shí)無法申請(qǐng)到足夠的內(nèi)存空間,則拋出OutOfMemoryError異常。
參照:http://wiki.jikexueyuan.com/project/java-vm/storage.html
JVM 的內(nèi)存結(jié)構(gòu),Eden 和 Survivor 比例。

eden 和 survior 是按8比1分配的
http://blog.csdn.net/lojze_ly/article/details/49456255
jvm 中一次完整的 GC 流程是怎樣的,對(duì)象如何晉升到老年代,說說你知道的幾種主要的jvm 參數(shù)。
對(duì)象誕生即新生代->eden,在進(jìn)行minor gc過程中,如果依舊存活,移動(dòng)到from,變成Survivor,進(jìn)行標(biāo)記代數(shù),如此檢查一定次數(shù)后,晉升為老年代,
http://www.cnblogs.com/redcreen/archive/2011/05/04/2037056.html
http://ifeve.com/useful-jvm-flags/
https://wangkang007.gitbooks.io/jvm/content/jvmcan_shu_xiang_jie.html
你知道哪幾種垃圾收集器,各自的優(yōu)缺點(diǎn),重點(diǎn)講下 cms,包括原理,流程,優(yōu)缺點(diǎn)
Serial、parNew、ParallelScavenge、SerialOld、ParallelOld、CMS、G1
https://wangkang007.gitbooks.io/jvm/content/chapter1.html
垃圾回收算法的實(shí)現(xiàn)原理。
http://www.importnew.com/13493.html
當(dāng)出現(xiàn)了內(nèi)存溢出,你怎么排錯(cuò)。
首先分析是什么類型的內(nèi)存溢出,對(duì)應(yīng)的調(diào)整參數(shù)或者優(yōu)化代碼。
https://wangkang007.gitbooks.io/jvm/content/4jvmdiao_you.html
JVM 內(nèi)存模型的相關(guān)知識(shí)了解多少,比如重排序,內(nèi)存屏障,happen-before,主內(nèi)存,工作內(nèi)存等。
內(nèi)存屏障:為了保障執(zhí)行順序和可見性的一條cpu指令
重排序:為了提高性能,編譯器和處理器會(huì)對(duì)執(zhí)行進(jìn)行重拍
happen-before:操作間執(zhí)行的順序關(guān)系。有些操作先發(fā)生。
主內(nèi)存:共享變量存儲(chǔ)的區(qū)域即是主內(nèi)存
工作內(nèi)存:每個(gè)線程copy的本地內(nèi)存,存儲(chǔ)了該線程以讀/寫共享變量的副本
http://ifeve.com/java-memory-model-1/
http://www.jianshu.com/p/d3fda02d4cae
http://blog.csdn.net/kenzyq/article/details/50918457
簡(jiǎn)單說說你了解的類加載器。
類加載器的分類(bootstrap,ext,app,curstom),類加載的流程(load-link-init)
http://blog.csdn.net/gjanyanlig/article/details/6818655/
講講 JAVA 的反射機(jī)制。
Java程序在運(yùn)行狀態(tài)可以動(dòng)態(tài)的獲取類的所有屬性和方法,并實(shí)例化該類,調(diào)用方法的功能
http://baike.baidu.com/link?url=C7p1PeLa3ploAgkfAOK-4XHE8HzQuOAB7K5GPcK_zpbAa_Aw-nO3997K1oir8N–1_wxXZfOThFrEcA0LjVP6wNOwidVTkLBzKlQVK6JvXYvVNhDWV9yF-NIOebtg1hwsnagsjUhOE2wxmiup20RRa#7
你們線上應(yīng)用的 JVM 參數(shù)有哪些。
-server
Xms6000M
-Xmx6000M
-Xmn500M
-XX:PermSize=500M
-XX:MaxPermSize=500M
-XX:SurvivorRatio=65536
-XX:MaxTenuringThreshold=0
-Xnoclassgc
-XX: DisableExplicitGC
-XX: UseParNewGC
-XX: UseConcMarkSweepGC
-XX: UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX: CMSClassUnloadingEnabled
-XX:-CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=90
-XX:SoftRefLRUPolicyMSPerMB=0
-XX: PrintClassHistogram
-XX: PrintGCDetails
-XX: PrintGCTimeStamps
-XX: PrintHeapAtGC
-Xloggc:log/gc.log
g1 和 cms 區(qū)別,吞吐量?jī)?yōu)先和響應(yīng)優(yōu)先的垃圾收集器選擇。
Cms是以獲取最短回收停頓時(shí)間為目標(biāo)的收集器。基于標(biāo)記-清除算法實(shí)現(xiàn)。比較占用cpu資源,切易造成碎片。
G1是面向服務(wù)端的垃圾收集器,是jdk9默認(rèn)的收集器,基于標(biāo)記-整理算法實(shí)現(xiàn)。可利用多核、多cpu,保留分代,實(shí)現(xiàn)可預(yù)測(cè)停頓,可控。
http://blog.csdn.net/linhu007/article/details/48897597
請(qǐng)解釋如下 jvm 參數(shù)的含義:
-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20
XX:CMSInitiatingOccupancyFraction=80 -XX: UseCMSInitiatingOccupancyOnly。
Server模式啟動(dòng)
最小堆內(nèi)存512m
最大512m
每個(gè)線程棧空間1m
永久代256
最大永久代256
最大轉(zhuǎn)為老年代檢查次數(shù)20
Cms回收開啟時(shí)機(jī):內(nèi)存占用80%
命令JVM不基于運(yùn)行時(shí)收集的數(shù)據(jù)來啟動(dòng)CMS垃圾收集周期
開源框架知識(shí)簡(jiǎn)單講講 tomcat 結(jié)構(gòu),以及其類加載器流程。
Server- –多個(gè)service
Container級(jí)別的:–>engine–》host–>context
Listenter
Connector
Logging、Naming、Session、JMX等等

通過WebappClassLoader 加載class
http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/
http://blog.csdn.net/dc_726/article/details/11873343
http://www.cnblogs.com/xing901022/p/4574961.html
http://www.jianshu.com/p/62ec977996df
tomcat 如何調(diào)優(yōu),涉及哪些參數(shù)。
硬件上選擇,操作系統(tǒng)選擇,版本選擇,jdk選擇,配置jvm參數(shù),配置connector的線程數(shù)量,開啟gzip壓縮,trimSpaces,集群等
http://blog.csdn.net/lifetragedy/article/details/7708724
講講 Spring 加載流程。
通過listener入口,核心是在AbstractApplicationContext的refresh方法,在此處進(jìn)行裝載bean工廠,bean,創(chuàng)建bean實(shí)例,攔截器,后置處理器等。
https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/
講講 Spring 事務(wù)的傳播屬性。
七種傳播屬性。
事務(wù)傳播行為
所謂事務(wù)的傳播行為是指,如果在開始當(dāng)前事務(wù)之前,一個(gè)事務(wù)上下文已經(jīng)存在,此時(shí)有若干選項(xiàng)可以指定一個(gè)事務(wù)性方法的執(zhí)行行為。在TransactionDefinition定義中包括了如下幾個(gè)表示傳播行為的常量:
TransactionDefinition.PROPAGATION_REQUIRED:如果當(dāng)前存在事務(wù),則加入該事務(wù);如果當(dāng)前沒有事務(wù),則創(chuàng)建一個(gè)新的事務(wù)。
TransactionDefinition.PROPAGATION_REQUIRES_NEW:創(chuàng)建一個(gè)新的事務(wù),如果當(dāng)前存在事務(wù),則把當(dāng)前事務(wù)掛起。
TransactionDefinition.PROPAGATION_SUPPORTS:如果當(dāng)前存在事務(wù),則加入該事務(wù);如果當(dāng)前沒有事務(wù),則以非事務(wù)的方式繼續(xù)運(yùn)行。
TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事務(wù)方式運(yùn)行,如果當(dāng)前存在事務(wù),則把當(dāng)前事務(wù)掛起。
TransactionDefinition.PROPAGATION_NEVER:以非事務(wù)方式運(yùn)行,如果當(dāng)前存在事務(wù),則拋出異常。
TransactionDefinition.PROPAGATION_MANDATORY:如果當(dāng)前存在事務(wù),則加入該事務(wù);如果當(dāng)前沒有事務(wù),則拋出異常。
TransactionDefinition.PROPAGATION_NESTED:如果當(dāng)前存在事務(wù),則創(chuàng)建一個(gè)事務(wù)作為當(dāng)前事務(wù)的嵌套事務(wù)來運(yùn)行;如果當(dāng)前沒有事務(wù),則該取值等價(jià)于TransactionDefinition.PROPAGATION_REQUIRED。
https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/
Spring 如何管理事務(wù)的。
編程式和聲明式
同上
Spring 怎么配置事務(wù)(具體說出一些關(guān)鍵的 xml 元素)。
說說你對(duì) Spring 的理解,非單例注入的原理?它的生命周期?循環(huán)注入的原理, aop 的實(shí)現(xiàn)原理,說說 aop 中的幾個(gè)術(shù)語,它們是怎么相互工作的。
核心組件:bean,context,core,單例注入是通過單例beanFactory進(jìn)行創(chuàng)建,生命周期是在創(chuàng)建的時(shí)候通過接口實(shí)現(xiàn)開啟,循環(huán)注入是通過后置處理器,aop其實(shí)就是通過反射進(jìn)行動(dòng)態(tài)代理,pointcut,advice等。
Aop相關(guān):http://blog.csdn.net/csh624366188/article/details/7651702/
Springmvc 中 DispatcherServlet 初始化過程。
入口是web.xml中配置的ds,ds繼承了HttpServletBean,F(xiàn)rameworkServlet,通過其中的init方法進(jìn)行初始化裝載bean和實(shí)例,initServletBean是實(shí)際完成上下文工作和bean初始化的方法。
http://www.mamicode.com/info-detail-512105.html
彩蛋:需要相關(guān)課程資源推薦可以留言~
歡迎分享轉(zhuǎn)載→http://m.avcorse.com/read-228638.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號(hào)-5 TXT地圖HTML地圖XML地圖