像文章中說的那樣:大公司(騰訊、阿里、百度...),看重的是綜合能力(數據結構與算法,計算機網絡,操作系統,Java等) 小公司,看重的是實踐能力,項目經驗、學習中是否遇到他們開發中所遇到過的問題,面試偏向於Android裏的關鍵知識。
Android學習之路:數據結構與算法,java,安卓,計算機網絡,操作系統,後面是數據庫或是設計模式之類的
一、數據結構與算法:
推薦書籍:大話數據結構,數據結構與算法分析(java語言描述),劍指offer,進軍硅谷
推薦在線刷題網站:Leetcode(LeetCode Online Judge),Lintcod(LintCode - 主頁),牛客網(在線編程_C++Java前端經典筆試面試題庫\http://www.nowcoder.com/activity/oj)
1、買數據結構與算法分析(Java語言描述),看完
2、在Leetcode刷100道題
3、然後要分析一些常見數據結構的源碼實現(比如隊列,棧,hashmap之類的),數據結構與算法分析這本書有講一些,可以結合一些博客進行準備。
二、java
入門書籍:
Java核心技術卷一,Head first in java(如果一點面向對象的概念都沒有那就看這本)
提高書籍:
1、Java編程思想
2、 Java虛擬機:深入理解Java虛擬機
3、Java多線程:Java多線程編程核心技術,Java併發編程實踐
其實我覺得如果有一定基礎建議直接看Java編程思想,面試中的考點經常都會在這本書中有講到。當然Java虛擬機和多線程這兩塊需要再看一些專門講解的書,每一次java面試考查內容幾乎都離不開這兩塊。
總體來說java考察內容包括以下這些:(找點面試題做,正好複習其中的一些知識和學習不熟悉的知識)
1,面向對象的一些基本概念:繼承,多態之類的
2, 抽象類和接口
3, 靜態類,內部類
4, Java集合類,同步和非同步
5, Java類加載機制
6, Java內存模型和垃圾回收算法
7, 線程同步機制(volatile,synchronized,重入鎖,threadlocal),線程間通信(wait,notify)
8, 異常處理
9, 多線程同步問題,生產者消費者,讀者寫者,哲學家就餐,用java實現
10, 瞭解java中設計模式的思想,用了哪些設計模式,有什麼好處
三、Android(就看完三本書,入門書籍跟提高書籍)
入門書籍:第一行代碼。
- Google Android官方培訓課程中文版:http://hukai.me/android-training-course-in-chinese/basics/index.html#
提高書籍:Android羣英傳,Android開發藝術探索。
上面的書看好了,一般問題不大。主要問的一些問題:
1, Activity,Service,BrocastReceiver,Intent,Fragemnet,ContentProvider,這些組件的基礎知識,比如Activity兩種啓動方式,生命週期,四種啓動模式,Service則主要是:兩種啓動方式,生命週期。還有組件之間怎麼通信之類的問題。
2, Android的數據存儲方式,數據庫,sd卡,SharedPreferences 這些
3, Listview的優化,與scollview的區別
4, view狀態與重繪,view的繪製過程,view的事件分發機制,view的事件衝突處理
5, Android多線程異步機制,AsyncTask工作原理與源碼實現,Handler,Message,Looper異步實現機制與源碼分析
6, Android常見的開源框架(主要是網絡通信,圖片加載這些),瞭解怎麼使用,分析源碼
7, Oom和anr異常引發的原因,怎麼解決
8, 瞭解一些常見的圖片緩存技術
推薦書籍:計算機網絡自頂向下,tcp/ip協議詳解卷一
主要看:主要看應用層,傳輸層,網絡層,其中傳輸層最爲重要。主要的一些考察內容有:
1, TCP和UDP的區別
2, TCP的三次握手,和四次揮手,爲什麼需要三次握手,爲什麼要四次揮手(這兩個爲什麼要考慮非常清楚)
3, TCP擁塞控制算法(慢啓動,擁塞避免,快速恢復),流量控制算法,滑動窗口協議,選擇重傳。
4, TCP可靠性是怎麼保證的(通過哪些機制保證)?
5, HTTP協議報文格式,請求方法字段以及各個方法之間的區別,瞭解常見的響應狀態碼,瞭解cookie機制,瞭解WEB緩存技術(條件get方法)。
6, DNS協議的各層域名服務器,兩種查詢方式(遞歸和迭代),dns緩存
7, Udp的特點,適用場景,校驗機制
8, 從輸入一個網址到最後網頁顯示整個過程發生了什麼?
9, IP地址組成,ARR,RARP,ICMP協議,路由選擇算法
推薦書籍:《Linux鳥哥的私房菜》、《深入理解計算機系統》、《UNIX環境高級編程》、《linux環境編程》
六、數據庫
網上找一下,很多數據庫的視頻都是免費觀看的,慕課網、網易雲課堂等。
學習一門數據庫(Oracle、Mysql) 等。可能只需要記得簡單的語句就行了,然後範式、一些鎖、主鍵外鍵、索引看一看記住就可以,事務是非常重要的,必須掌握。
七、設計模式
推薦書籍:大話設計模式
基礎打牢之後再深入學習Android吧!!!
最後:強烈推薦一個面試經驗+複習總結的很好的一篇文章,上面可以找到相應的博客。
地址:www.jianshu.com/p/2e7266c2cee5