線程生命週期html
一、新建狀態(New):新建立了一個線程對象。 java
二、就緒狀態(Runnable):線程對象建立後,其餘線程調用了該對象的start()方法。該狀態的線程位於可運行線程池中,變得可運行,等待獲取CPU的使用權。算法
三、運行狀態(Running):就緒狀態的線程獲取了CPU,執行程序代碼。 spring
四、阻塞狀態(Blocked):阻塞狀態是線程由於某種緣由放棄CPU使用權,暫時中止運行。直到線程進入就緒狀態,纔有機會轉到運行狀態。阻塞的狀況分三種: sql
(一)、等待阻塞:運行的線程執行wait()方法,JVM會把該線程放入等待池中。(wait會釋放持有的鎖) 數據庫
(二)、同步阻塞:運行的線程在獲取對象的同步鎖時,若該同步鎖被別的線程佔用,則JVM會把該線程放入鎖池中。 設計模式
(三)、其餘阻塞:運行的線程執行sleep()或join()方法,或者發出了I/O請求時,JVM會把該線程置爲阻塞狀態。當sleep()狀態超時、join()等待線程終止或者超時、或者I/O處理完畢時,線程從新轉入就緒狀態。(注意,sleep是不會釋放持有的鎖) 五、死亡狀態(Dead):線程執行完了或者因異常退出了run()方法,該線程結束生命週期。 數組
wait()釋放鎖,sleep()不釋放鎖安全
Java有沒有goto?有,是個關鍵字,沒啓用
bash
&;和&&的區別? 按位與 ;邏輯與
Math.round(),四捨五入,無論正數負數,想象有1個橫軸,只要恰好一半或者過半就等於右邊那個數
switch 是否能做用在byte 上,是否能做用在long 上,是否能做用在String上?
能做用在char,byte,short,int 及其對應的包裝類型,還有String,enum
數組有沒有length()方法?String有沒有length()方法?數組有length屬性,String有方法
兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?
不對,要看equals()是否被重寫
當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞?
值傳遞,這個值就是對象的地址
String和StringBuilder、StringBuffer的區別?
String:適用於少許的字符串操做的狀況 StringBuilder:適用於單線程下在字符緩衝區進行大量操做的狀況 StringBuffer:適用多線程下在字符緩衝區進行大量操做的狀況 StringBuilder線程不安全是由於它有不少方法沒有使用synchronized關鍵字
描述一下JVM加載class文件的原理機制?
1.裝載:查找和導入class文件;
2.鏈接:
(1)檢查:檢查載入的class文件數據的正確性;
(2)準備:爲類的靜態變量分配存儲空間;
(3)解析:將符號引用轉換成直接引用(這一步是可選的)
3.初始化:初始化靜態變量,靜態代碼塊。
char 型變量中能不能存貯一箇中文漢字,爲何?
char標識的變量就是用來表示unicode編碼的字符的,unicode表示的字符佔2個字節,因此char也是2個字節,0~65535,unicode編碼的字符是包含部分文字的
靜態嵌套類(Static Nested Class)和內部類(Inner Class)的不一樣?
Static Nested Class是被聲明爲靜態(static)的內部類,它能夠不依賴於外部類實例被實例化。而一般的內部類須要在外部類實例化後才能實例化
Java 中會存在內存泄漏嗎,請簡單描述
內存泄漏指對象再也不使用,可是引用一直存在致使GC沒有回收的狀況,不是內存溢出
1.對象再也不使用,引用還在,沒有置爲null
2.經過外部類實例化內部類後,外部類再也不使用,內部類仍然使用,由於內部類實例依賴外部類而存在,因此外部類實例不會被釋放
3.HashSet添加的對象s,若是這個對象參與hash計算的一些值被改變,contains(s)將會返回null,也刪除不了
抽象的(abstract)方法 是否可同時是 靜態的(static),是否可同時是 本地方法(native),是否可同時被 synchronized修飾?
如何實現對象克隆?
1.淺拷貝,拷貝當前對象,不拷貝引用 當前對象及其引用對象實現Cloneable,重寫Object的clone()方法(調用super.clone())
2.深拷貝,連同引用的對象一塊兒拷貝
a.當前對象及其引用對象實現Cloneable,重寫Object的clone()方法(調用super.clone()),在當前對象的clone()方法中調用引用對象的clone()方法,嵌套調用
b.當前對象及其引用對象實現Serializable,串行化,先將對象以流的形式輸出,再讀取
String s = new String("xyz");建立了幾個字符串對象?
2個,過程爲先去String池看看有沒有,有的話後續只new一個對象在堆空間,返回引用,若是沒有,則先在String池建立1個對象,再去堆new一個對象
這篇講得賊清楚 https://www.cnblogs.com/dangzhenjiuhao/p/4585389.html
抽象類是否可繼承具體類(concrete class)?能夠
內部類沒法改變外部類的值,儘管操做看起來像改變了
static int a=5;
int b=6;
public void ain() {
Test t=new Test();
t.test(new AccChkResultDao() {
@Override
public int insert(AccChkResult entity) {
a=6;
return 0;
}
});
}
public static void main(String[] args) {
System.out.println(a);//結果爲5
}複製代碼
內部類能夠引用它的包含類(外部類)的成員嗎?有沒有什麼限制?
1.靜態內部類 只能訪問外部類靜態成員
2.成員內部類 可訪問外部類全部成員
3.局部內部類(定義在方法中) 外部類成員隨便訪問,局部變量要求必須被final修飾纔可訪問
4.匿名內部類 局部內部類的簡寫形式
Java 中的final關鍵字有哪些用法?
1.修飾變量 2.修飾方法的參數 3.修飾方法或類,不能被重寫或被繼承
怎樣將GB2312編碼的字符串轉換爲ISO-8859-1編碼的字符串?
eg: String s1 = "你好"; String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");
在java中是最經常使用的獲取系統時間的方法,它返回的是1970年1月1日0點到如今通過的毫秒數
何時用斷言(assert)?
開發調試時;assert(a > 0); // throws an AssertionError if a <= 0 ,須要在VM options中填寫 -ea 才能啓用
try{}裏有一個return語句,那麼緊跟在這個try後的finally{}裏的代碼會不會被執行,何時被執行,在return前仍是後?
先執行finally再返回,若是finally中有return,則會返回finally中return的結果
List、Set、Map是否繼承自Collection接口?
List和Set是,Map是和Collection同等地位
Collection和Collections的區別?
Collection是接口,Collections是操做集合的工具類
List、Map、Set三個接口存取元素時,各有什麼特色?
1.List按索引添加 2.Map按鍵值對添加 3.Set添加元素方式也是add(),能夠add()重複值,可是存儲不進去(Collection家族都是add(e),Map家族都是put(k,v))
TreeMap和TreeSet在排序時如何比較元素?Collections工具類中的sort()方法如何比較元素?
兩個集合在添加元素後都會排序 1.TreeSet要求存放的對象所屬的類必須實現Comparable接口,進而實現compareTo(E e),當插入元素時會回調該方法比較元素的大小。 2.TreeMap要求存放的鍵值對映射的鍵必須實現Comparable接口從而根據鍵對元素進行排序 3.Collections.sort(List<T> a,Comparator<? super T> b), 至關於有個單獨的類實現Comparator<? super T>,重寫compare(T1 t1,T2 t2),告訴Collections比較方法
線程的sleep()方法和yield()方法有什麼區別?
① sleep()方法給其餘線程運行機會時不考慮線程的優先級,所以會給低優先級的線程以運行的機會;yield()方法只會給相同優先級或更高優先級的線程以運行的機會; ② 線程執行sleep()方法後轉入阻塞(blocked)狀態,而執行yield()方法後轉入就緒(ready)狀態; ③ sleep()方法聲明拋出InterruptedException,而yield()方法沒有聲明任何異常; ④ sleep()方法比yield()方法(跟操做系統CPU調度相關)具備更好的可移植性
當一個線程進入一個對象的synchronized方法A以後,其它線程是否可進入此對象的synchronized方法B?
不能,同步方法拿的是對象鎖,不過能夠訪問其它非同步方法
同步和異步的解釋?zhidao.baidu.com/question/20…
什麼是線程池?www.jianshu.com/p/916ea29ff…
說白了就是預先建立一些線程放在容器中供使用,減小了用時建立以及銷燬的過程,由於對象建立和銷燬是比較耗資源的操做
簡述synchronized 和java.util.concurrent.locks.Lock的異同?
synchronized的功能Lock都能實現,Lock更強大,前者會自動釋放鎖,後者必須在finally中手動釋放鎖
使用JDBC操做數據庫時,如何提高讀取數據的性能?如何提高更新數據的性能?
1.指定返回記錄數(空間換時間策略)2.多個語句放在PreparedStatement中處理
事務的ACID是指什麼?
JDBC中如何進行事務處理?
Connection的setAutoCommit()可設置是否自動提交
JDBC可否處理Blob和Clob?cloud.tencent.com/developer/a…
得到一個類的類對象有哪些方式?
如何經過反射建立對象?
簡述一下你瞭解的設計模式
對象建立型:1.原型模式;2.工廠模式;3.抽象工廠模式;4.單例模式;5.生成器
接口適配型:1.適配器模式;2.橋接模式;3.外觀模式
對象去耦型:1.中介者模式;2.觀察者模式
抽象集合型:1.組合模式;2.迭代器模式
行爲擴展型:1.訪問者模式;2.裝飾器模式;3.責任鏈模式
算法封裝型:1.模版方法模式;2.策略模式;3.命令模式
性能與對象訪問型:1.享元模式;2.代理模式
對象狀態型:1.備忘錄模式
spring中的FactoryBean接口就是工廠模式;aop處理部分有用到適配器模式(保證接口兼容),代理模式(用一箇中間對象控制原對象);觀察者模式(1個對象的狀態改變了通知其它對象改變狀態)
JSP有哪些內置對象?做用分別是什麼?
9大內置對象:www.cnblogs.com/yuyu666/p/9…
講解JSP中的四種做用域? blog.csdn.net/tanyunlong_…
JSP和Servlet是什麼關係?
jsp編譯之後就是servlet,本質同樣
如何實現JSP或Servlet的單線程模式? blog.csdn.net/xichengqc/a…
實現會話跟蹤的技術有哪些?blog.csdn.net/qq_33098039…
MyBatis中使用<code>#</code>和<code>$</code>書寫佔位符有什麼區別?
#將傳入的數據都當成一個字符串,會對傳入的數據自動加上引號;
$將傳入的數據直接顯示生成在SQL中,較易遭受sql攻擊
Spring中Bean的做用域有哪些?
1.singleton 2.prototype 3.request 4.session 5.globalsession
抽象類必定要有抽象方法嗎?不須要
抽象類能被final繼承嗎?
不能,定義抽象類就是用來繼承的,子類必須實現抽象類的抽象方法
字節流和字符流的區別?
字節流是8位一個單位,字符流是16位一個單位
BIO,NIO,AIO的區別?
HashMap線程不安全,後者線程安全(官方不推薦使用)。前者key,value能夠爲null,多線程狀況可以使用ConcurrentHashMap代替
HashMap實現原理?
HashSet原理?底層就是操做HashMap,不容許有重複值