1、字符流和字節流的區別,使用場景是什么,相關類有哪些
http://blog.csdn.net/zj8692286/article/details/12650731
2、線程安全的概念,實現線程安全的幾種方法
基本概念:如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其他的變量的值也和預期的是一樣的,就是線程安全的。
實現方法:
synchronized關鍵字:獲得一個鎖來防止其他線程在執行此操作的線程完成之前訪問同一個方法;
volatile關鍵字:volatile只能保證多線程的內存可見性,不能保證多線程的執行有序性
基本原子數據類型:在java.util.concurrent.atomic包中提供
3、抽象類和接口的區別,使用場景
1.abstract class 在 Java 語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是,一個類卻可以實現多個interface。
2.在abstract class 中可以有自己的數據成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態的不能被修改的數據成員(也就是必須是static final的,不過在 interface中一般不定義數據成員),所有的成員方法都是abstract的。
3.abstract class和interface所反映出的設計理念不同。其實abstract class表示的是"is-a"關系,即父類和派生類在概念本質上應該是相同的;interface表示的是"like-a"關系,并不要求interface的實現者和interface定義在概念本質上是一致的, 實現者僅僅是實現了interface定義的契約而已。
4.實現抽象類和接口的類必須實現其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實現方法。
5.接口中定義的變量默認是public static final 型,且必須給其初值,所以實現類中不能重新定義,也不能改變其值。
6.抽象類中的變量默認是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7.接口中的方法默認都是 public,abstract 類型的。
4、hash算法的實現原理,hashcode的實現原理
http://blog.csdn.net/zj8692286/article/details/12651497
5、error和exception的區別,RuntimeException和非RuntimeException的區別
http://blog.csdn.net/zdwzzu2006/article/details/6568600
6、繼承與組合的區別,使用場景
http://blog.csdn.net/iloveyin/article/details/8096428
7、使用靜態工廠方法的好處和壞處
http://blog.csdn.net/beidou321/article/details/6488646
8、列出幾種排序算法,他們是時間復雜度是多少
http://blog.sina.com.cn/s/blog_771849d301010ta0.html
9、數據庫設計原則、范式
1.第一范式是最基本的范式。如果數據庫表中的所有字段值都是不可分解的原子值
2.第二范式在第一范式的基礎之上更進一層。第二范式需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中只能保存一種數據,不可以把多種數據保存在同一張數據庫表中。
3.第三范式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。
10、數據庫常用的編碼方式有哪幾種
以MySQL為例,常用的編碼方式有utf8;gbk;gb2312;latin1,對應的Java中的編碼為UTF-8;GBK;GB2312;ISO-8859-1;
11、http和https的區別
http是超文本傳輸協議,明文傳輸信息,https 則是具有安全性的SSL加密傳輸協議,要比http協議安全
http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443
12、序列化的作用和應用場景
作用:為了保存在內存中的各種對象的狀態,并且可以把保存的對象狀態再讀出來,Java提供這種“序列化”保存對象狀態的機制。
使用場景:內存中的對象狀態保存到一個文件中或者數據庫中時候;用套接字在網絡上傳送對象的時候;通過RMI傳輸對象的時候。
13、sPRing的IOC、AOP的使用場景
http://blog.sina.com.cn/s/blog_624a352c0101fo9j.html
14、Ajax是否能跨域請求,解決的辦法
ajax不能跨域請求,由于同源策略的限制,xmlHttpRequest只允許請求當前源(域名、協議、端口)的資源。解決方式有兩種:1 采用JSONP,它允許在服務器端集成Script tags返回至客戶端,通過Javascript callback的形式實現跨域訪問;2 iframe的方式,通過設置document.domain來實現。
15、解析xml的幾種方法,他們的原理
1.DOM(Document Object Model)它把整個XML文檔當成一個對象加載到內 存,不管文檔有多大。它一般處理小文件
2.SAX(Simple API for XML)它的處理過程像流媒體。它不會把整個文檔加載到內存,它是讀一點處理一點。一般用它處理比較大的文件
3.JDOM包含了前兩種方式
4.DOM4J也包含了前兩種方式
其中DOM和SAX都是java的標準,也就是java本身就提供標準的API,不需要下載其他包,但是它的API都是一些底層的實現,不是很好用。所以有人在它們的基礎上封裝了一下,就有了DOM4j和JDOM。DOM4J性能最好,連SUN的JAXM也在用DOM4J.Hibernate也用DOM4J,DOM4J對Xpath也有很好的支持
16、內部跳轉和外部跳轉的區別,底層實現原理
http://blog.csdn.net/hjjk123/article/details/5311227
17、如果有和其他系統有接口調用,但其他系統還沒開發完成,怎么進行單元測試
采用Mock測試,Mock對象也就是真實對象在調試期的替代品。什么時候需要Mock對象:
1.真實對象具有不可確定的行為(產生不可預測的結果,如股票的行情)
2.真實對象很難被創建(比如具體的web容器)
3.真實對象的某些行為很難觸發(比如網絡錯誤)
4.真實情況令程序的運行速度很慢
5.真實對象有用戶界面
6.測試需要詢問真實對象它是如何被調用的(比如測試可能需要驗證某個回調函數是否被調用了)
7.真實對象實際上并不存在(當需要和其他開發小組,或者新的硬件系統打交道的時候,這是一個普遍的問題)
http://blog.csdn.net/chjttony/article/details/14522771
18、防止重復提交有哪幾種方式
1.禁掉提交按鈕。表單提交后使用Javascript使提交按鈕disable。這種方法防止心急的用戶多次點擊按鈕。但有個問題,如果客戶端把Javascript給禁止掉,這種方法就無效了
2.在提交后執行頁面重定向
3. 在session中存放一個特殊標志。當表單頁面被請求時,生成一個特殊的字符標志串,存在session中,同時放在表單的隱藏域里。接受處理表單數據時,檢查標識字串是否存在,并立即從session中刪除它,然后正常處理數據。
如果發現表單提交里沒有有效的標志串,這說明表單已經被提交過了,忽略這次提交。
19、數據庫連接池的實現原理,請求怎么樣去獲取連接,關閉連接時,連接池是銷毀連接還是回收連接
連接池在初始化的時候,生成多個可用的Connection存放在List中,當DAO獲取連接時,關閉連接時,連接被回收
以上題目均收集自互聯網,部分答案也來自互聯網,版權均屬于原作者
新聞熱點
疑難解答