Android開發如何準備技術面試(含Android面試押題)

今年毋庸置疑是找工做的寒冬,每個出來找工做的同窗都是值得尊敬的。如今找工做,雖然略難,可是反過來看也會逼迫咱們成爲更加優秀的本身。面試

可是無論是旺季仍是寒冬,有一些優秀的同窗找工做仍是挺順利的。因此說仍是得提升咱們本身的硬實力。算法

本文主要解答這些問題,若是說你想知道如下幾點,就能夠看下去了sql

  • 當下好找工做嘛
  • 如何寫簡歷
  • 如何挑選靠譜的公司
  • 個人經驗水平能拿多少的工資
  • 問到項目中的技術難點怎麼回答
  • 2021年Android面試押題
  • 如何和 HR 聊天,好比談錢等等

1、當下好找工做嘛

想必你們如今常常能看到某某公司又裁人了,會擔憂是否是找不到工做了。其實總的來講雖然當下的環境確實不怎麼好,可是有裁人的公司,也確定有招人的公司,而且招人的公司必定比裁人的公司多得多。設計模式

那麼再來回答這個問題「當下好很差找工做」。對於技術好的人來講,永遠不會擔憂這個問題。可是對於技術不那麼好的人來講,確實須要一些技巧才能比別人有更多的機會。好比說寫一封清晰明瞭的簡歷,在面試前好好準備等等。數組

總的來講,機會是留給有準備的人。不管環境好與差,認真準備的你確定會比別人有更多的機會。緩存

2、如何寫簡歷

平時有在作修改簡歷的收費服務,在公司裏也會當個面試官啥的,總的來講也算看過不少簡歷了。可是大部分人的簡歷的套路都是同樣的,項目用了什麼技術棧,作了什麼功能,總的來講就是流水帳。安全

那麼一旦你寫出有別於這類套路的簡歷,你的簡歷必然會被用人方多看幾眼,增長點成功率也是必然的。性能優化

通常來講我會這樣建議別人寫簡歷:網絡

  • 全文杜絕任何的精通字眼,若是你真的精通,不須要投簡歷找工做了。
  • 簡歷控制在兩頁左右,不須要找什麼簡歷模板,直接 Markdown 生成 PDF 文件,面試官不在乎你的簡歷有多好看,他更在乎的是你的簡歷內容。
  • 任何英文單詞注意大小寫,數字以及英文注意與中文之間有空格。
  • 項目中無需介紹這個項目到底有啥功能,單刀直入這個項目中最值得說的內容。好比遇到的 Bug,本身的思考等等。可是可能不少人會說,業務很簡單沒什麼好說的或者壓根沒遇到什麼問題。遇到這個問題的時候,首先跳脫出業務的框架,去思考其餘的問題。相信每一個人都寫過組件,可是對於如何設計一個好的組件來講就不是每一個人都能作的事情了。
  • 寫項目經驗最好按照這樣的思路:遇到了什麼問題,如何解決以及結果。
  • 假設簡歷上的每一個技術點面試官都會問到,斟酌全部的知識點,保證都能回答。

3、如何挑選靠譜的公司

一家靠譜的公司,必定是如下幾點加起來的:牛逼的核心管理層、不錯的 idea、高額的融資、有前景的行業。數據結構

前兩點對於求職者來講基本是黑盒,所以咱們只能從後面兩點來挑選公司了。

早期的融資越高,領投的公司越牛逼,那麼這家公司靠譜的概率越大。由於這些公司的決策人都不是傻子,人家確定有充足的理由纔會選擇相信並投錢給這家公司。

另一個有前景的行業也是必須條件,若是你不知道啥是有前景的行業,就從與人息息相關的行業挑選吧。好比吃、住、行、教育等等。

這時候你可能會說,那我若是瞭解到一家公司的這些狀況呢?那麼「天眼查」能夠完美解決你這個問題。咱們能夠經過這個網站詳細瞭解到一家公司的融資、行業、競品、法律風險、管理層、產品等等信息。

4、個人經驗水平能拿多少的工資

對於這個問題,我真的很想說多少經驗真的和多少工資沒多大關係。

相同的一年經驗,有人只能拿 10K,可是有人卻能拿到 20K,緣由就在於兩我的的技術能力不同。

你技術好,就能比別人多要工資;你技術通常,就只能拿少點的工資,這是一個很現實的問題。因此工資只與技術掛鉤,而不是你所謂的經驗。

若是隻是想了解行業平均薪水,直接去看當地的企業給出的工資是多少就行了。若是以爲本身薪水不符合行業平均薪水,就勇敢的跳槽唄。

