java基礎面試/筆試題整理(三)

  1. 數據的隔離級別由數據庫系統實現,是數據庫系統本身的一個功能。我們寫java程序的時候只是設定事務的隔離級別,而不是去實現它。
    (這個我標重點,因爲真的被問到很多次。當然了,事務的隔離級別也要會。不太明白的可以點鏈接進去看數據庫的事務隔離級別和四大特性
  2. ThreadLocal是類。聲明爲public class ThreadLocal<T>
    ThreadLocal類爲每一個線程都維護了自己獨有的變量拷貝。每一個線程都擁有了自己獨立的一個變量。
    ThreadLocal是採用哈希表的方式來爲每個線程提供一個變量的副本。
    ThreadLocal保證各個線程之間數據安全,每個線程的數據不會被另外的線程訪問和破壞。
  3. 在父類沒有無參構造函數的時候,子類要在自己的構造函數中顯示的調用父類的構造函數。
  4. 形式參數可以被視爲局部變量(local variable)。
    形式參數被調用時被傳遞的是實際參數的拷貝。
  5. int i = 0;i = i++;system.out.print(i);結果爲0;
    因爲i=i++;i++是先使用再計算,所以就是i=0;
  6. static方法不能被子類覆蓋
    Father.staticMethod();或者 Father f = new son();f.staticMethod();
    這兩個語句調用的都是父類的static方法。
  7. try-catch-finally:
  • 不管有沒有異常,finally塊中的代碼是一定會執行的。
  • try或者catch中有return的時候,finally也會執行。
  • finally是在return後的表達式運算後執行的(此時沒有返回運算後的值,而是先保存起來,若finally中沒有return,則不管如何返回的都是保留的值)。所以函數返回值是在finally執行前確定的。
  • finally中有return,程序會提前退出,返回的是finally中的return而不是try或者catch中的return。
  1. simpleDateFormat是線程不安全的。
  2. java命令行:“java Test one two three”。
    Test是調用的方法,one two three纔是main函數的參數。
  3. ASCⅡ碼包含一些特殊空字符,不可打印。
  4. stream結尾都是字節流,reader和writer結尾都是字符。
  • 靜態內部類纔可以聲明靜態方法。
  • 靜態方法不可以使用非靜態變量
  • 抽象方法不可以有函數體
  1. java中“=”是賦值,“==”是判斷相等。
  2. 年老代溢出的原因可能有:循環上萬次字符串處理。創建上千萬個對象。在一段代碼中申請上百M或者上G內存。
    持久代溢出原因:動態加載大量java類而導致溢出。
  3. DriverManager.getConnection方法返回一個Connection對象,這是加載驅動之後才能進行的。
  4. 一個子類可以覆蓋父類的同步方法(synchronized修飾的)。
  5. java語言中,非靜態方法屬於對象的成員,靜態方法屬於類的成員。
  6. java反射機制主要提供了以下幾個功能:
  • 運行時判斷任意一個對象的所屬類。
  • 在運行時構造任意一個類的對象。
  • 在運行時判斷任意一個類所具有的成員變量和方法。
  • 在運行時調用任意一個對象的方法,生成動態代理。
  1. 實例方法可以直接調用本類的類方法(雖然很少這麼用,但是語法沒錯誤,有黃色警告)。
  2. 方法調用時,會創建棧幀在棧中,調用完成時程序自動出棧釋放。
  3. 包裝類和Math類都是不可以被繼承的類。
  4. jvm根據兩個方面判斷類相同:1)類的全稱。2)類加載器。
  5. 一個java源程序文件中定義幾個類和接口,則編譯後生成幾個.class字節碼文件。包括接口和內部類都有自己的.class文件。
  6. RMI(Remote Method Invocation)遠程方法調用是一種計算機之間利用遠程對象相互調用實現雙方通訊的一種通訊機制。是建立分佈式java應用程序的方便途徑。默認採用TCP/IP協議。
  7. java的兩個基本垃圾回收算法:複製算法,標記清理算法。
  • 複製算法:兩個區域A,B。初始對象在A,垃圾回收時繼續活着轉移到B,此爲新生代最常用的算法。
  • 標記清理算法(也有的叫標記清除算法):一塊區域,通過可達性分析標記可達對象。然後回收不可達對象。因爲會出現空間碎片,由此引出
  • 標記整理算法:多了碎片整理,清理出更大的內存。
  1. jdk提供的用於併發編程的同步器:Semaphore ,CyclicBarrier,CountDownLatch。
  2. socket編程中,服務端的操作(我覺得這個格式比較好看,真的不會有序裏面套有序):

①服務器初始化socket。
②與端口進行綁定(blind())。
③創建serverSocket進行監聽(listent())。
④調用阻塞(accept())等待客戶端連接。
⑤連接後讀寫操作(read(),write())。
⑥最後調用close()關閉連接。

  1. Math.round(11.5);值爲12。Math.round(-11.5);值爲-11。
    該方法取離它最近的整數,如果上下一下則取較大值。
  2. 對管道進行讀寫操作都有可能被阻塞。
    若管道爲空,則讀操作被阻塞。如管道滿了,則寫操作被阻塞。
  3. final修飾的成員變量三種賦值方式:
  • 在聲明時直接賦值。
  • 在構造器中賦值。
  • 在初始代碼塊中賦值。

好了,今天就到這裏了。爭取每天學習一點點,不知道多久會發生質變,哈哈。然後大家共勉,祝大家工作生活順順利利的吧!
全文手打不易,如果你覺得有幫到你或者有點用,別吝嗇的點個喜歡和點個關注哦~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章