Android面試課程總結一(開源框架)

這兩年移動端發展的越來越快,在ios上特別明顯,而Android也是遭遇到了很多打擊,特別隨著初中級Android開發的逐漸飽和,也讓企業在甄選Android面試候選人時變得格外嚴格,恨不得找一位Android開發做所有的事,我在平時的工作中也是一直接觸很多候選人所以這裡想和大家說下我對於Android面試的一些看法:

1.首先對於Android基礎知識的掌握必須要通透:

我把Android基礎知識分為:四大組件Activitiy、service、廣播、內容提供者,還有fragment,當然這些知識點也不是獨立的,每個之間都有融合再一起的知識,比如Activity這個知識點把,首先我們需要掌握Activity的使用場景,比如最常見的在這個Activity中通過嵌入fragment來進行整個項目UI架構的搭建,這時候這個Activity就是整個項目的一個外殼,我們還需要了解整個Activity的生命周期,要知道在那些方法中可以做耗時操作,哪些方法是不可以做耗時操作,在掌握Activity時,我們還需要注意Context的使用,區分在哪些場景可以使用

Application context,哪些場景我們盡量使用Activity context,接下來我們還需要掌握Activity的啟動模式,知道哪些場景下使用singleTask、哪些場景下使用singTop。我們回到我們的面試,掌握好了以上Activity的幾個知識點之後,我們還應該知道如何讓Activity和其他組件進行通信,比如Service和Activity之間,因為我們在自己的項目中往往會通過啟動一個service來進行某些後台運算,當計算完成我們需要通過通知Activity來進行UI的更新,我們的Activity也可以和service進行交互來進行添加邏輯的操作,Activity和Fragment之間的通信就會更頻繁了,因為我們剛才說過現在一種比較流行的UI架構就是在一個外殼Activity中通過底部切換來進行子Fragment之間的切換顯示,我們看到就一個Activity也包括了很多知識點,當然如果我們進行擴展和延伸的話 還會有很多,比如如果對於一個繁雜的Activity進行重構,MVP、mVC模式中Activity的不同作用,在性能優化中為什麼Activity能夠造成內存泄漏,怎麼解決?會不會用常用的性能優化工具:leakcanary、systrace、traceView等,這些擴展的知識點往往都會在面試進行中,隨著面試官的思路不斷延伸出來,這時候我們應該怎麼去應對這樣的問題呢?

其實最好的辦法就是在平時積累,大家自己一定要有一個自己的筆記,這樣你才不會學到後面發現自己什麼都沒學到!

2.Android開源框架的知識學習

據我在這個行業不短的了解,現在很多公司對於開源框架的考察的比重都是越來越重,比如新浪微博關於開源框架的考察就是必須的,阿里、騰訊也都會經常考察候選人有關開源框架的問題,所以說大家對於開源框架也是需要很好的掌握,這也是我們開設這門課程的初衷,當然對於開源框架的學習也是有策略的,大家一定要謹記絕對不要深入源碼,而不能自拔,還是要根據整個框架的總體流程來進行梳理,最好在面試前自己對於在簡歷中提到的框架有一個自己的頭腦梳理,你起碼要在腦子中把這個框架的點都過一下,這裡提到了簡歷,其實很多同學都把簡歷發我給大家改,我發現在這近200份簡歷中,大家都有一個很大的問題,就是個人技能寫的太多,我真的不建議大家寫這麼多,特別熟悉、掌握、了解這些用詞都是需要謹慎的,我建議大家對於自己掌握特別熟悉的知識點才能用上掌握、還有一些最基本的知識點才可以用到掌握,如果自己在面試前還是覺得沒有太大把握的盡量用熟悉和了解,在簡歷中大家可以把自己特別熟悉的開源框架寫在前面,這樣也更容易讓面試官根據你的簡歷來問答,大家在回答的時候還是要注意一點:有些問題你有可能真的不知道,但是你最好表現出思考的過程:比如你可以這麼回答:這個框架我在項目中確實沒有用到過,但是另外一個框架retrofit我用的比較多,要在面試過程中學會引導面試官轉到你擅長的話題上!總之這是一個鬥智斗勇的過程!

3.Android系統源碼的學習

對於系統源碼我又一個最重要的建議,C++基礎不好的同學,源碼的學習到JAVA層就可以,一般也沒有哪些公司的面試會問到這麼深,如果你找的是Framework開發那就另當別論了,但是對於大多數應用層開發的同學還是去碰這部分了,因為我們畢竟是要參加面試的,面試複習的話肯定需要將就一個性價比,我們不可能有無限的時間來複習,所以要把時間用到刀刃上。系統源碼:大家可以從這幾個角度來進行複習:binder、AMS、Application啟動、Activity啟動、View繪製、SurfaceFlinger這幾個角度去複習,當然系統源碼包括很多,但是這些是問到頻率最高的幾個了!

特別是binder,他可以說是整個Android系統的核心,也是整個進程間通信的樞紐。

關於這部分的內容,我們已經有計劃在開設一門新課程,給大家分析這部分的東西

其實關於面試技巧,有太多的東西想和大家說了,以後我們會通過手記的形式給大家講一些我平時面試候選人的故事。

最後是一些感恩的話,自從在慕課網開設第一門課程以來,我不斷的收到很多應屆生和工作多年的同學通過看我的第一門面試課程獲得offer的消息,我真的非常有成就感,最近在和一位大三同學的交流中,也感受到了他對於這門課程的期望,也是督促我更快的更新課程,所以在錄製完第二門課程之後,我就要開始進行第一門課程的優化工作了,當然第二門課程如果有問題或者大家有相對於課程的建議,我還是會在後期進行課程的補錄和優化工作的,

最最最後,真心祝大家能通過自身的努力和課程的幫助提高自己的技術,同時也要找到更高的offer來回報自己!大家加油!

作者: DocMike

鏈接:imooc.com/article/22867

來源:慕課網

本文原創發佈於慕課網 ,轉載請註明出處,謝謝合作


推薦閱讀:

慕課網:Android跳槽漲薪必備:開源框架篇

滴滴 Web 移動端組件庫 cube-ui 開源

Android開發者2017年最值得關注的25個庫

慕課網:前端跳槽面試那些事兒

Android Studio 基本配置


推薦閱讀:

為什麼Android的Handler採用管道而不使用Binder?
如果你是HTC的CEO,你會怎麼拯救HTC?
理解Android中WebView相關的幾個概念
Android SpringAnimation 安卓模擬彈簧動畫

TAG:Android | 開源 | 面試 |