公司的需求
不同的公司,不同的需求現在的市場上,公司很多,大致上可以歸納為兩個大類:大公司和小公司,他們招聘時對人才的需求也不一樣。
小公司
小公司他們一般急需的是能夠投入工作的人才,因為公司規模小,急需盈利擴張,需要投入工作生產,所以他們更加注重實踐能力。一般情況,小公司面試比較集中安卓開發這一塊,他們會比較注意你之前有沒有做過類似的項目,或者是相似的工作經驗,以及有沒有遇到過他們所遇到的某些問題。準備這些公司的面試,除了一些基本基礎知識點還需要關注安卓開發實際中經常遇到的一些問題,比如緩存,常見的開源框架問題等。
大公司
相對于那些才起步,或者起步不久的小公司,大公司已經有了比較深厚的資源積累,體系制度也比較完善了,他們更注重人才的綜合能力還有未來發展潛力。
在面試中,大公司會提的差不多就是數據結構與算法,計算機網絡,操作系統,Java這些。在這些點中,數據結構與算法應該是一個分水嶺,這個問題的準備需要長時間的積累,臨時抱佛腳可能有些困難,是騾子是馬,拉出來遛一遛就知道了,是不是高手一試就知。
所以,很多公司都執于考算法,比如百度、美團,淘寶這些公司。整個面試下來可能讓你手寫5個算法題以上。這點主要是想告訴大家,這個門檻差不多決定了你最終所找工作的水準,所以我都會建議每一個找程序員相關工作的人,盡早準備這方面。比如多刷一些leetcode或是其他類似的題。
然后在剩下的幾塊知識中,我只想說你可以不用全部都懂,但是你必須要在某一塊知識點是有深入研究的,能夠回答面試官4到5個追加問題,“T”型知識結構的人才很吃香。如果所有知識點都只能答上一到兩個,面試官會覺得你的水平就是這樣了,還會覺得你沒有探究精神。這個判定結果是很恐怖的,因為一個沒有探究精神的人是做不了好的程序員的。
我覺得面試安卓的知識點按照重要程度可以做一個這樣的排序:
1.數據結構與算法
2.java ,Android
3.計算機網絡
4.操作系統
5.數據庫或是設計模式之類
java這一塊,比較重要的是多線程同步異步,java虛擬機內存回收,容器,面向對象這些知識點。就單單是多線程和虛擬機都可以看好幾本專門講解的書了,其他知識點就多啃啃java編程思想,遇到不懂在多翻翻博客加深理解。
Android這一塊,異步機制,view的繪制,自定義控件,四大組件都非常重要。不管是android或是java都最好看一些源碼,java可以看一些容器的源碼,android可以看handler,looper,message等異步通信的源碼或是一些開源框架的源碼,會看源碼絕對是加分項。
計算機網絡可以注重看上面幾層,傳輸層注重研究。一般來說,前面這幾點掌握好了,足以聊好幾輪面試,一般面試官你都可以引導他去聊一些你擅長的知識點。后面幾塊知識點,你可以先掌握一些比較重要的,不一定每次面試都會遇到,但是也得準備。
##上面是提供一些大概的思路,下面具體說一下每一塊的知識點
一、數據結構與算法
推薦書籍:大話數據結構,數據結構與算法分析(java語言描述),劍指offer,進軍硅谷。
推薦在線刷題網站:Leetcode
推薦方案:主要做三件事
1, 先看一遍大話數據結構,熟悉一些基本概念,大話這本書只講了一些基本的數據結構,像是B樹,B+樹,紅黑樹需要自己看一些博客或是網站,推薦一個講解算法的網站-七月算法,另外海量數據處理也是一個經常考的專題,它結合了數據結構和操作系統的一些知識,這個需要進行針對性準備。
2,然后開始刷題,最推薦的肯定是leetcode,刷題建議按照標簽進行刷題(比如隊列,棧,哈希表),刷題從易到難,最好能夠刷一百題左右,如果一天一題,至少要三個月以上,所以這個耗時比較長,要從比較早開始準備。進軍硅谷這本書有按照專題進行編排,基本上的題目來自leetcode,可以作為一個參考。
2, 然后要分析一些常見數據結構的源碼實現(比如隊列,棧,hashmap之類的),數據結構與算法分析這本書有講一些,可以結合一些博客進行準備。
學習路線+知識梳理
花了很長時間,就為了整理這張詳細的知識路線腦圖。當然由于時間有限、能力也都有限,畢竟嵌入式全體系實在太龐大了,包括我那做嵌入式的同學,也不可能什么都懂,有些東西可能沒覆蓋到,不足之處,還希望小伙伴們一起交流補充,一起完善進步。
本文在開源項目:Android開發不會這些?如何面試拿高薪 中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…
0ZF) 中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…
這次就分享到這里吧,下篇見。