(我已經開始着手整理這些知識點,整理好的連接放在問題後面) html
基礎這東西,各個公司都很看重,尤爲是BAT這種大公司,他們看中人的潛力,他們捨得花精力去培養,因此基礎是重中之重。以前不少人問我,項目經歷少怎麼辦,那就去打牢基礎,當你的基礎好的髮指的時候,你的其餘東西都不重要了。
基礎無外乎幾部分:語言(C/C++或java),操做系統,TCP/IP,數據結構與算法,再加上你所熟悉的領域。這裏面其實有不少東西,各大面試寶典都有列舉。
在這隻列舉了Android客戶端所須要的和我面試中所遇到的知識點,儘可能作到全面,若是你掌握瞭如下知識點,去面android客戶端應該駕輕就熟。
java
J2SE基礎 android
1. 九種基本數據類型的大小,以及他們的封裝類。http://my.oschina.net/Bruce370/blog/511431 程序員
2. Switch可否用string作參數?http://my.oschina.net/Bruce370/blog/511435 面試
3. equals與==的區別。http://my.oschina.net/Bruce370/blog/511698 算法
4. Object有哪些公用方法?http://my.oschina.net/Bruce370/blog/511700 編程
5. Java的四種引用,強弱軟虛,用到的場景。 http://my.oschina.net/Bruce370/blog/511707 設計模式
6. Hashcode的做用。http://my.oschina.net/Bruce370/blog/536979 數組
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》《編程之美》
Android
1. Activity與Fragment的生命週期。 緩存
http://www.cnblogs.com/hibraincol/archive/2012/03/06/2382120.html
http://www.codeceo.com/article/android-fragment-life.html
2. Acitivty的四中啓動模式與特色。
3. Activity緩存方法。
4. Service的生命週期,兩種啓動方法,有什麼區別。
5. 怎麼保證service不被殺死。
6. 廣播的兩種註冊方法,有什麼區別。
7. Intent的使用方法,能夠傳遞哪些數據類型。
8. ContentProvider使用方法。
9. Thread、AsycTask、IntentService的使用場景與特色。
10. 五種佈局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 各自特色及繪製效率對比。
11. Android的數據存儲形式。
12. Sqlite的基本操做。
13. Android中的MVC模式。
14. Merge、ViewStub的做用。
15. Json有什麼優劣勢。http://www.lingdublog.com/134.html
16. 動畫有哪兩類,各有什麼特色?
17. Handler、Loop消息隊列模型,各部分的做用。
18. 怎樣退出終止App。 http://my.oschina.net/Bruce370/blog/536993
19. Asset目錄與res目錄的區別。
20. Android怎麼加速啓動Activity。
21. Android內存優化方法:ListView優化,及時關閉資源,圖片緩存等等。
22. Android中弱引用與軟引用的應用場景。http://blog.csdn.net/arui319/article/details/8489451 (to be continued)
23. Bitmap的四中屬性,與每種屬性隊形的大小。
24. View與View Group分類。自定義View過程:onMeasure()、onLayout()、onDraw()。
25. Touch事件分發機制。
26. Android長鏈接,怎麼處理心跳機制。
27. Zygote的啓動過程。
28. Android IPC:Binder原理。http://my.oschina.net/Bruce370/blog/536946
29. 你用過什麼框架,是否看過源碼,是否知道底層原理。
30. Android5.0、6.0新特性。
Android的話,可能是一些項目中的實踐,使用多了,天然就知道了,還有就是多逛逛一些名人的博客,書上能講到的東西很少。另外android底層的東西,有時間的話能夠多瞭解一下,加分項。
推薦書籍:《瘋狂android講義》《深刻理解android》
其餘綜合性的書籍也須要閱讀,推薦:《程序員面試筆試寶典》《程序員面試金典》。另外「牛客網www.newcoder.com」是個好地方,裏面有各類面試筆試題,也有本身在線的OJ,強烈推薦,還有左程雲老師的算法視屏課(已經出書了),反正我看了以後對我幫助很大(這不是植入廣告)。
引用自:http://www.nowcoder.com/discuss/3043?type=2&order=0&pos=2&page=2