專科畢業,Android不好找工作的同學,你的問題在這裏!

本人今年專科畢業了,本想畢業之後做個簡單完整的APP會好找工作一些,現在已經做好並且上架到了百度手機助手上面,如果有興趣的朋友可以去搜索曉天天氣就可以去查到,不過做好之後才發現找工作還是很難啊…
都好幾天了投出去好幾份簡歷,一點反應沒有…
看到網上都是找好幾年經歷的高級工程師…
心累啊…

有小夥伴發帖感慨工作不好找,該如何準備Android面試的,我也想談談我最近的一些想法和計劃,大家一起討論。

整體分爲以下兩個方面:

  • 自我介紹 & 項目經驗
  • 知識儲備

正文

自我介紹 & 項目經驗

  • 自我介紹

這個是第一個要準備的東西,面試多幾次,慢慢完善就好,重要的是 有條理。可以從下面幾點入手,關鍵是第二和第三點:

  • 之前工作的公司、崗位及工作方向。
  • 團隊構成,在團隊中的位置及承擔的責任。
  • 爲團隊做出的主要貢獻,對於這部分涉及到的 項目經歷以及延伸出的知識點 一定要重點準備。
  • 能夠從側面反映出你優點的愛好。
  • 如果能從其它渠道瞭解到你招人的部門所做的東西,那麼也可以談談對他們的一些瞭解以及自己的願望,沒有就算了,這個是可選項。
  • 項目經驗

項目經驗這塊因人而異,把覺得做的有亮點的東西挑出來,從四個方面來準備:

  • 功能模塊的實現
  • 達到了什麼效果
  • 遇到了什麼問題,是如何解決的
  • 涉及到的相關知識點

項目經驗和知識點 其實是一個雙向的過程,要 試圖去找到它們之間的聯繫:

  • 談到項目經驗的時候,可以說:做完 xx 之後,我還去了解了一下 yy 背後的原理,xxx,這裏體現的是 你是否有求知慾 。
  • 談到知識點的時候,可以說:yy 的原理是這樣的,在 xx 項目中我是如何應用它來解決問題的,這裏體現的是 你是否具備把知識付諸實踐的能力。
  • 遇到的問題

一定要準備,很重要! 問題涉及到知識點也要都弄清楚。

平時項目可能比較忙,遇到問題急着解決。但是要學着先把問題先記錄下來,之後再按下面的步驟進行總結,有條理地進行闡述:

  • 遇到問題
  • 分析過程
  • 解決方案
  • 結果

知識儲備

很多人準備面試的時候,大多數就會這樣的,打開百度,輸入 「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 中已收錄,裏面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…