字節跳動五面都過了,結果被刷了,問了hr緣由竟說是...

說在前面,面試時最好不要虛報工資。原本字節跳動是很想去的,幾輪面試也經過了,最後沒offer,本身只想到幾個緣由:一、虛報工資,比實際高30%;二、有更好的人選,這個可能性不大,我看還在招聘。我是面試Android開發的,3年經驗,下面是面試流程:前端

一面

1.插件化。啓動activity的hook方式。taskAffity。
2.okhttp支持HTTP2?http2的功能有哪些?tcp方面擁塞控制?tsl的握手和具體的非對稱加密算法。非對稱名稱
3.handler的post(Runnable)如何實現的。callback,runnable,msg的執行優先級。
4.阻塞是怎麼實現的?爲何不會阻塞主線程?
5.求二叉樹中兩個節點之間的最大距離。
6.206含義,未修改資源是哪一個,302含義,301含義
7.多進程通訊問題。binder優點。aidl生成的java類細節。多進程遇到哪些問題?
8.動態代理傳入的參數都有哪些?非接口的類能實現動態代理嗎?ASM的原理
9.Application和Activity在Context的繼承樹上有何區別?兩者使用上有何不一樣?
10.任意一顆二叉樹,求最大節點距離java

二面

1.設計一個日誌系統。
2.內存泄露的分類。怎麼查看內存泄露的問題
3.touch事件源碼問題。
4.組件化的問題。module和app之間的區別。moduler通訊是如何實現的。
5.native奔潰的日誌採集,怎麼處理?
6.註解實現一個提示功能:若是int的值大於了3須要提示。git

三面

1.介紹下flutter的啓動流程
2.介紹下flutter與weex的區別
3.組件化介紹一下
4.webview中與js通訊的手段有哪些?
5.介紹下flutter_boost的原理程序員

四面

1.適配器和裝飾模式各自特色和使用場景
2.視頻編解碼是怎麼作的
3.三色球排序github

HR面

1.詢問了除字節跳動之外,還在看其餘工做機會麼?分別是什麼
2.字節、XXX公司、XXX公司,你的優先級是什麼,爲何?
3.以前薪資待遇是多少?你指望的薪資是多少?
4.平時有什麼愛好?
5.瞭解職位需求嗎?
6.有沒有想問的?web

這是我在某論壇看到的故事,我知道咱們不少程序員都有一個大廠夢,但如何針對大廠進行面試準備,如何和 HR 聊天,好比談錢等等,不少程序員就顯得手足無措了。本文就根據本身一些看法談談這些問題。

什麼是合適的候選者

在介紹如何面試以前,這裏先從公司的角度來分析:」到底什麼樣的候選者是公司所須要的技術人才?「就我在如今這家公司的一些面試官經驗來講,一個具備以下特徵的Android程序員是咱們所須要的:面試

  1. 具備本科及以上學歷(名校更好)
  2. 具備2年及以上的工做經驗(名企更好)
  3. 技術紮實,有技術追求和工做激情
  4. 良好的溝通和協做

在上面的四條中,其中第3條是最爲重要的,即技術,技術是決定可否經過面試的最重要最直接的緣由。通常來講,越是大公司,其對技術的要求就越高,儘管部分崗位並不須要那麼好的技術,可是爲了對候選者作出區分,其面試過程仍然會面試一些稍微深刻的話題,相信你們都有所體會。算法

除了技術之外,良好的溝通和協做能力也是比較重要的。也許不少人以爲這個比較抽象,內心會想:」你怎麼知道我有沒有良好的溝通和協做能力呢「?其實這個問題並不難,面試過程就是一次溝經過程,若是不能和麪試官很好地溝通,這就說明候選者的溝通有問題。如何很好地和麪試官溝通呢?給以下幾點建議:數據庫

  • 禮貌和尊重。
  • 聽懂面試官的問題並直接回答。
  • 謙虛謹慎、態度友好。

下面對學歷和工做經驗作一些說明,學歷並非一個硬性要求,即便候選者學校不怎麼好也是有可能經過面試的,這就要求候選者技術很是紮實。而工做經驗,之因此是2年以上,這是由於社會招聘的對象通常都是有必定工做經驗的,而1年工做經驗略短了點,拿百度來講,社招的最低級別通常爲T4,差很少恰好就是2年經驗左右。編程

這裏作下總結,理想的候選者應該是這樣的:

  1. 紮實的技術功底,有技術追求(必須)
  2. 態度、溝通和爲人都很好(必須)
  3. 2年左右工做經驗(基本必須)
  4. 名校、名企、高學歷(非必須,加分項)

基原本說,知足1和2就能經過面試,3和4都是次要條件,可是通常來講不知足3就很難知足1,不要說特例,木有參考意義。