5、問到項目中的技術難點怎麼回答

對於這個問題來講,面試官考察的就是你的學習能力以及解決問題的能力。

不少人遇到這個問題會很懵逼,感受基本啥問題都谷歌解決了。固然若是你真的有遇到不是立刻能經過谷歌解決的問題即是極好的,按照描述問題、如何解決問題、結果這幾個步驟來回答就好了。

那麼若是你以爲你的項目真的很簡單,沒有什麼可說的話,就按照如下的幾個思路來聊這個話題。好比說你以前從沒接觸過某個技術,你是如何去學習這個技術的,在學習的過程當中遇到了什麼問題,怎麼解決的。好比說你寫了這個項目,本身有了什麼感悟、想法。

由於這道題目面試官不是說必定要聽你講出項目裏到底遇到了什麼難的問題,而是考察你的學習能力以及解決問題的能力。即便你沒有什麼乾貨能夠說,說點本身的學習過程、挫折、想法感悟也是能夠的,畢竟總比說感受都很簡單來的好。

6、2021年Android面試押題

Java相關

1.容器(HashMap、HashSet、LinkedList、ArrayList、數組等)

2.內存模型

3.垃圾回收算法(JVM)

4.垃圾回收機制和調用 System.gc()的區別?

5.類加載過程(須要多看看,重在理解,對於熱修復和插件化比較重要)

6.反射

7.多線程和線程池

8.設計模式(六大基本原則、項目中經常使用的設計模式、手寫單例等)

9.Java 四大引用

10.Java 的泛型

11.final、finally、finalize 的區別

12.接口、抽象類的區別

(Java相關答案地址)

Android 相關

1.自定義 View

2.事件攔截分發

3.解決過的一些性能問題,在項目中的實際運用

4.性能優化工具

5.性能優化 (講講你本身項目中作過的性能優化)

6.Http[s]請求慢的解決辦法(DNS、攜帶數據、直接訪問 IP)

7.緩存本身如何實現(LRUCache 原理)

8.圖形圖像相關:OpenGL ES 管線流程、EGL 的認識、Shader 相關

9.SurfaceView、TextureView、GLSurfaceView 區別及使用場景

10.動畫、差值器、估值器(Android中的View動畫和屬性動畫 - 簡書、Android 動畫 介紹與使用)

11.MVC、MVP、MVVM

12.Handler、ThreadLocal、AsyncTask、IntentService 原理及應用

13.Gradle(Groovy 語法、Gradle 插件開發基礎)

14.熱修復、插件化

15.組件化架構思路

16.系統打包流程

17.Android 有哪些存儲數據的方式。

18.SharedPrefrence 源碼和問題點;

20.sqlite 相關

21.如何判斷一個 APP 在前臺仍是後臺?

22.AMS 、PMS

23.Activity 啓動流程,App 啓動流程

24.Binder 機制(IPC、AIDL 的使用)

25.爲何使用 Parcelable,好處是什麼?

26.Android 圖像顯示相關流程,Vsync 信號等

(Android相關答案地址)

源碼理解

  • Glide :加載、緩存、LRU 算法 (如何本身設計一個大圖加載框架) (LRUCache 原理)
  • EventBus
  • LeakCanary
  • ARouter
  • 插件化(不一樣插件化機制原理與流派,優缺點。侷限性)
  • 熱修復
  • RXJava (RxJava 的線程切換原理)
  • Retrofit (Retrofit 在 OkHttp 上作了哪些封裝?動態代理和靜態代理的區別,是怎麼實現的)
  • OkHttp

(源碼相關答案地址)

算法與數據結構

  • 時間複雜度 / 空間複雜度
  • 經常使用的排序算法有哪些?
  • 字符串反轉
  • 鏈表反轉(頭插法)
  • 如何查找第一個只出現一次的字符(Hash查找)
  • 如何查找兩個子視圖的共同父視圖?
  • 無序數組中的中位數(快排思想)
  • 如何給定一個整數數組和一個目標值,找出數組中和爲目標值的兩個數。
  • 二叉樹前序、中序、後序遍歷
  • 最大 K 問題
  • 廣度、深度優先搜索算法
  • String 轉 int。核心算法就三行代碼,不過臨界條件不少,除了判空,還須要注意負數、Integer 的最大最小值邊界等;
  • 如何判斷一個單鏈表有環?
  • 100 億個單詞,找出出現頻率最高的單詞。要求幾種方案;
  • 鏈表每 k 位逆序;
  • 鏡像二叉樹;
  • 找出一個無序數組中出現超過一半次數的數字;
  • 計算二叉樹的最大深度,要求非遞歸算法。
  • String 方式計算加法。

