每到「金三銀四」的季節,總人不少人去尋找名叫「面經」同樣的東西,其實就是一個個具體的題目,而後臨陣磨槍,去「背」答案,若是一直是這樣的話,我相信你的能力不會有任何提升,即便工做三年五年也達不到高級工程師的水平,事實證實這類「程序員」佔大多數。並且我認爲一個「面經」真正有價值的內容是面試前你是如何學習的,面試中面對不會的題目你是如何回答的,以及面試後的你的感覺和總結,而不是冷冰冰的羅列題目。
最近兩個月,由於其餘緣由,辭了職,目前已經創業並順利度過了十來天,感覺仍是很複雜,同時也但願能夠給同齡工做經驗的夥伴們一點點幫助和啓發。html
更多面試內容,面試專題,flutter視頻 ,音視頻從0到高手開發。視頻教程
關注GitHub:https://github.com/xiangjiana/Android-MS
免費獲取面試PDF合集java
一份簡歷整體能夠分爲 6個 模塊:基本信息,我的簡介,技能列表,工做經歷,項目經驗,教育狀況,其餘。這個順序能讓 HR 從淺到深快速瞭解求職者的優點與技能。學校信息若是是重點學校或者萌新工程師,能夠提早並放在基本信息以後。
git
姓名:XXX
性別:X
年齡:XX
學歷:本科
工做經驗:8年開發經驗
居住地:XXXX程序員
求職意向:Android軟件開發工程師
目前狀態:離職github
2012/10– 2014/05面試
xx網絡科技有限公司 | Android軟件開發工程師算法
2014/11– 2016/05數據庫
xxxxxx網絡科技有限公司 | Android軟件開發工程師設計模式
2016/06– 2019/02數組
xxx網絡科技有限公司 | Android軟件開發工程師兼後臺開發兼平面設計
2019/02– 2020/02
湖南XXXXXXXXXXXXX | AndroidXXXXXXXXXXXX
1.熟練Android的五大組件,並瞭解最新組件LifeCycle,以及Jatpack組件庫的部分API。
2.熟練掌握性能優化技能,能在NDK層面和框架層面進行深度優化,並能使用第三方工具進行性能優化。
3.熟練掌握Android動態加載技術,包括掌握動態加載技術框架網易雲換膚以及手寫插件化框架。
4.掌握OkHttp,Retrofit,Glide,ButterKnife,IOC,ARouter,AndFix,EventBus,LiveDataBus等一線互聯網框架和線下行業最流行的框架的核心原理以及可以手寫打造簡易版。
5.可以熟練使用MVC,MVP,MVVM等架構模式進行項目開發
6.熟練掌握第三方框架的使用,好比微信相關API,支付寶相關API,推送相關API,shareSDK,銀聯API等。
7.熟練掌握java的24種設計模式,Hook技術,註解,註解處理器等並能熟練運用.
8.深刻了解個Android系統源碼,瞭解Handler,Message,Binder,AIDL,AMS,PMS,Http,BroadcastReceiver等底層API,並對虛擬機的原理以及特性有必定了解。
9.熟悉Android Studio、Visual Studio 201三、Visual Studio Code、Eclipse等開發工具。
10.掌握OkHttp,Retrofit,Glide,ButterKnife,EventBus等一線互聯網框架和線下行業最流行的框架
開發項目一: xxxxxx 名稱
項目描述: xxxxxxxxxxxxxxx讓用戶能以優惠的價格購買到商品。
篇幅加大 3-5行
若是有項目上線地址 貼個連接
項目職責:
1:需求分析: 技術文檔編寫,功能開發,測試,框架搭建,技術選型
2.技術難點攻克: 架構搭建 權限庫封裝,EventBus 數據通訊封裝,公共標題封裝,經常使用工具類添加,litepal數據庫集成等
3.技術要點:
一、使用Rxjava2+retrofit2+MVP架構,利用Gson進行Json數據解析
二、經過 bsdiff和bspatch 開源庫實現增量更新。
三、WebView的加載html頁面與js的交互處理和頁面跳轉處理。
四、使用litepal數據庫進行數據存儲操做功能實現。
五、百度地圖導航定位集成、友盟三方登陸分享的集成和三方支付集成。
六、集成Zxing的二維碼掃描預定取貨、預定維修服務工位和長按識別二維等功能。
七、集成MPAndroidChart開源庫實現數據統計圖表,數據刷新等功能。
備註: 我在這個項目中主要負責的是xxxxxxxx,平時也喜歡跟其餘開發人員進行溝通,因此開發效率很高 xxxxxxxxxxxxxxxxx 不要出現主觀意識太強的東西
開發項目二: xxxxxxxxx
項目職責: 參與項目需求分析及評估,制定項目計劃,框架搭建;根據項目需求進行分析,UI部分實現優化,協同測試人員測試,修改項目bug,完善項目。
項目描述: xxxxxxxxxxxxxxx
技術要點:
一、配合Rxjava2+retrofit2+Okhttp做爲項目的數據傳送和處理
二、ViewPager和Fragment結合實現側滑與圖片輪播效果
三、實現app皮膚換膚功能
四、項目使用MVP模式做架構
五、使用MPChart安卓框架圖庫繪製折線圖和柱狀圖
開發項目三: xxxxxxx
項目職責: 負責項目框架搭建,不斷重構優化代碼,保證代碼健壯性、可讀性、易維護性;協同測試人員測試,修改項目bug,app的版本開發迭代。
項目描述: xxxxxxxxxxxxx。
技術要點:
一、配合Rxjava2+retrofit2+Okhttp做爲項目的數據傳送和處理
二、音視頻錄製和圖片壓縮上傳處理
三、使用GreenDao數據庫實現數據操做
四、集成百度地圖實現用戶定位、周邊檢索、地址反編譯、路線規劃、覆蓋物顯示等功能
五、使用BaseRecyclerViewAdapterHelper 實現RecyclerView列表展現和多佈局顯示的實現
六、實現微信登錄、分享等功能和銀行卡提現功能
教育經歷
xxxxxxxxxx |xxxxxxxxx院 | xxxxxx | 2009/09至2012/07
自我評價
本人以前一直從事軟件開發工做,於xxxxxxxxxxxx,多是由於我的在以前的工做當中就喜歡分享技術的緣故吧,在xxxxxxxxxxx項,因而沉下心來繼續在這個神聖的職業中走下去。以前xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。在xxxxxxxxxxx。雖然說這些經歷很平凡,可是這也是我在這個行業可以繼續走下去的動力之一。個人我的理念是:給公司創造價值,幫助別人創造更高的價值,實現本身的價值。
面試前必定要系統的複習各個模塊的知識點,不要匆忙的出去面試,尤爲是對於大公司來講,面試機會原本就不易,不要由於本身沒有複習準備好,而白白的喪失了機會,尤爲是對於忽然被裁,事前沒有充分準備的同窗來講,更應該注意這一點。
對於Android應用開發而言,須要複習的並非不少,無非是都熟知的那幾大類:Java 基礎,JVM,Java 併發,Android 源碼,Android 第三方框架,Android 性能優化,數據結構與算法,再加上一些網絡知識等等
另外我在補充兩個點,咱們在複習具體的題目或知識點時,還能夠着重去百度查找具體公司的面試題目,由於不少面試官都會習慣性的問同一問題或同類問題,這樣更有針對性。再者就是本身簡歷上所描述的內容必定要會,包括具體的知識點,也包括你的項目經驗,都同等重要。
當本身感受複習的差很少了,先不要投遞和預定大公司或者本身嚮往的公司,先去幾家小公司,或者本身確定不會去的公司面試,這樣即便沒有經過面試也不算是浪費了機會,還能順便幫助本身更好的查漏補缺,若是經過了還能夠更加本身後面面試的信心。雖然這樣的行爲「欺騙」了一些公司的hr同窗,但面對本身求職的利益來講,只能抱歉了。
學生時代的咱們,經常聽到的一個詞就是「學習方法」,它看不見摸不着,卻經常體如今咱們的考試成績上。等到畢業,真正工做的時候,這個詞彷佛離咱們愈來愈遠,不變的是咱們依然只是在不停的作計劃,這一年要讀幾本書,這一月要學會哪些知識點,甚至以天來量化,但不多去思考爲何去學習這些,更重要的是如何去學習。
「系統」很好理解,也就是咱們在複習知識點時必定要全面,只有全面了,咱們的基礎才能夠打的牢,這個基礎很重要,基礎有了才能夠更好的進行思考和總結。
好比咱們常常會使用以及研究一些 Android 第三方的框架,如 OKHttp ,咱們要從三個方面去全面理解它
1,利用 okhttp 實現基本的網絡訪問功能,包括基本的數據請求,表單提交,文件上傳,文件斷點下載,https的設置等等。
2,深刻研究 okhttp 源碼,熟悉 okhttp 中的調用過程,攔截器原理,緩存原理以及其中涉及的設計模式,並能夠自定義攔截器實現特殊的功能,如日誌打印等等。
3,在研究 okhttp 緩存原理以前,得首先熟悉 http 緩存的相關字段以及在設置 https 時,也要全面複習 https 的相關原理。
經過以上思路的複習,慢慢地你的知識體系就會建成,基礎也就日漸牢固
我認爲思考和下面的總結都是比較困難的,由於這和每一個人的基礎和視野有很大的關係,基礎差、視野小的工程師必定和基礎牢固、見識廣範的人所思考的深度和方向不同,就拿我這種中級工程師來講,我面對 okhttp 所能想到的方向有:它與 retrofit 是什麼關係;okhttp 與其餘網絡框架的比較;由於涉及到網絡相關,還可能再延伸到網絡優化方向等等。可是無論你所思考的方向是什麼,只有有所思考就是進步,而不是單純的停留在 okhttp 框架的自己。
這裏的總結是在上一步思考的基礎之上進行的,並不僅僅是把本身所學習過的知識點所有羅列出來就能夠了。由於每一個知識點在學習的過程當中看似是獨立的,實際上知識點之間大都是有關聯的,咱們要學會去思考並總結各個有關聯的知識點,而後盡本身所能深挖出更多的知識點,使之串聯,後面我會利用實際的面試題再來更加清楚的解釋這一點。
技術二面:
算法: 二叉樹的右視圖。
算法: 單鏈表判斷有無環。
在頭條的面試過程當中,印象最深入的一個問題是對MVC、MVP、MVVM的理解,以及MVVM的實現方式有哪些。
注: 我認爲這道題目很重要,由於經過這道題目的考察,能夠看出一名程序員是否在程序設計上有過本身的思考,而不是在工做中簡單的「搬磚」。
在Android架構設計中,大致上只有三種設計,組件化,插件化,再加上MVVM(或mvp、mvc),若是再可以熟練都應用各類設計模式,理解設計模式的六大原則,那麼你的代碼寫的必定很漂亮。
數組類、鏈表類、樹類,位運算類,大數處理,簡單的動態規劃,特殊的數據結構,如map,set
若是對算法並非那麼感興趣,僅僅想要應付面試而言,算法其實並不可怕,你們都知道頭條多是面試算法最多的一家公司了吧,即便這樣,頭條算法面試中的題目也都不難,無非是上面中的分類,數組,鏈表,以及二叉樹的操做,最多加一些簡單的動態規劃題目~
例如中序遍歷二叉樹,使用非遞歸方式,就拿這道題而言,很是基本,也沒有難度,但願對算法面試畏懼的同窗提升信心,認真學習數據結構就能夠了~(另外在補充一點,對於校招而言,由於有一個線上筆試環節,筆試中的算法平均難度稍微高於面試中的~)
基礎很差的夥伴在刷題的時候必定要注意一下幾點:
以上操做都應在數據結構學的比較牢固的基礎上進行才更有意義,所謂磨刀不誤砍柴功嘛
網易的兩輪面試中沒有提問一個具體的知識點,這點有的意外,因此印象很深入。
一面全程問的是個人項目經歷,重難點是什麼以及解決方案,在前面的「面試風格」那部分也提到過,感覺也在前面說了,總結一句話就是:平時工做中必定要多積累項目中的重難點。雖然一面的最後也問了道算法題,但很簡單,就不提了。
二面面試官我感受是一名技術總監,由於全程問的是開放性問題,其中問的最多的就是關於flutter的相關問題
個人面試經驗分享可能不會去羅列太多的具體題目,由於我依然認爲面試經驗中最寶貴的不是那一個個具體的題目或者具體的答案,而是結束面試時,那一刻你的感覺以及多天以後你的回味~(固然確定會有不少小夥伴想要去看具體的面試題目
這裏附上騰訊、頭條、阿里、美團等的面試題,把技術點整理成了視頻和PDF(實際上比預期多花了很多精力),包含知識脈絡 + 諸多細節,因爲篇幅有限,這裏以圖片的形式給你們展現一部分。
相信它會給你們帶來不少收穫:
更多面試內容,面試專題,flutter視頻 全套,音視頻從0到高手開發。
關注 GitHub: https://github.com/xiangjiana/Android-MS
免費獲取面試PDF合集