Java 新手入門須要關注的一些問題

聲明:本文全部列舉的問題都來源於 《編程隨想》的博客,這個博客的博主知識淵博,編程方面的一些文章質量很高,給人醍醐灌頂的感受。算法

算法和數據結構

  • 何時該用數組類型容器,何時該用鏈表型容器,如何合理的使用數據類型編程

  • 什麼是散列函數,HashMap的實現原理是什麼數組

  • 什麼是遞歸,使用遞歸實現目錄樹遍歷數據結構

  • 什麼是算法複雜度多線程

  • 是否理解空間換時間的思想函數

  • 寫一個針對整數數組的冒泡排序,性能

  • 寫一個針對整數數組的二分查找函數ui

面向對象

  • 基於接口的繼承和基於實現的繼承各有什麼優缺點線程

  • 繼承(extend implement) 有什麼缺點設計

  • 多態有什麼缺點

  • 爲何 Java 能夠多繼承interface,不能夠多繼承 class

  • 假如讓你寫一個小遊戲,如五子棋人機對戰,如何設計類結構

  • 類結構設計時,如何考慮可擴展性

編程習慣(應當避免)

  • 隨意的命名

  • 習慣於代碼的 copy & paste

  • Magic Number 滿天飛

  • 代碼耦合度太大

  • 被 GC 寵壞(資源不懂回收)

異常處理使用不當

  • 空 catch 語句塊

  • 沒有使用 finally

  • 籠統的 catch 語句塊

  • 使用函數返回值作錯誤處理

  • 不清楚 Checked Exception 和 Runtime Exception的區別

Checked Exception 表示可恢復的異常,也就是必須檢查的異常
Runtime Exception 表示不可恢復的異常

Java 虛擬機 JVM

  • 基本類型和引用類型

    • 基本類型和引用類型在內存存儲上有什麼區別

    • 這兩種類型在性能上有什麼區別

    • 這兩種類型對於 GC 有什麼區別

  • 垃圾回收機制

    • GC 是如何判斷哪些對象已經失效

    • GC 對性能有哪些影響

    • 如何經過 JVM 參數調優 GC 性能

  • 關於字符串

    • String 和 StringBuilder的區別,爲啥要設計兩種類型

  • 關於泛型

    • GP 是在編譯時仍是在運行時實現的,爲何要這麼實現

    • GP 的類型擦除機制是咋回事,有啥優缺點

    • 使用泛型容器在性能上有啥影響,爲何

  • 關於多線程

    • synchronized 關鍵字起什麼做用

    • synchronized 的做用域如何,是針對某個類仍是針對某個對象實例

    • synchronized 對性能的影響,爲何

    • volatile 關鍵字什麼用途,何時須要這個關鍵字

相關文章
相關標籤/搜索