1. 程式人生 > >java學習知識點列表

java學習知識點列表

J2SE基礎


1. 九種基本資料型別的大小,以及他們的封裝類。


2. Switch能否用string做引數?


3. equals與==的區別。


4. Object有哪些公用方法?


5. Java的四種引用,強弱軟虛,用到的場景。


6. Hashcode的作用。


7. ArrayList、LinkedList、Vector的區別。


8. String、StringBuffer與StringBuilder的區別。


9. Map、Set、List、Queue、Stack的特點與用法。


10. HashMap和HashTable的區別。


11. HashMap和ConcurrentHashMap的區別,HashMap的底層原始碼。


12. TreeMap、HashMap、LindedHashMap的區別。


13. Collection包結構,與Collections的區別。


14. try catch finally,try裡有return,finally還執行麼?


15. Excption與Error包結構。OOM你遇到過哪些情況,SOF你遇到過哪些情況。


16. Java面向物件的三個特徵與含義。


17. Override和Overload的含義去區別。


18. Interface與abstract類的區別。


19. Static class 與non static class的區別。


20. java多型的實現原理。


21. 實現多執行緒的兩種方法:Thread與Runable。


22. 執行緒同步的方法:sychronized、lock、reentrantLock等。


23. 鎖的等級:方法鎖、物件鎖、類鎖。


24. 寫出生產者消費者模式。


25. ThreadLocal的設計理念與作用。


26. ThreadPool用法與優勢。


27. Concurrent包裡的其他東西:ArrayBlockingQueue、CountDownLatch等等。


28. wait()和sleep()的區別。


29. foreach與正常for迴圈效率對比。


30. Java IO與NIO。


31. 反射的作用於原理。


32. 泛型常用特點,List<String>能否轉為List<Object>。


33. 解析XML的幾種方式的原理與特點:DOM、SAX、PULL。


34. Java與C++對比。


35. Java1.7與1.8新特性。


36. 設計模式:單例、工廠、介面卡、責任鏈、觀察者等等。


37. JNI的使用。


Java裡有很多很雜的東西,有時候需要你閱讀原始碼,大多數可能書裡面講的不是太清楚,需要你在網上尋找答案。


推薦書籍:《java核心技術卷I》《Thinking in java》《java併發程式設計》《effictive java》《大話設計模式》


JVM


1. 記憶體模型以及分割槽,需要詳細到每個區放什麼。


2. 堆裡面的分割槽:Eden,survival from to,老年代,各自的特點。


3. 物件建立方法,物件的記憶體分配,物件的訪問定位。


4. GC的兩種判定方法:引用計數與引用鏈。


5. GC的三種收集方法:標記清除、標記整理、複製演算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?


6. GC收集器有哪些?CMS收集器與G1收集器的特點。


7. Minor GC與Full GC分別在什麼時候發生?


8. 幾種常用的記憶體除錯工具:jmap、jstack、jconsole。


9. 類載入的五個過程:載入、驗證、準備、解析、初始化。


10. 雙親委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。


11. 分派:靜態分派與動態分派。


JVM過去過來就問了這麼些問題,沒怎麼變,記憶體模型和GC演算法這塊問得比較多,可以在網上多找幾篇部落格來看看。


推薦書籍:《深入理解java虛擬機器》


作業系統


1. 程序和執行緒的區別。


2. 死鎖的必要條件,怎麼處理死鎖。


3. Window記憶體管理方式:段儲存,頁儲存,段頁儲存。


4. 程序的幾種狀態。


5. IPC幾種通訊方式。


6. 什麼是虛擬記憶體。


7. 虛擬地址、邏輯地址、線性地址、實體地址的區別。


因為是做android的這一塊問得比較少一點,還有可能上我簡歷上沒有寫作業系統的原因。


推薦書籍:《深入理解現代作業系統》


TCP/IP


1. OSI與TCP/IP各層的結構與功能,都有哪些協議。


2. TCP與UDP的區別。


3. TCP報文結構。


4. TCP的三次握手與四次揮手過程,各個狀態名稱與含義,TIMEWAIT的作用。


5. TCP擁塞控制。


6. TCP滑動視窗與回退N針協議。


7. Http的報文結構。


8. Http的狀態碼含義。


9. Http request的幾種型別。


10. Http1.1和Http1.0的區別


11. Http怎麼處理長連線。


12. Cookie與Session的作用於原理。


13. 電腦上訪問一個網頁,整個過程是怎麼樣的:DNS、HTTP、TCP、OSPF、IP、ARP。


14. Ping的整個過程。ICMP報文是什麼。


15. C/S模式下使用socket通訊,幾個關鍵函式。


16. IP地址分類。


17. 路由器與交換機區別。


網路其實大體分為兩塊,一個TCP協議,一個HTTP協議,只要把這兩塊以及相關協議搞清楚,一般問題不大。


推薦書籍:《TCP/IP協議族》


資料結構與演算法


1. 連結串列與陣列。


2. 佇列和棧,出棧與入棧。


3. 連結串列的刪除、插入、反向。


4. 字串操作。


5. Hash表的hash函式,衝突解決方法有哪些。


6. 各種排序:冒泡、選擇、插入、希爾、歸併、快排、堆排、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是否穩定。


7. 快排的partition函式與歸併的Merge函式。


8. 對冒泡與快排的改進。


9. 二分查詢,與變種二分查詢。


10. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹。


11. 二叉樹的前中後續遍歷:遞迴與非遞迴寫法,層序遍歷演算法。


12. 圖的BFS與DFS演算法,最小生成樹prim演算法與最短路徑Dijkstra演算法。


13. KMP演算法。


14. 排列組合問題。


15. 動態規劃、貪心演算法、分治演算法。(一般不會問到)


16. 大資料處理:類似10億條資料找出最大的1000個數………等等


演算法的話其實是個重點,因為最後都是要你寫程式碼,所以演算法還是需要花不少時間準備,這裡有太多演算法題,寫不全,我的建議是沒事多在OJ上刷刷題(牛客網、leetcode等),劍指offer上的演算法要能理解並自己寫出來,程式設計之美也推薦看一看。


推薦書籍:《大話資料結構》《劍指offer》《程式設計之美》