一、什麼是對象序列化,爲何要使用?
html
所謂對象序列化,就是把一個對象以二級制的方式保存到硬盤上,方便遠程調用。java
二、值傳遞與引用傳遞的區別?android
值傳遞就是把一個對象的值傳給一個新的變量,可是系統會給這個新的變量開闢一個新的內存空間。不改變原有的值。算法
引用傳遞就是把一個對象在堆保存的數據傳遞給一個變量,此時新的變量與原有的變量對應同一個內存存儲空間,當新的變量修改對象屬性是,內存中的數據也會被修改。編程
三、接口與抽象類的區別?api
1:接口裏面不能夠實現方法體,抽象類能夠實現方法體數組
2:接口能夠多個接口,抽象類不能夠安全
3:接口須要子類實現,抽象類要須要子類單一繼承網絡
4:接口中只能有公有的方法和屬性並且必須賦初值,抽象類中隨意多線程
5:接口中不能有靜態方法,但屬性能夠有final,抽象中方法能夠有靜態方法,屬性也能夠
四、談談繼承,爲何要使用繼承?
繼承就是找出幾個類的共同部分,提取出來做爲父類。而子類只須要繼承父類,就能夠共享父類的方法,使用繼承可以減小重複代碼。
五、方法重載的好處(overload)
重載就是在同一個類中能夠定義多個相同的方法,可是方法的參數類型和參數的個數以及順序要不一樣。
重載的好處是可以讓咱們很快掌握該方法的功能,咱們只要記住該方法就能很快理解該方法的參數和參數的做用。
六、項目中印象最深的部分
反射技術的強大之處,
一、當加入新的功能是,不會修改原有代碼(面向接口編程)
二、當咱們寫一個類能夠重複的運用於其餘項目。(代碼的服用性)
三、當寫一個新類的時候要考慮到他的課擴展性。(靈活性)
七、談談集合框架
集合框架分爲三部分,第一部分是Collection接口,第二部分是Map接口、第三部分是collections幫助類
collection接口下分爲set接口,list接口,往下是他們的實現類。
實現類再分爲兩部分,第一部分是set的實現類TreeSet、HashSet,第二部分是list的實現類ArrayList、LinkedList、Vector
八、再說Map接口,map接口下面有treeMap、HashMap、HashTable三個實現類。
最後說collections幫助類,collections提供了一系列靜態方法實現對各類集合的搜索、排序,線程安全化等操做
九、什麼是異常?描述下異常處理
異常就是在執行程序的時候發生的錯誤,會使程序終止
異常處理:
一、使用try-catch捕獲異常
二、使用throw-throws拋出異常
十、多線程的優先級?爲何要分優先級?
由於有一些線程很重要,因此才劃分優先級
Trowable是全部錯誤的超類,它下面有兩個子類;error和Execption
error表明系統級別的錯誤能捕捉,但不能處理。Exception表明異常主要自於程序,能夠捕獲也能處理
Exception有分爲兩類:編譯器異常、運行期異常。
區別他是運行期異常仍是編譯期異常就看它是否是RuntimeException的子類,若是是的話,即是運行期異常。
十一、說一下iterator
iterator是一個接口,用於實現對容器裏面的元素遍歷操做。
任何遍歷均可以使用iterator。
十二、什麼是泛型,泛型的好處?
泛型就是本身指定的一種類型,之後存放的東西就只能有這一種類型。泛型的好處是在編譯的時候檢查類型安全,而且全部的強制類型轉換都是自動和隱式的,提升代碼的重用率。
1三、說一下你在項目中遇到的異常,並說出何時發生,怎麼解決的。
空指針異常最多見。根據異常的提示找到相應的類進行處理,發生的緣由有不少,好比變量沒有初始化,沒有賦值,對android來講,activity,service等沒有註冊,
根據錯誤提示找到出錯的api進行相應的處理
1四、java爲何是跨平臺的?
對於不一樣的系統有不一樣的虛擬機,虛擬機提供了硬件平臺規範。用java開發的程序被編譯成java虛擬機指令組成的字節代碼,虛擬機將這些指令翻譯成對應OS的指令(jvm屏蔽了底層操做系統的硬件)。
1五、private變量能不能被其它類訪問?若是能,怎麼訪問?
能,經過反射。詳情請見:http://my.oschina.net/carbenson/blog/496931
1六、演示java項目如何打包成jar文件
http://blog.csdn.net/cyb_23/article/details/40341857
java的環境變量怎麼配置?爲何要配置?
1:在個人電腦->屬性->高級->環境變量->系統變量
新建變量名JAVAHOME,設置java的JDK目錄(不能有中文)
2:選擇系統變量PATH,前面添加%JAVAHOME%\bin;
3:運行dos,輸入java -version;若是能看到版本號,說明安裝成功。
使系統能夠找到程序javac.exe的運行路徑!方便在dos窗口操做
1七、static和非static修飾的變量那個生命週期長?
static更長,由於它一直在內存
什麼是線程同步?
線程同步就是說同一時間訪問某個資源的時候,資源只能被一個線程所使用。
1八、什麼是封裝?封裝的好處是什麼?
封裝就是把一個已經實現好的功能的代碼,放在一個方法中,實現了隱藏。
好處是提升代碼的重用性,安全性,只須要調用該方法無論具體實現。
1九、線程中wait和sleep的區別?
1:wait是Object定義的方法,而sleep是線程Thread定義的方法。
2:sleep是讓當前線程睡眠,因此能夠放在任何位置,而wait是讓當前線程放棄資源的使用權,,必須在同步塊或同步方法裏面調用。
3:sleep不釋放對象鎖,wait會釋放對象同步鎖
4:sleep是等待一段時間後自動醒來,而wait必須讓其餘線程喚醒。
20、Class和class的區別
Class是類的名稱。class是java保留字
2一、awt和swing的區別
awt是重量級的組件,swing是輕量級的組件。
eg:在swing組件中當咱們調用repaint()方法時,會很快調用paint()。而在重量級組件中,會先調用updata()方法,而後在update()方法裏面在調用paint()方法,在重量級組件中實現了雙緩衝,咱們就要重寫update()方法,在重寫的時候記得實現刷新屏幕操做。
2二、爲何實現一個接口必須實現接口裏面全部的方法?
由於這是sun公司的規定。若是不實現它裏面全部的方法那就不叫接口。
2三、線程和進程的區別
進程是一個小的應用程序,須要分配內存空間。
線程是進程中的一個順序控制流,也能夠這樣理解,線程是進程的實體。
2四、java基礎技能中強調程序代碼的讀寫能力,若是一個類很長,你會怎麼讀寫?
1:類分解,每一個類只作他該作的事情。
2:方法分解。
2五、抽象方法能不能是private和static修飾符?
能
2六、使用接口的好處?
1:使用接口有很好的擴展性。
2:接口能夠多繼承接口。
3:隱藏實現
2七、什麼是反射?
所謂反射就是在編譯的時候不知道加載什麼,只能等到運行的時候才知道執行什麼。
2八、建立對象的方法有哪些?
一、用new語句建立對象,這是最多見的建立對象的方法。
二、運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
三、調用對象的clone()方法
四、運用反序列化手段,調用java.io.ObjectInputStream對象的readObject()方法
2九、transient是什麼意思
transient表明沒法到達某一對象所拋出的異常。但也不表明沒有該對象
30、在設計類的時候,你是怎麼使用靜態變量和成員變量的?
若是須要一直存在於內存當中,就選擇靜態變量不然就選擇成員變量。
3一、定義抽象方法的意義何在?
1:爲了減小重複代碼
2:抽象方法有很好的擴展性
3二、集合的遍歷方式
forEach()、for()、interator
for、while是同樣的,形式上不一樣,
forEach(),Iterator也是同樣的,形式上不一樣,性能的話,確定是迭代器好一些。迭代器能直接訪問集合內部元素。並且有得集合沒有索引,根本沒法使用for,只能用迭代器。
3三、java安全性體如今什麼地方?
1:java提供一個用於網絡/分佈式的計算環境。所以,java強調安全性,如確保無病毒、小應用程序運行安全控制等等
2:java的驗證技術是以公鑰(public-key)加密算法爲基礎,並且從環境變量、類加載器、文件系統、網絡資源和名字空間等方面實施安全策略。
3四、談談線程所擁有的幾種狀態
就緒:線程分配了CPU之外的所有資源,等待得到CPU調度
執行:線程得到CPU,正在執行
阻塞:線程因爲發生I/O或者其餘的操做致使沒法繼續執行,就放棄處理機,轉入線程就緒隊列
掛起:因爲終端請求,操做系統的要求等緣由,致使掛起。
3五、面向對象的特徵有哪些?
封裝、繼承、多態(每一個java碼農必須熟記於心)
3六、解析一下在項目裏面你怎麼去實現多線程的。
通常是實現Runnable接口,重寫run();new Thread(new MyThread()).start();
(假如MyThread已經實現了Runnable接口)
3七、啓動線程是能夠調用run()方法嗎?
能夠,由於run方法裏面執行的代碼就是所要執行的方法。
3八、java程序的執行過程是怎樣的?
java源程序 編譯.class字節碼 -> 類加載器 -> 字節碼校驗器 -> 解析執行
3九、java程序的引用數據類型有哪些?
對象、集合、數組、接口
40、變量按做用域分類分爲幾種?
分兩種:全局變量和局部變量
4一、集合裏面的接口有哪些?
Collection接口、set接口、list接口、map接口、iterator接口
4二、int與Integer的區別
int是原始數據類型,integer是int的包封裝類,他提供轉換類型的不少方法。
4三、checked異常與unchecked異常的區別是什麼?
區別是看他們是否是runtime的子類,若是是runtime的子類那麼就是運行期異常,不然是編譯期異常
4四、final,finally和finalize的區別
final用於聲明屬性,方法和類,分別表示屬性不可更改,方法不可重寫,類不可繼承
finally是異常處理語句結構的一部分,它表示老是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用回收對象的此方法,能夠覆蓋此方法提供垃圾收集是的其餘資源回收,好比關閉文件等。
4五、重寫與重載的區別?參數同樣,返回類型不同,是重載嗎?
重載:方法名相同,參數類型不一樣,參數個數不相同,參數順序不一樣
重寫:方法名相同,參數類型相同,返回的類型相同。
返回類型不相同的不是重載,重載是根據參數類判斷的。
4六、寫一個數組的建立
int [] i = new int[5];
int [] i = {1,2,3,4};
4七、何時用輸入流,何時用輸出流?
讀寫數據的時候使用輸入流,寫入數據的時候用輸出流,相對內存來講。
4八、雙緩衝如何實現?爲何要雙緩衝?
如今內存中分配一個和咱們動畫窗口同樣大的空間(內存中的空間咱們是看不到的),而後利用getGraphics_r()方法去得到空間並將它所有一次性的顯示到咱們的屏幕上,這樣在咱們的動畫窗口上面的顯示效果會很是流暢,避免了閃爍的效果。
4九、舉出經常使用的list類,哪一種狀況用哪一個
ArrayList、LinkedList、Vector
ArrayList是連續的控件,遍歷速度快,插入和刪除就比較慢。
LinkedList是一個雙向鏈表存放數據,若是刪除和添加元素比較多的話,要效率高的就是用LinkedList。
Vector和ArrayList的功能同樣,惟一的區別是vector是線程安全的,而ArrayList是線程不安全的。
50、map、list、與set的區別?裏面經常使用的類有哪些?
map是以鍵值對的方式存放數據。
list裏面的數據能夠重複,有順序。
set裏面的數據不能夠重複,沒有順序。
list的經常使用類有arraylist
set的經常使用類有treeset
map的經常使用類時hashmap
5一、何時用繼承Thread?何時實現Runnable接口
當一個類中沒有繼承的時候能夠繼承Thread。
若是類中已經繼承了別的類,只能建立一個類並實現Runnable接口,在初始化的時候必須new Thread(new MyThread());
5二、對象如何進行比較,爲什麼大多數狀況下不能使用「==」?
若是對象不是String的話,==與equals並無區別。由於String他是重寫了object的方法,因此纔有了equals比較內容,==比較地址。
5三、靜態變量與成員變量的區別
靜態變量在對象加載以前初始化,而成員變量是在編譯期間初始化。
靜態變量能夠直接經過類點名的方式進行訪問,而成員變量不行。
5四、修飾符有哪幾種?他們之間的區別?
前提:在一個項目裏
public 能夠在全部包中的全部類隨意進行訪問
private 只能被當前的類訪問
protected 在同一包中,或子類能夠進行訪問
默認:同包下能被訪問。
5五、對象序列化怎麼實現?
實現Serializable接口。
5六、講一下多態的概念。
多態就是在相同的行爲不一樣的體現方式。(好比:愛好,每一個人都要有本身的愛好,可是愛好都不一樣)
5七、子類中怎麼調用父類的方法
經過super.方法
5八、this、super的用法與區別
this是訪問當前類的屬性和方法
super是訪問父類的屬性和方法
5九、什麼是構造方法?構造方法的做用?
構造方法是在調用的時候被new出來的,每一個類都有構造方法。
做用:爲對象分配內存、初始化類變量、初始化屬性、返回引用。
60、error和exception的區別是什麼?
error是系統級別的錯誤,能夠捕獲,但不能處理。
exception是程序錯誤,能夠捕獲也能夠進行處理。
6一、輸入輸出流分幾種?分別在何時使用?
輸入流:InputStream、Read
輸出流:OutputStream、Writer
讀取字節,使用InputStream
以字符讀取使用Read
輸出字節,使用OutputStream
以字符輸出使用Writer
6二、異常捕獲的流程?若是異常發生是怎樣的流程
try{
容易發生異常的代碼
}catch(錯誤的類型){
打印錯誤信息
}finally{
無論有沒有異常都要執行
}
6三、String是基本的數據類型嗎?基本數據類型有哪些?
不是,基本的數據類型有:
byte 8bit
short 16bit
int 32bit
long 64bit
float 32bit
double 64bit
char 16bit
boolean
6四、Collection與Collections的區別?
Collection是一個接口
Collections是一個幫助類(主要對查找、排序)
6五、HashMap等是實現Collection接口的嗎?
不是,HashMap是實現map接口的。
6六、若是try快有多個異常,在catch中怎麼處理?
直接在catch中寫一個Exception異常,由於Exception是全部異常的超類
6七、如何拋出異常?
使用throw明確要拋出異常的代碼,在方法中使用throws拋出異常的類型
throw關鍵字一般用在方法體中
eg:if(y<0)
{ throw new MyException("除數不能爲負數");}
throws關鍵字一般被應用在聲明的地方,用來指定可能拋出的異常。若是發生異常,就會將異常拋出給指定的對象。
6八、GUI相應一個事件的代碼如何寫?
肯定事件源:肯定監聽器,監聽器須要實現監聽器接口,重寫其中的方法:完成事件源和監聽器的註冊
6九、JVM是什麼?它的做用是什麼?它和java運行環境有什麼區別
JVM就是java虛擬機,具備一個指令集並使用不一樣的存儲區域。
它負責執行指令,還要管理數據、內存和寄存器。java解析器負責將字節代碼翻譯成特定機器的機器代碼
沒有java虛擬機就更不要說運行環境了。
70、集合和數組的區別。
1:集合中能夠存放不一樣類型的元素,而數組中只能放同一種類型的數據
2:集合的長度能夠隨元素的多少自動增加,數組不行
3:集合只能放置對象,數組能夠是對象,也能夠是基本數據類型。
4:集合提供很好的算法,數組提供的算法有限
7一、String能否被繼承?
不能夠,String類被final修飾
7二、基本數據類型和引用數據類型的區別是什麼?
基本數據類型表明元素的實際值,也就是說基本數據類型是存在棧中的。引用數據類型是元素所表明的內存中所指向的一個地址,在棧中只是保存對象的地址。而對象的具體內容是保存在堆中
7三、byte的取值範圍?
-128~~+127
7四、java中採用什麼字符集?char類型能不能放入一箇中文字?
Unicode編碼。能
7五、java語言的特色是什麼?
簡單、健壯、安全、分佈式、跨平臺、解釋性、多線程、面向對象、垃圾回收。
7六、String的幾個經常使用方法
http://www.cnblogs.com/crazyac/articles/2012791.html
7七、接口能夠定義常量嗎?
能夠定義,必須加上public 且初始化完畢
7八、斷言有什麼做用?
調試程序
7九、列舉出switch()括號中能接受的全部數據類型。
int 、double、float、long
80、如何獲取String或數組的長度
String使用length(),數組使用length屬性
8一、JDK與JRE分別是什麼?
jdk:開發環境
jre:運行環境