【金九銀十面試沖刺】Android開發面試指南(簡歷、投遞、刷題、復盤)

前言

無論是社招還是校招中,應聘者總是要經過層層的考核才能被聘用。然而,在招聘時,設置的編程以及非技術面試問題,真的有必要嗎?如此就能考核出一位開發者的真實水平?

說到底就是考驗你的技術以及態度。態度大于一切。但我這里的態度分為兩種。業務態度和溝通態度。面試官正是筆試這一關來來考驗你的業務能力,而通過以下問題來測試你的溝通態度,一切就變得理所當然了。

下面就給大家準備了金九銀十面試的幾點建議。

簡歷方面

簡歷不用準備得太花哨,以前我總喜歡找一些漂亮的模板,后來經人指點后改成了用Markdown書寫。面試官不在意你的簡歷有多好看,他更在意的是你的簡歷內容。

在面試的過程中,面試官通常會非常關注你簡歷中的工作經歷、項目介紹、技能特長這三部分的內容,如果你面試的公司沒有固定題目的話,那很多問題都會圍繞你簡歷里這三部分內容去問。這里需要注意的一點是相關技能的書寫,核心思想,想進大廠的簡歷,要突出自己的特色,寫得要生動,能從簡歷看出你實力不俗。如果簡歷不過關,很大幾率根本沒有面試機會。

首先你要讓面試官明確你面試的定級是什么。很多時候一個職位對應了很多個職級,在投簡歷的時候,你的簡歷需要讓面試官給你一個比較明確的定級,否則面試過程會比較被動,也會影響面試官對你的判斷。

因此這部分的內容需要突出自己的特長,也要寫一些現在公司相對關心的問題:

  • 比如你對插件化、熱修復、組件化、性能優化等很熟悉,就可以明確的寫上,但如果不是很熟悉那么盡量不要去寫。
  • 如果你對Android某部分內容很熟悉就可以寫得相對詳細一些,比如你對Handler、Binder機制很熟悉,就可以寫“熟悉Android常見機制,比如Handler、Binder機制等”。
  • 而看到你很熟悉這部分內容,面試官可能在問問題時一層層深入,因此你肯定需要提前準備一下這部分內容如何講解,基本可以從機制的優點、重點、難點三方面去說明。

有認識的人內推比在boss直聘、拉鉤等,通過概率會高點。

部門直招(內推)>普通內推>官網招聘>招聘軟件也就是說,部門直招類型的內推是簡歷被查看機率最高、獲得面試機會可能最大的,之后依次遞減,(面試玄學除外,有的人招聘軟件海投就能獲得大廠面試機會,你說氣不氣)。

面試前充分了解公司以及工作崗位內容

很多人忙著瘋狂海投簡歷,通過鋪量來增加成功率,不如認真準備好每一場面試,作為面試官,如果面試者對我司一問三不知,我會扣很多印象分的。公司最想找的不是最厲害的人,而是最適合自己團隊和業務的人。

所以面試前,多點了解公司是做什么業務的,以及工作崗位的主要工作內容。結合招聘要求,提前想一下面試官可能問的問題,換位思考以及延伸思考,是一件很重要的事。

多點刷專業面試題!

刷題不僅會幫助我們掃清知識盲區、鞏固知識點,更會提高在面試中遇到相同類型題目的概率,

同時你也要清楚,你會的和你在面試中能完全講清楚是兩碼事,如果不提前梳理好思路,組織好語言,那么在面試過程中一定會手忙腳亂。

面試后積極復盤

面試會焦慮,可能是因為把這次面試機會當成一個重要的節點,但是放到整個人生旅程里,這只不過是一個小插曲,也許這次機會的錯失,在醞釀下一個更適合的機會。面試不一定一次就成功,但是每一次面試,都是一次經驗的積累,更需要具備結構性的思考,把面試的經驗都放在認知框架里,為下一次面試做準備。當然,你也可以找一些模擬面試的方法來不斷增強自己的面試水平,就比如知群就會有模擬面試相應的服務,充分了解大廠招人標準,消除面試緊張感,輕松掌握面試得分點,準確對標自身情況,彌補面試不足。

面試題分享

