基礎知識:
1.c++或java中的異常處理機制的簡單原理和應用。
當java 程序違反了java的語義規(guī)則時,java虛擬機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括2種情況。一種是java類庫內置的語義檢查。例如數組下標越界,會引發(fā)indexoutofboundsexception;訪問null的對象時會引發(fā)nullpointerexception。另一種情況就是java允許程序員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw關鍵字引發(fā)異常。所有的異常都是 java.lang.thowable的子類。
2. java的接口和c++的虛類的相同和不同處。
由于java 不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現代碼。當一個類實現了接口以后,該類要實現接口里面所有的方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是public static,所有方法默認情況下是public.一個類可以實現多個接口。
3. 垃圾回收的優(yōu)點和原理。并考慮2種回收機制。
java 語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得java程序員在編寫程序的時候不再需要考慮內存管理。由于有個垃圾回收機制,java中的對象不再有“作用域”的概念,只有對象的引用才有“作用域”。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。
4. 請說出你所知道的線程同步的方法。
wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調用此方法要捕捉interruptedexception異常。
notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由jvm確定喚醒哪個線程,而且不是按優(yōu)先級。
allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
5. 請講一講析構函數和虛函數的用法和作用。
6. error與exception有什么區(qū)別?
error表示系統(tǒng)級的錯誤和程序不必處理的異常,
exception表示需要捕捉或者需要程序進行處理的異常。
7. 在java中一個類被聲明為final類型,表示了什么意思?
表示該類不能被繼承,是頂級類。
8. 描述一下你最常用的編程風格。
9. heap和stack有什么區(qū)別。
棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照后進先出的方式進行處理。
堆是棧的一個組成元素
10. 如果系統(tǒng)要使用超大整數(超過long長度范圍),請你設計一個數據結構來存儲這種超大型數字以及設計一種算法來實現超大整數加法運算)。
public class bigint()
{
int[] arrone = new arrone[1000];
string intstring="";
public int[] arr(string s)
{
intstring = s;
for(int i=0;i { 編輯推薦:
(責任編輯:xy)