阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

序言

本文主要介紹校招,疫情原因今年的春招持續的時間拉長了,截止到目前我已經面試超過一百位應屆生,批改過超過150份筆試的試卷,因為通過率較低,我也被同事吐槽許多次讓我“手下留情”。今天我就想聊一聊,我自己的面試標準。這不是一篇什麼攻略文,旨在拋磚引玉,大家一起探討如何面試更有效率。

需要寫在前面的是,“平等“和”高效”一直都是互斥的。信息從一個人傳遞到另一個人那裡,由於表達能力和接收能力的限制,必然產生信息熵,所以花一天的時間好好了解一個人的技術實力和學習能力,自然要比一場半小時的面試要更加的全面。但很可惜的是,現實中沒有那麼長的時間,所以一個面試官最基本的任務,就是引導面試者在最有限的時間裡,最大化展示出自己的能力。


阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

簡歷原則

最近看到很多技術大牛放出來自己的簡歷,但就我個人而言,感覺參考意義真的不大——這些大牛不管簡歷寫成啥樣,模板用啥,哪怕是TXT格式不做排版,就光看項目內容和技術深度就足夠拿到offer了,但是正常人來說並沒有這種“底蘊”,看完可能只會覺得“握草牛逼啊”,然後自己寫簡歷時候仍然一臉懵逼。其實應屆生做簡歷真沒那麼複雜,能夠突出的無非是:

GPA、算法獎項名次、獎學金之類的信息等。實習經歷:在哪裡,做了什麼,取得了什麼成績,解決了什麼問題。有量化標準更好,比如說“降低了10%內存佔用”這種。個人項目、Github等

筆試閱卷原則

很多人好奇,筆試不是都固定答案嗎?那有啥可原則不原則的?

是的,有些題是有固定答案,但也有一些問題答案相對開放。比如說這樣一個常見的#### 筆試題

簡述Activity(或Service,ContentProvider)的使用。像這樣的相對開放的問題,基本上是懂多少答多深,對於這種問題我個人的評分標準是這樣的:

基本用法(Manifest配置、生命週期簡述、重要API等)介紹沒有錯的話,至少給到總分85%特別有介紹到源碼層面,或者運行機制之類的,會給到滿分。如果答案中有錯誤的地方,會反而酌情扣分,所以基本上靠量取勝反而有更大風險,因為錯誤的內容也可能更多。這些標準中可能爭議比較大的就是“答錯內容扣分”這一點,但是我仍然認為這是必要的。比如對於Service,有人會寫“由於也是運行在主線程,不能做任何耗時操作”,我認為這是需要扣分的,原因如下:

“Service運行在主線程”是論據,“不能做任何耗時操作”是論點,但中間省略了論證過程,論據怎麼推導出論點的?我感覺這是邏輯能力較差的一種表現。默認運行在應用進程的Service,可不可以指定Service的process將它定義在子進程裡?Service在子進程裡做耗時操作比如網絡請求之類的,為何不可以呢?如果可以,為何要說“不能做任何耗時操作”呢?我個人會感覺這個面試者實際並沒有使用過,只是懂得書上的理論知識。當然,只寫一些基本用法拿到85%分的人,可能也有一些邏輯短板,也有一些技術能力不足,但像我上文說的,效率與公正無法兼得,並且隱藏自己短板也算是一種能力。

面試注意點

在面試的過程中,我印象最深的幾點感受一定要告知大家:

  • 1、回答問題不要過於著急,一定要耐心等待面試官把問題說完
  • 2、回答問題要有邏輯、幹練簡潔
  • 3、如果面試官打斷你說話,此時一定要謹慎回答,因為很有可能你回答過於繁瑣且他對你當下的回答不滿意
  • 4、一個問題不要糾結很久,尤其是讓面試官感受到你在敲鍵盤.....
  • 5、不會的面試題必須乾脆利落的回答不會
  • 6、面試的時間最好控制在 30 ~ 40 分鐘左右,這樣互相之間的體驗不會很差
  • 7、面試是一個挖掘面試者能力和潛力的過程
  • 8、面試官不是全能的,面試一定是一個互相學習的過程
  • 9、一定要提前準備好自己想要問的問題,最致命的是別人把你安排的明明白白結果你對別人一無所知.....

關於第 2 點還是要說明一下,很多面試者回答問題沒有邏輯性,在回答之前可以先思考一下,然後告訴面試官將從 n 個方面進行講解,首先第 1 個方面是...,其次第 2 個方面是...

友情提示:面試的時候發現大部分的面試者普遍存在 1 和 2 兩個問題。如果你的回答沒有邏輯還繁瑣且沒有命中要點,通常面試官對你的印象會非常差。相反,如果你回答問題過於簡潔,通常情況下面試官會覺得你沒 Get 到他的問題點(當然會懷疑自己的表述有沒有問題),一般都會追加更詳細的問題描述,畢竟這是一個挖掘的過程。