為了助力朋友們跳槽面試、升職加薪、職業困境,提高自己的技術,本文給大家整了一套《Android中高級面試題匯總》。目前已經收到了七八個網友的反饋,說是面試問到了很多這里面的知識點。

Java方面

Java基礎部分

  • 抽象類與接口的區別?
  • 分別講講 final,static,synchronized
  • 請簡述一下String、StringBuffer和
  • “equals”與“==”、“hashCode”的區別和使用場景?
  • Java 中深拷貝與淺拷貝的區別?
  • 談談Error和Exception的區別?
  • 什么是反射機制?反射機制的應用場景有哪些?
  • 談談如何重寫equals()方法?為什么還要重寫hashCode()?
  • 談談你對Java泛型中類型擦除的理解,并說說其局限性?
    -String為什么要設計成不可變的?
  • 說說你對Java注解的理解?

Java集合

  • 談談List,Set,Map的區別?
  • 談談ArrayList和LinkedList的區別?
  • 請說一下HashMap與HashTable的區別
  • 談一談ArrayList的擴容機制?
  • HashMap 的實現原理?
  • 請簡述 LinkedHashMap 的工作原理和使用方式?
  • 談談對于ConcurrentHashMap的理解?

Java多線程

  • Java 中使用多線程的方式有哪些?
  • 說一下線程的幾種狀態?
  • 如何實現多線程中的同步?
  • 談談線程死鎖,如何有效的避免線程死鎖?
  • 談談線程阻塞的原因?
  • 請談談 Thread 中 run() 與 start() 的區別?
  • synchronized和volatile關鍵字的區別?
  • 如何保證線程安全?
  • 談談ThreadLocal用法和原理?
  • java線程中notify 和 notifyAll有什么區別?
  • 什么是線程池?如何創建一個線程池?
  • 談一談java線程常見的幾種鎖?
  • 談一談線程sleep()和wait()的區別?

Java虛擬機

  • 談一談JAVA垃圾回收機制?
  • 回答一下什么是強、軟、弱、虛引用以及它們之間的區別?
  • 簡述JVM中類的加載機制與加載過程?
  • JVM、Dalvik、ART三者的原理和區別?
  • 請談談Java的內存回收機制?
  • JMM是什么?它存在哪些問題?該如何解決?

Android方面

四大組件

  • Activity 與 Fragment 之間常見的幾種通信方式?
  • LaunchMode 的應用場景?
  • 對于 Context,你了解多少?
  • IntentFilter是什么?有哪些使用場景?
  • 談一談startService和bindService的區別,生命周期以及使用場景?
  • Service如何進行保活?
  • 簡單介紹下ContentProvider是如何實現數據共享的?
  • 說下切換橫豎屏時Activity的生命周期?
  • Intent傳輸數據的大小有限制嗎?如何解決?

Android 異步任務和消息機制

  • HandlerThread 的使用場景和用法?
  • IntentService 的應用場景和使用姿勢?
  • AsyncTask的優點和缺點?
  • 談談你對 Activity.runOnUiThread 的理解?
  • 子線程能否更新UI?為什么?
  • 談談 Handler 機制和原理?
  • 為什么在子線程中創建Handler會拋異常?
  • Handler中有Loop死循環,為什么沒有阻塞主線程,原理是什么?

數據結構

  • 什么是冒泡排序?如何優化?
  • 請用 Java 實現一個簡單的單鏈表?
  • 如何反轉一個單鏈表?
  • 談談你對時間復雜度和空間復雜度的理解?
  • 談一談如何判斷一個鏈表成環?
  • 什么是紅黑樹?為什么要用紅黑樹?
  • 什么是快速排序?如何優化?
  • 說說循環隊列?
  • 如何判斷單鏈表交叉

Android Framework

Binder

  • Binder有什么優勢
  • Binder是如何做到一次拷貝的
  • MMAP的內存映射原理了解嗎
  • Binder機制是如何跨進程的
  • 說說四大組件的通信機制
  • 為什么Intent不能傳遞大數據

