更新時間:2019-12-04 15:22:56 來源:動力節點 瀏覽2783次
就目前來說,會Java的人一抓一大把,但是呢,在求職的過程中,總是碰壁,沒有頭緒,遲遲找不到工作,不僅是限于沒有學歷,而且還是缺乏面試的一些技巧,不知道如何回答面試官提的問題?若想在面試中能穩如泰山,拿下心意offer,這些題目將是我們必備的面試法寶。如有錯誤,望加以斧正補充,自當深表感激。
1、同步與異步的區別???
答:所謂的同步,就是發出一個功能調用時,在沒有得到結果之前,該調用就不會放回,或繼續執行后續操作。簡單來說,同步就是必須一件一件的來做,等前一件事做完了,才能做下一件事。
異步,當異步過程調用發出后,調用者在沒有得到結果之前就可以執行后續操作,
當這個調用完成之后,一般通過狀態,通知和回調通知,調用者。對于異步調用,其返回并不受調用者控制。
2、HashCode()與equals的關系???
答:
1)、hashcode是object類的一個方法,返回值是該對象的哈希碼值,同一個對象的哈希碼值一定相等,但是不同的對象的哈希碼值也是有可能相等的。
2)、equals同樣是object類的一個方法,比較兩個對象是否是同一個對象,其內部實現是通過==來比較兩個對象的內存地址是否相等的,如果需要比較兩個對象的內容是否相等,則需要重寫equals方法,重寫的equals方法用于比較對象的內容是否相等。
3)、因此如果兩個對象根據equals()方法比較相等,那么這兩個對象的hashcode()返回值一定相等,如果兩個對象的hashcode()返回值相等,其equals()比較結果也不一定是true。
3、String類通過new創建和直接賦值字符串的區別???
答:
方式一:Stringa=“aaa”;
方式二:Stringb=newString(“aaa”);
兩種方式都能創建字符串對象,但方式一要比方式二更優。
因為字符串是保存在常量池中的,而通過new創建的對象會存放在堆內存中。
一:常量池中已經有字符串常量”aaa”
通過方式一創建對象,程序運行時會在常量池中查找”aaa”字符串,將找到的”aaa”字符串的地址賦給a。
通過方式二創建對象,無論常量池中有沒有”aaa”字符串,程序都會在堆內存中開辟一片新空間存放新對象。
二:常量池中沒有字符串常量”aaa”
通過方式一創建對象,程序運行時會將”aaa”字符串放進常量池,再將其地址賦給a。
通過方式二創建對象,程序會在堆內存中開辟一片新空間存放新對象,同時會將”aaa”字符串放入常量池,相當于創建了兩個對象。
4、Java中Int與integer用==比較詳解???
答:
①、無論如何,Integer與newInteger不會相等。不會經歷拆箱過程,因為它們存放內存的位置不一樣。(要看具體位置,可以看看這篇文章:點擊打開鏈接)
②、兩個都是非new出來的Integer,如果數在-128到127之間,則是true,否則為false。
③、兩個都是new出來的,則為false。
④、int和integer(new或非new)比較,都為true,因為會把Integer自動拆箱為int,其實就是相當于兩個int類型比較。
5、Java中final關鍵字的理解???
答:final在Java中是一個保留的關鍵字,可以聲明成員變量、方法、類以及本地變量。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變量再次初始化的話,編譯器會報編譯錯誤。
1)、final關鍵字可以用于成員變量、本地變量、方法以及類。
2)、final方法不能被重寫。
3)、final類不能被繼承。
4)、final關鍵字不同于finally關鍵字,后者用于異常處理
5)、final關鍵字容易與finalize()方法搞混,后者是在Object類中定義的方法,是在垃圾回收之前被JVM調用的方法。
6、Java中public、private、protected關鍵字的理解???
答:
1)、public表明該成員變量或者方法,對所有類或者對象都是可見的,所有類和對象都可以直接訪問。
2)、private表明該成員變量或者方法是私有的,只有當前類對其具有訪問權限。
3)、protected表明成員變量或者方法對該類自身,與它在同一個包中的其他類可見,在其他包中的該類的子類都可見。
4)、dafault表明該成員變量或者方法只有自己和與其位于同一個包中的類可見,若父類和子類位于同一個包中,則具有訪問權限,如父類和子類不在同一個包中,則沒有訪問權限。
7、什么是構造函數???
答:
1)、構造函數必須和類名相同,并且不能有返回值(返回值也不能為void)
2)、每個類可以有多個構造函數,構造函數可以有多個參數。
3)、構造函數總是伴隨new操作一起調用,且不能直接調用,必須由系統調用。
4)、構造函數主要作用完成對象的初始化工作。
5)、構造函數不能被繼承,因此,不能被覆蓋,但是可以重載。
8、多態的實現機制是什么???
答:多態主要有一下兩種表現形式。
1)、方法的重載(overload)。重載是指同一個類中有多個同名的方法,但是這些方法具有著不同的參數,重載可以被看做一個類中方法的多態性。
2)、方法的覆蓋(overide)。子類可以覆蓋父類的方法,因此同樣的方法會在父類和子類中有著不同的表現形式。這種形式,因為只有在調用時才能確定調用的是哪個方法,因此被稱為運行時多態。
9、什么是線程,什么是進程,它們之間的區別是什么???
答:
線程:程序執行過程中,能夠執行代碼的一個執行單元。四種狀態(運行、就緒、掛起、結束)
進程:是指一段正在執行的程序。
其關系如下:
1)、一個線程只能屬于一個進程,而一個進程可以有多個線程,但是至少有一個線程,線程是操作系統可識別的最小執行和調度單位。
2)、資源分配給進程,同一個進程中的所有線程共享該進程中的所有資源,同一個進程多個線程共享代碼段(代碼和常量),數據段(全局變量和靜態變量),擴展段(堆存儲)。但是每個線程用有獨立的棧段,棧段用來存放所有的局部變量和臨時變量。
3)、處理機分給線程,即真正的處理機上運行的是線程。
4)、線程在執行過程中,需要協作同步。不同的進程的線程間要利用通信的辦法實現同步。
10、Http中GET與POST方法有什么區別???
答:
1)、采用get方式向服務器上傳數據,一般將數據添加到url后面,并且二者用“?”連接,各個變量之間用“&”連接,由于url長度存在限制,因此采用這種方式上傳數據量非常小。而post方式傳遞的數據是通過http請求的附件進行的,傳送的數據量比較大,一般默認不受限制。
2)、由于get方式將數據追加在url之后,數據徹底暴露出來,本身存在安全隱患,而post方式向服務器上傳數據時,對用戶是不可見的,安全性比get方式會更優。
以上就是動力節點Java培訓機構小編介紹的“就業太困難?Java面試題庫及答案”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關推薦
最新最全java面試題及答案(初級到高級)
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習