因而可知,技術是面試結果的決定因素。那麼到底技術掌握到什麼程度才能比較輕鬆地經過面試呢?說了那麼多,好像和Android沒有一點關係,下面就開始以Android爲例來分析下面試過程所需的技術。

技術知識梳理目錄

下面的全部技術知識點詳細內容都整理在了開源項目【GitHub】,有須要的能夠自取。

1.Java 基礎知識
  • 面向對象的基本思想
  • Object類相關:Object類的幾個關鍵函數、String涉及到的常量池概念,序列化 & 反序列化。
  • 重要關鍵字:final、static。
  • 內部類:內部類的分類、應用場景、內部類編譯成class後是怎麼樣的。
  • 抽象類 & 接口:區別、應用場景。
  • 編碼:編碼的目的、分類。
  • 異常:異常體系、自定義異常。
  • 註解:註解的基本概念、分類、編譯時註解 & 運行時註解。
  • 容器:重要容器的內部實現、容器間的對比。
  • 內存模型。
  • 垃圾回收。
  • 類加載的過程。
  • 泛型:分類、通配符 & 上下邊界、泛型擦除。
  • 反射:使用。
2.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的權限管理機制。
3.圖片
  • Bitmap相關:Bitmap的大小計算、質量、inJustDecodeBounds、inBitmap。
  • 幾種圖片格式的對比、壓縮。
  • 大圖加載:BitmapRegionDecoder
4.算法

別無捷徑,刷題,可是刷題的時候,要按照題的類型去總結。

5.開源框架
  • RxJava:操做符的應用場景、重點操做符的內部實現、和RxJava的對比。
  • Glide:流程、緩存相關的實現。
  • Retrofit:流程、動態代理 & 註解解析。
  • OkHttp:流程、隊列實現、緩存實現。
6.性能
  • 性能優化技巧:啓動速度優化、佈局優化、內存優化、電量優化、APK大小優化、列表滑動優化。
  • 性能優化工具:TraceView、Systrace、調試GPU過分繪製 & GPU呈現模式分析、Hierarchy Viewer、MAT、Memory Monitor & Heap Viewer & Allocation Tracker、LeakCanary、Lint。
  • ANR
  • ANR緣由
  • ANR產生過程源碼分析
  • 信息收集過程
  • trace文件分析
  • 分析基本流程
  • 具體示例
  • 如何避免產生ANR
  • 性能實踐:解決過的性能問題,從 遇到問題、分析問題、解決問題、結果 四個點進行闡述。
7.View
  • 繪製流程:measure、layout、draw三個關鍵流程。
  • 事件分發:事件分發的原理、處理過的滑動衝突問題。
  • 自定義View:Canvas & Path,實現過的比較複雜的自定義View。
8.架構
  • MVP:MVP的思想 & 優劣勢、在項目中的應用、
9.源碼
  • AMS
  • WMS
  • Binder
  • 應用啓動流程
  • APK相關知識點
  • APK構成:resources.arsc組成、AndroidManifest.xml、aapt做用及原理
  • APK打包過程
  • APK安裝過程
  • APK簽名 & 校驗原理
  • dexopt原理
10.網絡

基礎知識:看一下對於 <<計算機網絡>> ,重點是網絡分層模型、TCP/UDP、HTTP/HTTPS。

11.設計模式

按照23種網絡模型、三個分類進行總結,每種設計模式包含如下三個方面,至少要準備經常使用的幾個:

  • 基本概念:UML圖、簡單例子、應用場景、優點 & 劣勢。
  • Android源碼中的實現
  • 項目中的應用
12.多線程
  • 看併發編程的藝術,這本書的目錄就是多線程最好的知識體系。
  • 遇到過的多線程問題、怎麼解決的。
13.Gradle
  • 經常使用配置。
  • 多渠道打包。
14.插件化
  • 插件化的核心思想。
  • 幾種插件化框架實現的原理。
15.組件化
  • 組件化的優點。
  • Arouter:使用方式、實現原理。
16.Kotlin

有用到的能夠看看。

17.多媒體

音頻、視頻播放。

18.大前端

ReactNative、Flutter:沒學過的能夠了解一下思想。

19.JNI

調用實現方式。

全部的知識點都整理在了開源項目【GitHub】,有須要的朋友能夠自取。

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

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

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

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

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

結語

若是你想去一家不錯的公司,可是目前的硬實力又不到,我以爲仍是有必要去努力一下的,技術能力的高低能決定你走多遠,平臺的高低,能決定你的高度。

若是你經過努力成功進入到了心儀的公司,必定不要懈怠放鬆,職場成長和新技術學習同樣,不進則退。

相關文章
相關標籤/搜索