標籤:

自學Android開發掌握基礎之後如何快速進階,需要哪些能力才能拿到大公司的offer?

本人杭州某985學校研一,之前做過底層的嵌入式開發、IOS開發,現自學Android開發近半年,java基礎一般,畢業之後希望可以進阿里、網易、滴滴等,但因為起步晚,自覺能力還很欠缺。因此,想在接下來的半年快速提高能力。

目前的情況:

(1)Android的基礎知識基本掌握。寫過一個類似於「在行」的app,基本包括了app的常用功能。自定義view、view滑動衝突處理、簡單的網路請求庫的封裝、資料庫、簡單動畫、常用開源框架的使用等都有用過,了解常見的設計模式和架構。

(2)Java基礎一般,java編程思想基本過了一遍,對多態、泛型、容器類、異常處理等有基本認識;

(3)演算法方面,看過一點Algorithms(java)這本書,只會一般的排序演算法。

下半年的計劃:

(1)Android方面:多研究底層機制,學習IPC機制、JNI和NDK編程、多進程、性能優化等。

(2)Java方面:準備多補一下java基礎,熟練java編程思想和Effective Java這兩本書。

(3)演算法方面:結合Algorithms(java)刷一刷leetcode。

(4)其他:包括資料庫、網路編程等等學習一下。

困惑:

(1)我看過阿里、網易這些公司的招聘要求,覺得對知識的深度和廣度都要求的比較高:要了解android的底層機制,又最好熟悉操作系統、framework開發等,另外還有一些我不熟悉的概念,比如H5容器、網路中間件開發、Native容器開發等等。不知道有沒有工作過的Android開發的前輩可以講一講公司最注重我們畢業生的哪些能力?或者面試官最希望看到我們哪些方面的優勢?另外,對這種學習的廣度和深度問題又如何取捨呢?

(2)現在好多app都採用的h5網頁的形式,作為一個android開發者,是否也需了解h5的設計?看過各種招聘要求,也在各技術論壇看到過各路大神,深覺自己的渺小,不知道各位前輩對我以上的學習計劃有什麼批評和建議?

(3)以後傾向於留在杭州,Android開發這一塊,除了阿里、網易、滴滴這些,還有哪些比較好的公司可以推薦嗎?

(4)明年希望拿到阿里或者網易的實習offer,現在該做哪些準備呢?開源項目?發行的APP?

以上。最近處於迷茫期,可能語言邏輯比較亂,見諒。

————————2017-10-24更新——————

嗯,拿到了很滿意的offer,更新給自己看,謹留念。

感謝各位答主的建議,很有啟發。

感謝過去一年一直努力的自己,給自己一個擁抱!


謝邀,問題逐個回答。

1. 深度和廣度:

校招很少考察深度,學生時代做的項目和知識積累,絕大部分都沒有深度,基礎紮實點就行,這裡的基礎大於你在問題里提到的所有東西。

2.面試官希望看到的優勢:

直接引用之前的回答:

  • 實習經歷(主流互聯網公司);
  • 專業成績排名(最好TOP 10%以內);
  • 專業競賽成績 (ACM等);
  • 高水平科研成果 (SCI, EI);
  • 校內技術團隊/互聯網企業俱樂部核心成員;
  • 國家級重點實驗室核心項目成員。

除此之外名校和CS強校的學生會有天然的優勢。

3. H5

如果在工程中沒有使用,沒有必要刻意去學習,你需要補齊的有很多,這個優先順序不高。

4. 學習計劃

沒必要自慚形穢,論壇上大神不少,水貨更多,更多NB的人根本不上論壇。我認為你對自己技術能力的認知和規劃都很清晰,能做到這樣不易,學習計劃沒有問題,如能堅持下去明年肯定會有好結果。

5. 杭州互聯網公司

畢業生還是建議去大公司,除了這幾家,去搜一下杭州的獨角獸吧。

6. 如何準備

按照你的學習計劃準備就行。項目經歷有就可以,其實不是特別NB的項目,做和沒做也沒什麼差別,除此之外可以參考我在第二點中提到的方向去努力。

PS: 歡迎關注我司最近的招聘,包括校招內推和社招產品經理:

騰訊校招內推社招產品經理 - MAGI的專欄 - 知乎專欄


底子和能力都還不錯,目前是研一,時間上也夠。

不敢替你制定計劃以免誤人子弟,就大概說說可能對你有幫助的一點建議。

在你已經是985研究生的前提下,可以考慮這兩塊再充實一下:1,項目經驗;2,實習經驗。

校招的話,基本上認認真真做過項目而不是demo(一般面試官會深挖你做項目的收穫,比如講解項目架構,碰到什麼困難之類的),對常規的開發流程能快速上手,也有程序員應該具備的學習能力和對技術的好奇心,性格和情商不要太極端,底子好一點,起碼計算機網路、常見的技術、常見的數據結構要熟練應用——基本上就是一個合格的校招水平。當然如果你要拿special乃至阿里星,那「牛」才是關鍵詞。

實習經驗也是一個挺大的加分點,一方面證明你通過了對應公司的篩選,一方面也是讓面試官知道你有過實戰。

對面試這塊,刷刷面經查漏補缺,你刷leetcode是一個很好選擇,可以堅持。Android基礎這塊,考察的都會比較常見,了解內部實現是亮點,這塊可以看看老羅的系列博客。把官網的traning過一遍,會有幫助。

差不多是這樣,留給其他人補充。


個人拙見:

1. 官網training過了一遍的情況下, 可以嘗試Udacity上的網課, G家自己的工程師聯合開的, 能幫你把知識點串聯梳理一遍