(算法與數據結構相關答案地址)

網絡

1.網絡框架對比和源碼分析

  1. 網絡七層協議有哪些?
  2. Http 和 Https 的區別?Https爲何更加安全?
  3. HTTPS的鏈接創建流程
  4. 解釋一下 三次握手 和 四次揮手
  5. TCP 和 UDP的區別
  6. Cookie和Session
  7. DNS是什麼?
  8. DNS解析過程

10.HTTP報文結構

11.HTTP與HTTPS的區別以及如何實現安全性

12.如何驗證證書的合法性?

13.https中哪裏用了對稱加密,哪裏用了非對稱加密,對加密算法(如RSA)等是否有了解?

14.client如何肯定本身發送的消息被server收到?

15.談談你對WebSocket的理解

16.WebSocket與socket的區別

17.談談你對安卓簽名的理解。

18.請解釋安卓爲啥要加簽名機制?

19.視頻加密傳輸

20.App 是如何沙箱化,爲何要這麼作?

21.權限管理系統(底層的權限是如何進行 grant 的)?

(網絡相關答案地址)

Kotlin 相關

1.從原理分析Kotlin的延遲初始化: lateinit var和by lazy

2.使用Kotlin Reified 讓泛型更簡單安全

3.Kotlin裏的Extension Functions實現原理分析

4.Kotlin系列之頂層函數和屬性

5.Kotlin 兼容 Java 遇到的最大的 「坑」

6.Kotlin 的協程用力瞥一眼

7.Kotlin 協程「掛起」的本質

8.到底什麼是「非阻塞式」掛起?協程真的更輕量級嗎?

9.資源混淆是如何影響到Kotlin協程的

10.Kotlin Coroutines(協程) 徹底解析

11.破解 Kotlin 協程

(Kotlin相關答案地址)

Flutter相關

1.Flutter 原理與實踐

2.揭祕 Flutter Hot Reload(原理篇)

3.Flutter 動態化探索

4.Flutter 如何和 Native 通訊-Android 視角

5.深刻理解 Flutter Platform Channel

6.Flutter Engine 編譯指北

7.深刻理解 Flutter 多線程

8.Flutter 狀態管理 - 初探與總結

9.Flutter | 狀態管理指南篇——Provider

10.深刻理解Flutter應用啓動

11.Flutter渲染機制—UI線程

(Flutter相關答案地址)

7、如何和 HR 聊天,好比談錢等等

首先你面到 HR 了,說明你基本已經成爲備選人之一了。這時候 HR 會和你聊不少問題,這些問題都是爲了瞭解你的一些我的狀況的。好比說性格啦、反應能力、情商等等。另外大部分公司的 HR 並無一票否決權,面試沒有成功多半是有更好的備選人而不是由於 HR 把你卡掉了。

而後說到談錢的一個問題。首先以最少的工資招到須要的人確定是 HR 的考覈之一,因此壓價是很正常的一個事情。而且上家公司的薪資也是一個很重要的參考,通常來講漲薪幅度在 30% 以上是很牛逼的事情了,一般都在 20% 左右。

你的開價通常就是 offer 的上限了,考慮到壓價的狀況,你能夠在本來指望薪水上上浮 1K 左右,而後能夠根據面試的狀況來有選擇性的開價。

  • 面的不錯,原本想要 16K 的,那麼就多要個 1-2K 沒啥問題
  • 面的通常,那就報 16 K 吧
  • 面的通常或者不大好,可是又很想進這家公司,能夠酌情降低 1-2K,這個主要仍是看本身
  • 不怎麼想去這家公司,隨意開價

8、結語

我一直以爲技術面試不是考試,考前背背題,發給你一張考卷,答完交卷等通知。

首先,技術面試是一個 認識本身 的過程,知道本身和外面世界的差距。

更重要的是,技術面試是一個雙向瞭解的過程,要讓對方發現你的閃光點,同時也要 試圖去找到對方的閃光點,由於他之後可能就是你的同事或者領導,因此,面試官問你有什麼問題的時候,不要說沒有了,要去試圖瞭解他的工做內容、瞭解這個團隊的氛圍。

找工做無非就是看三點:和什麼人、作什麼事、給多少錢,要給這三者在本身的內心劃分一個比例。

相關文章
相關標籤/搜索