面試題解析

一般我在面試開始前,會根據應聘者的簡歷提前準備 8 道左右的面試題(在面試的過程中可能會有調整)。

接下來我會重點講解一些面試題,面試題解答思路(可從答案解析PDF中找到答案),供大家參考。

第一章 Java 知識點彙總

  • JVMJVM 工作流程運行時數據區(Runtime Data Area)方法指令類加載器垃圾回收 gc對象存活判斷垃圾收集算法垃圾收集器內存模型與回收策略
  • Objectequals 方法hashCode 方法
  • static
  • final
  • String、StringBuffer、StringBuilder
  • 異常處理
  • 內部類匿名內部類
  • 多態
  • 抽象和接口
  • 集合框架HashMap結構圖HashMap 的工作原理HashMap 與 HashTable 對比ConcurrentHashMapBase 1.7Base 1.8ArrayListLinkedListCopyOnWriteArrayList
  • 反射
  • 單例餓漢式雙重檢查模式靜態內部類模式
  • 線程狀態狀態控制
  • volatile
  • synchronized根據獲取的鎖分類原理
  • Lock鎖的分類悲觀鎖、樂觀鎖自旋鎖、適應性自旋鎖死鎖
  • 引用類型
  • 動態代理
  • 元註解

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第一章Java知識點彙總

2020年Android開發最新全套面試題答案解析 關注+轉發+私信**學習**,前往領取!

第二章 Android 知識點彙總

  • Activity生命週期啟動模式啟動過程
  • Fragment特點生命週期與Activity通信
  • Service啟動過程綁定過程生命週期啟用前臺服務
  • BroadcastReceiver註冊過程
  • ContentProvider基本使用
  • 數據存儲
  • ViewMeasureSpecMotionEventVelocityTrackerGestureDetectorScrollerView 的滑動View 的事件分發在 Activity 中獲取某個 View 的寬高Draw 的基本流程自定義 View
  • 進程進程生命週期多進程進程存活OOM_ADJ進程被殺情況進程保活方案
  • Parcelable 接口使用示例方法說明Parcelable 與 Serializable 對比
  • IPCIPC方式BinderAIDL 通信Messenger
  • Window / WindowManagerWindow 概念與分類Window 的內部機制Window 的創建過程Activity 的 Window 創建過程Dialog 的 Window 創建過程Toast 的 Window 創建過程
  • Bitmap配置信息與壓縮方式常用操作裁剪、縮放、旋轉、移動Bitmap與Drawable轉換保存與釋放圖片壓縮BitmapFactoryBitmap創建流程Option類基本使用內存回收
  • 屏幕適配單位頭條適配方案劉海屏適配
  • Context
  • SharedPreferences獲取方式getPreferencesgetDefaultSharedPreferencesgetSharedPreferences架構apply / commit注意
  • 消息機制Handler 機制工作原理ThreadLocalMessageQueueLooperHandler
  • 線程異步AsyncTask基本使用工作原理HandlerThreadIntentService線程池
  • RecyclerView 優化
  • Webview基本使用WebViewWebSettingsWebViewClientWebChromeClientWebview 加載優化內存洩漏

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第二章Android知識點彙總

第三章 Android 擴展知識點彙總

  • ARTART 功能預先 (AOT) 編譯垃圾回收優化開發和調試方面的優化ART GC
  • Apk 包體優化Apk 組成結構整體優化資源優化代碼優化.arsc文件優化lib目錄優化
  • Hook基本流程使用示例
  • Proguard公共模板常用的自定義混淆規則aar中增加獨立的混淆配置檢查混淆和追蹤異常
  • 架構MVCMVPMVVM
  • Jetpack架構使用示例
  • NDK 開發JNI 基礎數據類型String 字符串函數操作常用 JNI 訪問 Java 對象方法NDK 開發基礎開發流程System.loadLibrary()CMake 構建 NDK 項目常用的 Android NDK 原生 API
  • 類加載器雙親委託模式DexPathList
阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第三章 Android 擴展知識點彙總

2020年Android開發最新全套面試題答案解析 關注+轉發+私信**學習**,前往領取!

第四章 Android 開源庫源碼分析

  • LeakCanary初始化註冊引用洩漏觀察Dump Heap
  • EventBus自定義註解註冊訂閱者發送事件
阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第四章 Android 開源庫源碼分析

第五章設計模式彙總

  • 設計模式分類
  • 面向對象六大原則
  • 工廠模式
  • 單例模式
  • 建造者模式
  • 原型模式
  • 適配器模式
  • 觀察者模式
  • 代理模式
  • 責任鏈模式
  • 策略模式
  • 備忘錄模式

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第五章設計模式彙總