2. 大公司面試對基礎看的很重, 沒面過國內, 不過聽說國內演算法反而沒那麼高大上,不要走比賽路子..Android開發瓶頸很多時候並不在演算法上面, 刷刷就好了, Android的底層實現, 常見面試知識點, 一些常見的架構, 要吃的透一點, 然後要與時俱進...前兩年的經驗現在可能就不好使了

3. Github看開源代碼, 拆輪子造輪子總是一件讓自己很有成就感的事情, 多看看沒壞處, 能學很多

https://android-arsenal.com/

http://gank.io

4. 從個人目前經歷過面試過來看..沒有所謂的準備充分一說..永遠會有各種各樣的坑, 相信自己, 邊學邊面, 看看面經, 面試者水平如何面試官能看得出來, 表現出你的培養潛力和工作能力即可, 面試如相親, 知識水平只是其中的一個方面而已


GitHub - ZQiang94/Andriod-collect-blogs: 收集Android相關blog


我是去年剛校招進來的,今年七月剛入職。校招感覺對知識結構要求挺高,主要是網路(tcp,http),常見演算法(劍指offer必看,有時間刷刷leetcodr),和Android。Android這塊主要看三個方面吧,原理的把握,應用層的實踐和前沿技術的了解。原理深入的比如binder不一定強求(c++層面)但是Android啟動流程要熟悉吧,經典的源碼分析,如老生常談的handler,asynctask內部線程池,串列並行等等,應用層要熟悉自定義view,動畫等,再加上簡單的性能優化(強推胡凱的性能優化系列)基本應付校招是夠了,時間夠的話看看前沿技術如很火的插件化技術方案和大概原理,還有自己項目使用到的輪子一定要弄清楚內部實現;面試官往往喜歡針對你的回答一路深挖,盡量引導面試官去問自己懂的問題,你懂的


謝邀~

為何邀請我這個三本本科渣渣

其實在讀時可以多參加很多大公司的實習機會,學習很多東西,實習時不要在意薪資,主要是學習東西

導師有人脈的話你可以走走夜路,多去幾次導師家裡,師兄師姐有進BAT的,可以試著要個內推

最主要的還是提升自己的技術深度以及知識面廣度,能成「全棧」最好,盡量多了解,多參與項目

以上,一個渣渣三本本科的見解


安卓小菜鳥來一答。

作為安卓自學者,走了很多彎路,買了很多書,去年七月買了第一本安卓瘋狂??,是垃圾中的戰鬥機,還號稱各個平台銷量第一,不知道怎麼好意思說的,我看到了第十一張,11月買了第二本,深入理解安卓,我是一次性買了三本,期間自學了下c++,這本書看的是暈暈乎乎的.第一次接觸源碼,是囫圇吞棗走馬觀花的看了一編,其間很多東西都不是很理解,只是死記硬背看了七八章.過完年聽說第一行代碼不錯,一個月看完了,然後看老羅的源碼情景分析電子書,難度有點大,這本書很厚裡面講解的很細,以置於我根本看不到我想看到的,看一章磨掉我的耐心,看到LOG日誌那張我實在看不下去了開始反思應該應該找點簡單的看看,然後去看安卓編程權威指南,看了一大半多,聽說安卓藝術開發探索不錯,大致看了六七章.

正當我一籌莫展,找不到學習framework方向的時候,無意中我看到了安卓框架揭秘,韓國人寫的(這本書真的不錯,強烈推薦).發現裡面有關於Camera的分析,才拿起來看的。但我又有強迫症,然後我就從頭開始看了起來,還下好並編譯了源碼,看著看著發現以前在看深入理解安卓1那些不懂的概念和代碼都大概能看懂了。裡面講解binder的章節佔了很大一步分,從linux內核到驅動,到linux應用(也就是系統運行庫層),再到上層講解的都非透徹,讓我對rpc層的動作,ipc的通信協議,和驅動還有內核的調度有了清晰的認識。雖然給的例子都很簡單,但知道了原理,以後去分析問題就有了方向。

下面說下自己的看法,看了很多公司都要求ams,wms,pms很多系統服務,做系統的公司應該多一點。我一直想學會這些系統服務,但是不知道該如何下手,看大神的博客又看不下去.又不想看,看不懂是一,還有不能全面的學習,因為畢竟不是一個層次的,他們的積累當然比我們多的多,怎麼能通過一篇博客學會呢.

在碎片化的現在,知識的學習太散了,所以我就一直想通過看書來系統的學習,要學會上面的服務,binder是重中之中,知道了這個你才能知道跨進程調用方法是怎麼調用的,要知道服務駐留的是system_server進程,而system_server又是由zygote進程fork出的第一個java進程.而服務的管理是由servicemanager,服務的註冊查詢都要經過它.jni是走向系統的基礎,所以我向你推薦這本書,裡面有詳細的解釋.

我現在只是剛剛準備去搞懂這些服務,雖然我還不懂,但有了以上知識的鋪墊,我感覺下一本應該不會太艱難,準備下一本看安卓內核剖析.

鑒於自身水平有限,如果有說錯的地方,深感抱歉.


為什麼要做碼農


研一就想著找工作的事情了,這也太著急了。先按照你的計劃好好執行吧,明年這個時候應該有很大的提高。


推薦閱讀:

能否實現一種中間件將 iOS、Android、Windows Phone 7 上任意平台開發的軟體在其他平台也能運行?
鬥魚,熊貓APP 這類APP用到了哪些視頻,音頻方面的框架和技術?
簡訊驗證碼API哪家比較好?
自學 Android 什麼程度可以找工作?

TAG:Android開發 |