Java面試以前複習總結(二)

5一、數組和列表(Array和ArrayList)
  • Array能夠包括基本數據類型和對象,ArrayList只能包含對象。
  • Array是固定大小的,ArrayList的大小是動態變化的。
  • ArrayList提供了更多的方法和特性。
5三、截止jdk1.8,java併發啊框架支持鎖
  • 讀寫鎖
  • 自族鎖
  • 樂觀鎖
5四、java調試器jdb.exp
5五、獲得class的三種方法,以Person爲例
  • person.getClass
  • Person.class
  • Class.forName("")
5六、解釋JDBC中的角色
JDBC驅動提供了特定廠商對JDBC API接口類的實現,驅動必須提供java.sql包下這些類實現,connection,Statement,PreparedStatement、CallableStatement、ResultSet和Driver
5七、Java數據庫連接JDBC用到哪一種設計模式
橋接模式
5八、I/0用到了裝飾器模式
5九、關於java魯棒性(健壯性)體現
  • Java中不採用指針訪問內存單元
  • 無用內存自動回收機制(垃圾回收機制)
60、關於float與double精度丟失問題
float:有效位是7位。
double:有效位16位
6一、產生一個隨機數的兩種方式(Math.random和Random)
(1)int a = (int) (Math.random()*100);
System.out.println(a);
(2)
不帶種子: 
Random r=new Random();
for(int i=0;i<10;i++){
System.out.println(r.nextInt());
}
帶種子: 
此種方式,不管程序運行多少次,返回結果都是同樣的 
public static void main(String[] args) { 
  java.util.Random r=new java.util.Random(10); 
  for(int i=0;i<10;i++){ 
    System.out.println(r.nextInt()); 
  } 
若是沒有提供種子數,Random實例的種子數將是當前時間的毫秒數,能夠經過System.currentTimeMillis()來得到當前時間的毫秒數。打開JDK的源代碼,咱們能夠很是明確地看到這一點。 
6二、直接從鍵盤獲取char
System.out.println((char)System.in.read());
6三、Java垃圾回收並不能保證內存的耗盡,垃圾回收只是一個低優先級的後臺進程,並且跟蹤可達或者不可達對象。
6四、try內有return,在return前執行finally中代碼。
6五、一點在finally塊中使用了return或throw語句,將會致使try,catych塊中return throw語句失效。
6六、JVM對異常的處理方法是打印異常的跟蹤站信息,並終止程序運行,這就是前面程序在遇到異常後自動結束的緣由。
6七、子類拋出的異常不能比父類大。
6八、throw爬出的不是異常類,而是異常實實例。
6九、在Java7之前,每一個catch塊之恩那個補貨一種類型異常,但從Java7開始,一個catch塊能夠補貨多種類型的異常,捕獲多種異常時,異常變量有隱士的final修飾,所以,程序不能對異常變量從新賦值
70、嚴格封裝的類更容易被複用。
7一、被聲明爲final的變量,必須在聲明時進行初始化,而在之後的引用中之恩那個讀取,不可更改。
7二、final修飾符的主要做用時聲明屬性,方法,和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
7三、注意不能用abstract修飾構造方法,靜態方法和private
7四、一個接口可同時繼承兩個接口。
7五、在接口裏的成員變量,必須初始化並且都是final類型的,就意味着變量變常量。
7六、什麼叫重載
方法名相同,參數個數,類型和順序能夠不一樣。
7七、重載和重寫
  • 重寫是父類與子類多態的一種表現,重載是一個類中多態性的一種體現,
  • 充血重被子類重寫的訪問權限大於被重寫方法的權限。
7八、在同一個類中,不一樣構造方法調用該類的其餘構造方法須要使用this形式,並且必須在第一行。
7九、System中全部的成員都是靜態的。
80、關於類加載器,
  • 引導類加載器bootstrap class loader:它用來加載Java的核心庫,是用原生代碼來實現的。
  • 擴展類加載器extendions class loader:它用來加載Java的擴展庫,
  • 系統類加載器System class loader:根據java應用的類路徑,classpath類來加載Java類。
  • tomcat爲每一個APP建立了一個loader,裏面保存此webapp的classloader,須要加載webapp下的類時,就取出classloader
8一、JDK1.5以後,Java爲基本數據類型提供了自動裝箱,拆箱的功能,
泛型也是在jdk1.5以後引入的。
8二、兩種獲取隨機數方式
Math.Random Math.Round()這個時四捨五入,要與取隨機數分開。
Random來,分爲帶種子和不帶種子,
8三、關於抽象類與接口
  • 優先選用接口,儘可能少用抽象類。
  • 接口和抽象類都不能被實例化。
8四、子類不能夠繼承父類的構造方法。
8五、封裝的主要做用在於對外隱藏內部實現細節,加強程序的安全性。
8六、DBMS中實現事務持久性的子系統是恢復管理子系統。
8七、面試題若是有程序題時,必定要考慮內存
8八、在方面中聲明變量不能用static修飾。
8九、Java用監視器機制實現了進程之間的同步執行。
90、關於Java併發的說法
ReadWriterLock適用於讀多寫少的併發場景
9一、Java中經常使用類庫,Runtime,System,Math,Random和Calendar
  • 語言包:lang,系統自動引用此包
  • Object她是全部類的父類
  • 基礎類型包裝類
  • 數學類
  • String和StringBuilder
  • 系統和運行時類,System in和out時標準輸入類和輸出類,System全部成員變量都是靜態的。
  • Runtime看能夠直接訪問運行時資源。
  • Class和ClassLoading:classLoder類是一個抽象類,它提供了將類名轉爲文件名。
90、關於JVM
9一、關於繼承和組合
  • 若是存在一種IS-A的關係,好比Bee時一個Insect,而且一個類須要向另外一個類曝露出全部的方法接口,heme更應該用繼承。
  • 若是存在一種has-A的關係,好比Bee有一個attack功能,那麼更應該用組合。
關於繼承:
父類更具備通用性,子類更具體,而且繼承之間具備傳遞性,當子類實例化時會遞歸調用父類中的構造方法。
關於分頁:
先取總記錄數,獲得總頁數。取全部紀錄,最後顯示本頁數據。
9二、面向對象的五大基本原則
  • 單一職責:就一個類而言,應該僅有一個引發它變化的緣由。
  • 里氏替換:子類必須可以替換掉她們的父類。
  • 接口隔離
  • 開放封閉:軟件實體,應該能夠擴展,可是不能夠修改。面對需求,對程序的改動是經過新代碼進行的,而不是更改現有代碼。
  • 依賴倒置:抽象不該該依賴細節,細節應該依賴抽象,高層模塊不該該依賴底層模塊,兩個都應該依賴於抽象。
9三、WebService是跨平臺,跨語言的遠程調用技術。
Webservice採用soap細緻
WSDL是用來描述WebService以及如何對她們進行訪問。
9四、String類底層採用char數組來保存字符串。
9五、interface默認方法有public,abstract修飾,變量爲public static final修飾
9六、依賴注入的動機就是減小組件之間的耦合度,使開發簡潔。
9七、前置線程用於執行任務,後臺線程用於內存分配,前臺線程結束當前進程結束,進程技術,後臺線程未必結束,
main()函數是一個前臺進程,前臺進程是程序中必須執行完成的,然後臺線程則是java中全部前臺結束後技術,無論有沒有完成,後臺線程主要用於內存分配方面。
9八、數組是一個對象,數組不是一種原生類,數組存儲在堆中連續內存空間裏。
9九、concurrentMap使用gsegment來分段和管理鎖。segment繼承字Reentrantlock所以,concurrentHashMap使用ReentrantLock來保證線程安全。
100、事件處理模型有三個要素。
事件源,事件,事件監聽器。
10一、JDK提供的用於併發編程的同步器Semaphore,CyclicBarrier,CountDownLatch、
10二、URL:同一資源定位符。
http://localhost:8080/OD
協議 主機名 端口 路徑
爲何沒有ip,由於ip地址 + 子網掩碼 = 主機號
10三、Arrays.sort()使用的是快速排序和歸併排序
  • 基本類型使用的是一個更過調優的快速排序方法。
  • 對象使用歸併排序。
  • 若是是一個對象,則必須實現Comparable接口,則一個通過修改的歸併排序算法。
Collection.sort()是歸併排序。0
相關文章
相關標籤/搜索