第六章計算機網絡基礎

  • 網絡體系的分層結構
  • HTTP 相關請求報文請求行請求頭響應報文常見狀態碼緩存機制HttpsHttp 2.0
  • TCP/IP三次握手四次揮手TCP 與 UDP 的區別
  • Socket使用示例

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第六章計算機網絡基礎

2020年Android開發最新全套面試題答案解析 關注+轉發+私信**學習**,前往領取!

第七章 常見面試算法題彙總

  • 排序比較排序冒泡排序歸併排序快速排序線性排序計數排序桶排序
  • 二叉樹順序遍歷層次遍歷左右翻轉最大值最大深度最小深度平衡二叉樹
  • 鏈表刪除節點翻轉鏈表中間元素判斷是否為循環鏈表合併兩個已排序鏈表鏈表排序刪除倒數第N個節點兩個鏈表是否相交
  • 棧 / 隊列帶最小值操作的棧有效括號用棧實現隊列逆波蘭表達式求值
  • 二分二分搜索X的平方根
  • 哈希表兩數之和連續數組最長無重複字符的子串最多點在一條直線上
  • 堆 / 優先隊列前K大的數前K大的數II第K大的數
  • 二叉搜索樹驗證二叉搜索樹第K小的元素
  • 數組 / 雙指針加一刪除元素刪除排序數組中的重複數字我的日程安排表 I合併排序數組
  • 貪心買賣股票的最佳時機買賣股票的最佳時機 II最大子數組主元素
  • 字符串處理生成括號Excel表列標題翻轉游戲翻轉字符串中的單詞轉換字符串到整數最長公共前綴迴文數
  • 動態規劃單詞拆分爬樓梯打劫房屋編輯距離乘積最大的序列
  • 矩陣螺旋矩陣判斷數獨是否合法旋轉圖像
  • 二進制 / 位運算落單的數格雷編碼
  • 其他反轉整數LRU緩存策略

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第七章 常見面試算法題彙總

第八章 Kotlin 相關知識點

  • from-java-to-kotlin
  • kotlin_tips
  • 從原理分析Kotlin的延遲初始化: lateinit var和by lazy
  • 使用Kotlin Reified 讓泛型更簡單安全
  • Kotlin裡的Extension Functions實現原理分析
  • Kotlin系列之頂層函數和屬性
  • Kotlin 兼容 Java 遇到的最大的 “坑”
  • Kotlin 的協程用力瞥一眼
  • Kotlin 協程「掛起」的本質
  • 到底什麼是「非阻塞式」掛起?協程真的更輕量級嗎?
  • 資源混淆是如何影響到Kotlin協程的
  • Kotlin Coroutines(協程) 完全解析

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第八章 Kotlin 相關知識點

第九章 Flutter 相關知識點彙總

  • Flutter原理與實踐
  • 揭秘Flutter Hot Reload(原理篇)
  • Flutter 動態化探索
  • Flutter如何和Native通信-Android視角
  • 深入理解Flutter Platform Channel
  • Flutter Engine 編譯指北
  • Flutter Engine 線程模型
  • 深入理解Flutter多線程
  • Flutter狀態管理 - 初探與總結
  • Flutter | 狀態管理指南篇——Provider
  • 深入理解Flutter應用啟動
  • Flutter渲染機制—UI線程
  • Flutter渲染機制—GPU線程
  • 深入理解Flutter應用啟動
  • 深入理解setState更新機制
  • 深入理解Flutter消息機制
  • 深入理解Flutter動畫原理
  • Dart虛擬機運行原理
  • 源碼解讀Flutter tools機制
  • 源碼解讀Flutter run機制

答案解析

阿里面試官現身說法:刷了一批又一批,有些話不得不對你們說

第九章 Flutter 相關知識點彙總

2020年Android開發最新全套面試題答案解析 關注+轉發+私信**學習**,前往領取!

最後

題外話,我在一線互聯網企業工作十餘年裡,指導過不少同行後輩。幫助很多人得到了學習和成長。

我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在IT學習中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。但苦於知識傳播途徑有限,很多程序員朋友無法獲得正確的資料得到學習提升,故此將並將重要的Android進階資料包括自定義view、性能優化、MVC與MVP與MVVM三大框架的區別、NDK技術、阿里面試題精編彙總、常見源碼分析等錄播視頻免費分享出來。

【Android學習PDF+學習視頻+面試文檔+知識點筆記】關注+轉發+私信**學習**,前往免費領取!

希望我能夠用我的力量幫助更多迷茫、困惑的朋友們,幫助大家在IT道路上學習和發展~


分享到:


相關文章: