本人今年專科畢業了,本想畢業之後做個簡單完整的APP會好找工作一些,現在已經做好並且上架到了百度手機助手上面,如果有興趣的朋友可以去搜索曉天天氣就可以去查到,不過做好之後才發現找工作還是很難啊…
都好幾天了投出去好幾份簡歷,一點反應沒有…
看到網上都是找好幾年經歷的高級工程師…
心累啊…
有小夥伴發帖感慨工作不好找,該如何準備Android面試的,我也想談談我最近的一些想法和計劃,大家一起討論。
整體分爲以下兩個方面:
正文
自我介紹 & 項目經驗
這個是第一個要準備的東西,面試多幾次,慢慢完善就好,重要的是 有條理。可以從下面幾點入手,關鍵是第二和第三點:
項目經驗這塊因人而異,把覺得做的有亮點的東西挑出來,從四個方面來準備:
項目經驗和知識點 其實是一個雙向的過程,要 試圖去找到它們之間的聯繫:
一定要準備,很重要! 問題涉及到知識點也要都弄清楚。
平時項目可能比較忙,遇到問題急着解決。但是要學着先把問題先記錄下來,之後再按下面的步驟進行總結,有條理地進行闡述:
很多人準備面試的時候,大多數就會這樣的,打開百度,輸入 「Android 面試題」,找幾個多的開始看。
這雖然看起來很自然,但是並不是一種 健康的方式,面試題的作用應當是查缺補漏,上學的時候也不是直接發習題冊然後對着答案學習吧?
知乎上有個問題,叫做 如何高效學習,裏面有一個回答我覺得很符合我自己的觀點,就是 建立起自己的知識體系,建立知識體系的目的在於:
面試題的全部內容(可私信我免費領取答案)領取方式:點贊+關注+簡信【面試】即可領取(一定要簡信【面試】)附加安卓開發的資料(面試資源與經驗總結,BAT內推,高級UI、性能優化、NDK、混合式開發全方 面的 Android高級實踐技術講解以及在線答疑等。)
Java 基礎知識
面向對象的基本思想
Object類相關:Object類的幾個關鍵函數、String涉及到的常量池概念,序列化 & 反序列化。
重要關鍵字:final、static。
內部類:內部類的分類、應用場景、內部類編譯成class後是怎麼樣的。
抽象類 & 接口:區別、應用場景。
編碼:編碼的目的、分類。
異常:異常體系、自定義異常。
註解:註解的基本概念、分類、編譯時註解 & 運行時註解。
容器:重要容器的內部實現、容器間的對比。
內存模型。
垃圾回收。
類加載的過程。
泛型:分類、通配符 & 上下邊界、泛型擦除。
反射:使用。
Android 基礎知識
Dalvik、Art虛擬機
Activity:生命週期、launchMode。
Fragment:生命週期、懶加載、兩種Adapter之間的區別。
BroadcastReceiver:基本概念、廣播分類、權限。
Service:生命週期、onStartCommand的返回值、startService和bindService的區別、相同進程 & 不同進程的交互、IntentService實現原理。
重要的工具類 & 源碼實現:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。
RecyclerView:緩存原理、和ListView的對比、Adapter如何適配多種layout。
存儲:數據庫升級 & 優化、ContentProvider,SharePreference。
SDK版本升級的兼容問題。
Android的權限管理機制。
圖片
Bitmap相關:Bitmap的大小計算、質量、inJustDecodeBounds、inBitmap。
幾種圖片格式的對比、壓縮。
大圖加載:BitmapRegionDecoder
算法
別無捷徑,刷題,但是刷題的時候,要按照題的類型去總結。
開源框架
RxJava:操作符的應用場景、重點操作符的內部實現、和RxJava的對比。
Glide:流程、緩存相關的實現。
Retrofit:流程、動態代理 & 註解解析。
OkHttp:流程、隊列實現、緩存實現。
性能
性能優化技巧:啓動速度優化、佈局優化、內存優化、電量優化、APK大小優化、列表滑動優化。
性能優化工具:TraceView、Systrace、調試GPU過度繪製 & GPU呈現模式分析、Hierarchy Viewer、MAT、Memory Monitor & Heap Viewer & Allocation Tracker、LeakCanary、Lint。
ANR:ANR原理 & 源碼分析、舉一個處理ANR的例子。
性能實踐:解決過的性能問題,從 遇到問題、分析問題、解決問題、結果 四個點進行闡述。
View
繪製流程:measure、layout、draw三個關鍵流程。
事件分發:事件分發的原理、處理過的滑動衝突問題。
自定義View:Canvas & Path,實現過的比較複雜的自定義View。
架構
MVP:MVP的思想 & 優劣勢、在項目中的應用、
源碼
AMS
WMS
Binder
應用打包流程
應用啓動流程
應用安裝流程
網絡
基礎知識:看一下對於 <<計算機網絡>> ,重點是網絡分層模型、TCP/UDP、HTTP/HTTPS。
設計模式
按照23種網絡模型、三個分類進行總結,每種設計模式包含以下三個方面,至少要準備常用的幾個:
基本概念:UML圖、簡單例子、應用場景、優勢 & 劣勢。
Android源碼中的實現
項目中的應用
多線程
看併發編程的藝術,這本書的目錄就是多線程最好的知識體系。
遇到過的多線程問題、怎麼解決的。
Gradle
常用配置。
多渠道打包。
插件化
插件化的核心思想。
幾種插件化框架實現的原理。
組件化
組件化的優勢。
Arouter:使用方式、實現原理。
Kotlin
有用到的可以看看。
多媒體
音頻、視頻播放。
大前端
ReactNative、Flutter:沒學過的可以瞭解一下思想。
JNI
調用實現方式。
我一直覺得技術面試不是考試,考前背背題,發給你一張考卷,答完交卷等通知。
首先,技術面試是一個 認識自己 的過程,知道自己和外面世界的差距。
更重要的是,技術面試是一個雙向瞭解的過程,要讓對方發現你的閃光點,同時也要 試圖去找到對方的閃光點,因爲他以後可能就是你的同事或者領導,所以,面試官問你有什麼問題的時候,不要說沒有了,要去試圖瞭解他的工作內容、瞭解這個團隊的氛圍。
找工作無非就是看三點:和什麼人、做什麼事、給多少錢,要給這三者在自己的心裏劃分一個比例。
本文在開源項目:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄,裏面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…