Handler

  • HandlerThread是什么?為什么它會存在?
  • 簡述下 Handler 機制的總體原理?
  • Looper 存在哪?如何可以保證線程獨有?
  • 如何理解 ThreadLocal 的作用?
  • 主線程 Main Looper 和一般 Looper 的異同?
  • Handler 或者說 Looper 如何切換線程?
  • Looper 的 loop() 死循環為什么不卡死?
  • Looper 的等待是如何能夠準確喚醒的?
  • Message 如何獲取?為什么這么設計?

AMS

  • ActivityManagerService是什么?什么時候初始化的?有什么作用?
  • ActivityThread是什么?ApplicationThread是什么?他們的區別
  • Instrumentation是什么?和ActivityThread是什么關系?
  • ActivityManagerService和zygote進程通信是如何實現的。
  • ActivityRecord、TaskRecord、ActivityStack,Activi
  • ActivityManager、ActivityManagerService、Activit
  • 手寫實現簡化版AMS

算法方面

  • 如何運??分查找算法
  • 如何?效解決接??問題
  • ?分查找?效判定?序列
  • 如何去除有序數組的重復元素
  • 如何尋找最?回??串
  • 如何?效進?模冪運算
  • 如何運用貪心思想廣域玩跳躍游戲
  • 如何?效判斷回?鏈表
  • 如何在無線序列中隨機抽取元素
  • 如何判定括號合法性
  • 如何尋找缺失和重復的元素
  • 請說一說HashMap,SparseArrary原理,SparseArrary相比HashMap的優點、ConcurrentHashMap如何實現線程安全?
  • 請說一說HashMap原理,存取過程,為什么用紅黑樹,紅黑樹與完全二叉樹對比,HashTab、concurrentHashMap,concurrent包里有啥?
  • 請說一說hashmap put()底層原理,發生沖突時,如何去添加(順著鏈表去遍歷,挨個比較key值是否一致,如果一致,就覆蓋替換,不一致遍歷結束后,插入該位置) ?

Kotlin方面

  • 請簡述一下什么是 Kotlin?它有哪些特性?
  • Kotlin中實現單例的幾種常見方式?
  • 在Kotlin中,什么是內聯函數?有什么作用?
  • 請談談Kotlin中的Coroutines,它與線程有什么區別?有哪些優點?
  • 說說Kotlin中的Any與Java中的Object 有何異同?
  • Kotlin中的數據類型有隱式轉換嗎?為什么?
  • Kotlin中集合遍歷有哪幾種方式
  • Kotlin內置標準函數let的原理是什么?
  • Kotlin語言的run高階函數的原理是什么?

音視頻方面

  • 怎么做到直播秒開優化?
  • 數字圖像濾波有哪些方法?
  • 圖像可以提取的特征有哪些?
  • FFMPEG:圖片如何合成視頻
  • 常見的音視頻格式有哪些?
  • 請敘述MPEG視頻基本碼流結構?
  • 說一說ffffmpeg的數據結構?
  • 如何降低延遲?如何保證流暢性?如何解決卡頓?解決網絡抖動?
  • 平時說的軟解和硬解,具體是什么?

Flutter方面

  • Dart 語言的特性?
  • Dart 多任務如何并行的?
  • dart是值傳遞還是引用傳遞?
  • Flutter 特性有哪些?
  • Widget 和 element 和 RenderObject 之間的關系?
  • 使用mixins的條件是什么?
  • Stream 兩種訂閱模式?
  • Flutter中的Widget、State、Context 的核心概念?是為了解決什么問題?
  • 說一下Hot Reload,Hot Restart,熱更新三者的區別和原理
  • Flutter 如何與 Android iOS 通信?
  • 說一下什么是狀態管理,為什么需要它?

最后

作為一個“好兵”,我從不打無準備的仗,畢竟知己知彼才能游刃有余。無論現在的你處于什么水平,技術擁有怎樣的深度,都不得不承認,任何時候都需要你能夠主動地去學習,面試也要提前做準備。如果你的職業發展有更長遠的打算和規劃,那就更應該沉穩下來,腳踏實地,一步一步。

今年的金九銀十,若你有需要面試的打算,那么先考察一下自己準備了多少吧?

整理不易,白嫖太易!有需要的讀者朋友們可以關注一下。以上都可分享~

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容