從字節跳動離職後,拿到探探、趣頭條、愛奇藝、小紅書、15家公司的 offer【轉】

前言

博主目前從事Android開發3年,前兩年一直在抖音工做。我這篇文章並非簡單的描述一些面試中的題,或者總結一些Android的知識,而是想記錄我整個的想法和準備的過程,以及一些心得體會,讓你們更加全面的去看待工做、跳槽和生活(從個人角度,固然確定有不合理的地方,你們借鑑就好)前端

抖音兩年

在字節跳動的兩年時間中見證了抖音從百萬日活到2.5億、團隊從10人到100多人的過程,技術上不一樣時期的選型以及迭代、沉澱和更替。項目上經歷了一個工程到模塊化再到組件化最後插件化,深入理解項目不一樣階段和不一樣體量的時候技術框架的選型。流程上不一樣階段不一樣的方案,一直在探索最大的效率的協同開發。產品上從不斷試錯到穩步發展的過程,也就是數據驅動業務的過程。java

字節跳動是一個偉大的公司,優秀的同事真是數不勝數,我在其中只是一個菜鳥,仰望各類大佬,無論是從技術方面仍是作人作事的方面都學到了不少、成長了不少。在抖音的兩年十分感謝個人同事、領導對個人幫助和提攜,尤爲是亨惠、火火老師、馬老師、江老師、夏老師、將軍、若雷、樂華、龍博等等一羣大牛,還有漂亮的pm小姐姐佳鑫,和帥氣的設計師鼕鼕,只能說我是何其的幸運,可以和一羣優秀的同事一塊兒共事、見證一款偉大app的崛起。android

此次面試瞭如下幾個公司(不是面試順序):
Airbnb、快陪練、探探、猿輔導、趣頭條、脈脈、動動、瓜子二手車、伴魚、最右、BIGO、音娛、快手、小紅書、美菜網、微軟、亞馬遜、Ihandy、餓了嗎、愛奇藝、右劃c++

其中面試沒經過的是:脈脈(一面掛),其餘的公司都到了hr面談薪資,美菜網、音娛、動動、猿題庫等公司hr開誠佈公的跟我說給不了我要的價錢,雖然技術面評價不錯,我也明白,因爲拿到一些offer後,我對不太想去的公司會要的比較高,我本身都以爲確定不會給。微軟和亞馬遜有另外的狀況,由於當時已經基本肯定拿到Airbnb的offer加上眼睛由於上火長了針眼,特別疼,就直接拒絕了。可能有同窗發現了,爲何此次我沒有去BAT去試試(百度、阿里、騰訊),百度的確沒有投遞,阿里和騰訊不是我不想去,實在是太慢了(多是我沒有走內推,而是在boss投遞的緣由),基本上是投遞後一個月後才告訴我簡歷經過去面試。git

爲何要跳槽

爲何要跳槽,這個問題必定要思考清楚,由於跳槽的成本實際上是挺大的,在一家公司積累的不只僅是人脈還有對當前行業以及業務的熟悉度,新進入一家公司,一切須要從頭再來,須要快速的證實本身,尤爲是技術人員,還有就是對新環境和代碼的熟悉,這些都是成本,因此在跳槽前,必定要想好,爲何要跳槽。其實馬爸爸有一句經典的話「要麼錢沒給到位,要麼心委屈了」,說的很形象,我這裏再細說一下:程序員

  1. 錢沒給到位,其實全部的人對本身的評價都是比本身真實的水平要高一些,這就致使,大部分人認爲本身如今貢獻很大,老闆應該加薪,尤爲是看到一些同事作的不如本身(多是本身認爲),工資拿的和本身同樣,甚至比本身高,那就更加有錢給的少了的感受。github

  2. 作的事情是否有價值或者說是否有持續盈利的趨勢,這個很重要,一個公司的產品不盈利沒前景,就算給你開不錯的工資,做爲一個不想混吃等死的人來講,都不想繼續再待下去。web

  3. 機會,做爲一個已經有3年工做經驗的人來講,這個時候更加須要的是一個機會,可以證實本身,給公司帶來更大的價值,完成進一步的突破,若是當前的公司並不能給你這個機會,那麼你就須要考慮跳槽了。面試

那麼跳槽的核心就是利益最大化,固然這裏說的利益,不只僅是薪資福利,還有本身的職業規劃。算法

職業規劃

做爲技術人員,我大概總結了下面三個方向,其實哪一個方向都是大有可爲,關鍵仍是要看本身。

  1. 技術經理

  2. 架構師

  3. 專項領域的專家

薪資福利

做爲一個再也不年輕的程序員來講,已經不能忽略薪資和福利,再也不像剛畢業的同窗,只要能成長、只要平臺好,薪資什麼的不重要。其實每一個階段都有本身的側重點,我大概對薪資、平臺、成長排了個序(本身的觀點)

  1. 1~3年,平臺>=成長>薪資

  2. 3~5年,平臺>=薪資>=成長

  3. 5~10年,平臺=薪資>成長(這個階段也可叫作規劃)

上面是本身不成熟的見解,從自身的一些經驗出發的,僅供參考。

準備

這是最辛苦的階段,你不只要把平常的工做作好,還要開始着手準備刷題、基礎知識準備以及高階知識的準備,除此以外我還對英語進行了一些準備,因爲無論是想去外企、出國以及看英文的文檔,英語都是必不可少的,英語在咱們的平常生活中也愈來愈重要,咱們要,整個階段大概持續了4個多月。其實每一次跳槽,都是對這幾年工做的一個梳理和總結,雖然你們都明白「面試造火箭、進去擰螺絲」的道理,對於公司而言,這是篩選人才的一個方式,畢竟人是第一輩子產力,只要有優秀的人才,那麼造出的火箭纔可能「一飛沖天」。對於我的而言,若是公司裏同事優秀的人,那麼你確定也不會差,咱們確定更但願和優秀的人一塊兒共事。

刷題

個人方式仍是以前的老套路 LeetCode +《劍指offer》,雖然老,可是效果很是不錯。這個過程不只是個腦力活仍是體力活,因爲不能再公司刷題,我通常的選擇方式是在晚上回到家後,因爲公司常常加班,我一般到家是10:00-11:00期間,先鍛鍊半個小時(一會再聊這個事情),而後刷題半個小時到一個小時。固然也能夠在上下班的路上抽時間看看題。

  • LeetCode,刷了300+的題,這裏的刷並非指僅僅只刷一遍,我來回刷了四遍,手寫了一遍(寫了200多道),保證我看到題目或者相似的題目,我能第一時間想出最優的解題思路。

  • 《劍指offer》,這本書真的很棒,總結的很到位,以及每一個階段的思路寫的都很詳細,我是百看不厭,大概50+題,多看幾遍,這能作到觸類旁通。

基礎知識

因爲面的Android崗位,須要準備一些Java和Android方面的知識,有不少的文章都會去介紹怎麼去複習基礎的知識或者進階知識,或者是閱讀一些經典的面試數據,例如任玉剛的《Android開發藝術探索》,都是很是不錯的。你們能夠根據網上的文章和一些數據梳理一個本身的知識體系,將一個一個知識點造成點再到面,這樣能更加深入的理解,並且有本身的側重點,我就列舉一下個人準備的方向:

簡歷

簡歷的重要性就不言而喻了,怎麼樣寫好簡歷是個技術活,固然若是你有很好的背景(學校或者公司),那麼無論你怎麼寫,基本上都不刷掉你,咱們做爲通常的人仍是須要下一番功夫的。拿個人簡歷做爲例子,大概有如下幾個部分:

  1. 我的信息:姓名、出生日期、教育背景、博客地址、github地址、聯繫方式(手機、郵箱和微信號)

  2. 工做經歷:畢業後待過哪些公司,通常是倒序,項目儘可能精簡明瞭,能夠參考SMART原則

  3. 專業技能:本身熟悉的一些技能,這個爲何我寫到最後,由於對於工做三年的同窗來講,面試官更加註重的是你的項目經歷,大部分面試都是看你的項目經從來提問。

怎樣寫簡歷,這個開源網站不錯,教你怎麼寫簡歷,並且有一個在線markdown在線網站,能夠導出pdf。

面試

因爲時間的緣由,有一些面試題記錄的不是很是的詳細,可是大體是這些,可能會漏掉一些題。這篇總結與2017年面試總結同樣,我並不會給出答案,一個是由於,面試太多,細節實在記不住,並且有些題也有可能記錯,有時候一天最多面試了4家,從早上10點到晚上9點一直在面試,我連續面試一週後,直接上火了,眼睛長了個針眼,腫的老大了。二是由於,我這篇文章主要目的並非帶你複習Android的相應知識點,並且每一個人都有本身的側重點。

「求其上者得其中 求其中者得其下」,按照這個原則此次面試我就大膽的面試架構師或者可以帶人的職位,因此不少問題都是架構的考慮和知識的廣度以及本身的思考,這些回答很大程度上是開放題,相信你們都有本身的想法和看法,我就不班門弄斧了,真的是由於抖音發展的太快,見識了太多的問題和優秀解決方案,因此只要本身用點心,能夠學的地方仍是不少的。

總結部分僅是我的的觀點,若是有錯誤或者影響到公司的地方,但願你們能提出,我會修改不恰當的言辭。

1. 快陪練

仍是先填我的信息表格,其實我不太喜歡這種方式,一上來就是我的的詳細信息,你又沒有給我發offer,我也沒決定要來,並且還沒技術面。不過既然來了就要尊重公司的辦事方式,我只簡單寫了一下我以爲能夠告訴公司的我的信息。而後作了一份筆試題,一道算法和一些網絡方面的知識,不難。


快陪練總體的環境並非很好,環境很嘈雜,並且我是在門口面試的,很亂。

一面

  1. MVC、MVP和MVVM的原理和區別

  2. 設計的六大基礎原則

  3. 使用UML畫一下訪問者設計模式

 

二面

  1. 先聊了聊爲何離開如今公司,畢竟如今這麼火

  2. 我作的項目中的一些解決方案,組件化、字節碼注入、包體積的極致優化

  3. 直播的架構設計

 

三面

  1. 設計一個上傳日誌的大小,涉及到,性能、文件大小、怎樣壓縮、時機、TopK問題等

  2. 聊了聊在字節跳動作的事情

 

總結

是一家創業公司,給的薪資仍是挺不錯的,可是因爲是996,沒有加班工資,多出來的錢可能就是加班工資吧,後面聽hr說公司正在打算取消996


 

2. 探探

是經過脈脈上網紅馬映怡推薦的,馬映怡以前在字節跳動,今年4月份到了探探,在脈脈找到了我,正好我有出去看看的意向,就約了時間去面試,探探的辦公環境仍是比較好的。

一面

  1. OpenGL一些知識,頂點着色器、片元着色器的工做原理,什麼是VBO(這個沒想起來),以及shader的一些簡單問題

  2. View的事件傳遞機制

  3. 包體積優化

  4. JVM相關知識,Dalvik和ART的區別

  5. 組件化的實現方案

  6. 算法題,ViewGroup的層級深度,轉換爲二叉樹的層級深度

 

二面

二面面試官,比較注重思惟,我理解爲聰不聰明的意思,有點腦筋急轉彎的意思,要求的最簡單有效的方法。

  1. RecyclerView防止內存OOM的一道題,充分利用自身的緩存機制,可能我始終沒理解問題所在,雖然給出解決方案,可是面試官不滿意,太繁瑣

  2. 討論LRUcache的實現和時間複雜度

 

三面

cto面試

  1. 聊了一下抖音發展的過程當中個人角色,作過什麼事情,有什麼收益

  2. 在華爲的一些經歷,爲何離開華爲

  3. 聊了一到算法題,查找兩個字符串的交集和字符串1中有字符串2中沒有的問題。

 

四面(不是一天)

此次主要是聊一下我將要作的工做,以及讓其餘面試官再次瞭解一下我,由於評級比較高,因此須要謹慎點。

 

總結

總體來講探探發展仍是不錯,尤爲近兩年要上市,環境也不錯,管三餐,加班不嚴重,雙休,工資也給力,可是也是因爲近兩年要上市,因此要作的東西仍是比較多和急,須要你有必定的能力。


 

3. 猿題庫

我是在boss投遞的猿題庫的Android開發崗位,結果hr小姐姐把我當成了server開發,先進來一位server的童鞋,讓我寫了一到算法題(二叉樹的鏡像),而後看看個人簡歷問我,是否是面試android的,我說是,她尷尬的說我是server面試官,而後趕忙與hr溝通,調整成爲Android。


猿題庫面試應該是有硬性的時間指標,應該是每一輪面試都要差很少1個小時,而且會出1~2道算法題。

 

一面

主要聊了下面幾個方面

  1. 熱修復,主要說了ClassLoader的方式和Rubost的插裝方式,重點介紹了Rubost的原理。

  2. 實現直播禮物的一些技術選型,和播放帶有alpha通道MP4的解決方案

  3. 怎麼實現字節碼注入

  4. 抖音組件的探索,SPI到字節碼注入,優缺點。

  5. 接下來就是兩道算法題

  6. String字符串的數字相加

  7. 使用三個線程順序打印有序的數組

  8. 提問環節

 

二面

  1. 包體積優化:靜態Lint,Proguard,AndResGuard和刪除R.java中的全部字段,刪除access$方法,在gradle的transform階段將壓縮png和jpeg,使用google開源的redex方案,每種方案的原理以及優缺點

  2. MVVM-livedata的實現原理

  3. 屬性動畫的原理,這裏沒看過,不太清楚

  4. Kotlin寫一個let的擴展函數,大致寫了一下代碼。

  5. 算法,多是我寫的太慢了,因此就只有一道

    1. 給定一個有序的數組和目標數,找出與目標數最近接的index,要求複雜度是log(n)的時間複雜度

 

三面

三面就比較輕鬆了,面試官一直樂呵呵的,又問了一下alpha視頻的解決方案,而後聊了聊爲何要離開這麼火的項目,問了問個人經歷之類的,最後寫了兩道算法題

  1. 二叉樹的深度和廣度,要求一次遍歷

  2. 給定一個二叉樹和一個目標數,在二叉樹中是否存在一條路徑的全部節點的和與目標數是相同的case,而且打印。

 

總結

效率並非很高,並且並不主動,多是跟我要的薪水過高有關係,後面經過詢問才知道,技術面試是經過了,可能字節跳動原本薪水就很高,我再跳過來,猿輔導考慮到個人工做年限和年齡,會倒掛一大批人,因此只能平薪過來,並且這樣知道我確定不會來,就沒主動跟我說。

整個面試環節整體來講還能夠,可是就是效率不高,也多是我運氣很差,我是4:10到猿題庫的,而後在前臺等了20所分鐘,hr纔來,說了剛纔在電話會議耽誤了,這個理解,而後等待面試又等了10多分鐘,來了server的面試童鞋,寫了道算法題,從新調整到Android面試,又等了15分鐘,真正Android面試開始在5:10左右,面試完成後基本到了8:30了。


對本身的表現基本滿意,就是很久不手寫代碼,有點生疏,寫的比較慢,大多數問題和答案都獲得了面試的承認,對一些知識點沒有複習到,其實我是這樣認爲的,並非全部的問題或者知識都須要知道,你只須要有1~2個方面瞭解的很透徹,獲得面試官的承認就行。


 

4. 趣頭條

一面

  1. 在抖音上顯示本身作的功能,框架的搭建,實現原理,所作的優化點等。

  2. 組件化的實現,爲何作組件化,不一樣實現的優缺點。

  3. hashmap的實現原理

  4. view的優化,減小層級,異步加載,x2c框架引入,優缺點,textview的優化。

  5. mp4播放alpha視頻實現的原理
    一面面試官大概聊了1個小時左右,沒讓我寫算法,細究原理和細節,很是仔細。

 

二面

  1. 冷啓優化的一些方案。

  2. 數據驅動業務的理解,怎麼作,和pm產生分歧怎麼解決。

  3. 我全部作的優化的收益是什麼,有什麼數據支撐。

  4. 事件分發機制,舉了一個具體的例子來解決。

  5. http的一些問題,1.1和2.0區別,心跳機制,http怎麼創建連接,怎麼進行數據加密等。

  6. 爲何離開抖音,職業發展,訴求等。

聊了大概一個小時,面試官的思路相對獨特,不是爲作技術而作技術,技術始終要服務於業務,我很是承認。

總結

趣頭條北京位於海淀,位置不靠近地鐵,須要步行一段時間,不過效率挺高的,在面試完的次日就給我發offer了,面試流程也相對較少。對趣頭條的營收模式看的不是很清楚,相似發錢看新聞,可是如今頭條也再作這個,趣頭條可以搞得過頭條是個問題,若是沒有增加點,那後期的轉型是什麼(我瞎操心啥)?整體來講體驗仍是不錯的,hr也很真誠,屢次溝通,雖然最後我沒有去,感興趣的同窗能夠去看看。


 

5. 瓜子二手車

瓜子二手車真的是太遠了,從海淀到工做地方將近花費了2個小時,並且還不在地鐵附近,還須要坐公交。

 

一面

  1. 聊了一下項目中作過的東西,字節碼注入相關知識,transform優化,mp4禮物實現等

  2. 從桌面點擊icon圖標開始,整個啓動activity的啓動過程

  3. Binder的實現原理

  4. 插件化的原理,以及hook點,大概有兩個,能夠網上搜索一下

  5. hashmap的實現原理

  6. 單例的實現,sychrnized的實現原理,以及雙鎖不加violate,會不會有線程安全問題

  7. 二叉樹,讀取每一層最右邊的節點

 

二面

  1. 聊聊大概履歷,以及在華爲、字節跳動都作了什麼,爲何要離開。

  2. 職業規劃,怎麼帶領團隊

  3. 代碼設計的基礎原則,以及用UML畫出工廠模式

  4. 將兩個有序的鏈表合併成一個有序的鏈表,遞歸和循環兩中方式

  5. 時間分發機制,而且須要從Android的sensor開始到應用層,我只知道從Activity開始的流程。

  6. 聊操做系統Unix,汗顏,我知之甚少。

  7. 對新技術的見解(flutter),瓜子二手車也已經開始在項目中使用fultter相關技術

 

三面(總監)

  1. 自我介紹,爲何要離開抖音

  2. 線程安全的問題,sychronized和viloated的使用

  3. 實現一個CAS(樂觀鎖)的方法

  4. HashMap的實現原理,怎麼優化內存佔用,優化resize的過程,這個是開放的問題

 

四面(VP?)

  1. 自我介紹,在抖音作了什麼

  2. 在抖音作的比較好的兩件事情

  3. 設計一個美團的框架,組件化

 

總結

瓜子二手車是衆多二手車中作的還算比較好的公司,如今像優信、人人二手車好像都不是很好了,就是太遠了,公司附近也沒有地鐵站,就算是公交站還須要走2千米,可是面試官感受仍是比較有水平的,後期的hr跟我談也是誠意滿滿,整個團隊在我來看,仍是一個想作事情的態度。整體來講hr仍是很是真誠的,想去的朋友能夠考慮考慮。


 

6. 伴魚

筆試

  1. 雙鎖單例,爲何要價violate

  2. 內部類訪問外部類

  3. 函數值傳遞的一些題

  4. 子類繼承父類,個字都有靜態變量、靜態代碼塊、構造函數,執行的順序

  5. int數組,除了一個數字外,其餘數字都出現兩次,找出這個只出現一次的數字

 

一面

  1. 圖片壓縮原理,以及在transform階段進行的必要性,討論的還挺激烈

  2. 內部類引用外部函數的參數,爲何要final定義,值傳遞

  3. 判斷一個應用是否切到後臺

  4. 組件化的探討,假設場景,怎麼處理

  5. 插件化的實現方式,以及對相應的場景進行討論

 

二面

伴魚的架構師

  1. 一個疑難雜症,也是自定義插件,討論是否有更好的方式,最後結果是,他想了一個比較巧妙的方式,沒有實踐過,可是告訴我能夠,保留本身的意見。

  2. 字節碼相關知識,ASM以及MD5的實現原理,png的壓縮原理,這裏比較亂,就是說到哪問道哪,比較發散。

  3. 對成爲架構師的幾點見解

 

三面

  1. mp4實現alpha通道的原理,優缺點,收益是什麼

  2. m*n的二維數組,作(0,0)出發,能夠上下左右走,0爲暢通,1爲阻塞,目標位置(k,j),問是否能到達這個位置,相似迷宮的算法

 

總結

感受伴魚的面試目的是問倒你,不少次討論問題,我說你有什麼見解或者正確答案的時候,面試官就讓我回去本身上網搜一下,或者給出的方案,經不起個人推敲,我問上兩三個問題,面試官反而有點語塞,感受很奇怪。不過公司有本身的考量,最後給的薪資不是很滿意,就沒有去,二面面試官給個人體驗仍是很是不錯的,考慮全面,並且也有深度。


 

7. 最右

筆試題

Android中的引用關係

自定義view步驟
activity生命週期

 

一面

  1. 介紹最右的現狀

  2. 經常使用的播放器,以及優缺點

  3. opengl的繪製流程

  4. 音視頻編解碼的流程

 

二面

  1. 在抖音作的工做

  2. 性能優化,包體積優化,冷啓優化,卡頓優化的一些實現方案

  3. mvc mvp mvvm的區別,以及本身實現的輕量級mvvm的原理

  4. 編解碼的相關知識

  5. ijkplayer的優缺點,以及是否看過相關源碼

  6. flutter的探討

 

總結

整體來講面試流程中規中矩,可是面試官的問題並非很全面,更加關心的是本身的關心的領域,對於我提出的問題(大前端和flutter),看法也僅僅是須要對新技術保持必定的敏感度,後面hr讓我去跟cto再談一輪,由於考慮到各個方面的因素,就直接拒絕了。


 

8. BIGO

BIGO是YY旗下的一個公司,目前剛剛收購了一個海外的直播產品,並且未來會把業務放到北京,仍是想作一些事情,員工福利也是不錯的。因爲如今主要的人員仍是在廣東,前兩面都是電話面試

 

一面

  1. 多線程怎麼保證線程安全,violated、sychronized、reenterLock,這三個鎖的原理以及區別,JVM是怎樣實現sychronized線程安全的。

  2. HashMap的實現原理,put()原理。hash衝突,resize,1.8的改動,什麼是紅黑樹,優勢。

  3. ui優化,主要從檢測和優化兩個部分說明,優化又分爲通用的優化,和改變繪製流程的優化。

  4. jvm的介紹,內存介紹,gc等

  5. binder機制

 

二面

  1. hashmap是否線程安全,concurenthashmap實現原理,1.8以後有什麼改變

  2. 播放透明的mp4的原理

  3. 冷啓優化和ui卡頓的監測和優化

  4. thinker實現插件化的原理,咱們使用什麼什麼實現熱更新,熱更新的通用方案,以及優缺點

 

三面

  1. 介紹本身以前的工做經歷,在華爲作了什麼,爲何離開華爲,在抖音都作了什麼工做

  2. 實現mp4播放alpha視頻的原理

  3. 是否使用過kotlin,kotlin的一些特性

  4. 內存泄漏和oom怎麼產生的,內存泄漏的監控,leakcanery的實現原理

  5. 看過哪些第三方框架的源碼,具體的實現原理。retrofit、okhttp和eventbus等

 

總結

BIGO一二面仍是偏基礎的知識,並無很深或者很偏的問題,三面面試官是以前騰訊的大佬,面試更多的我作過的項目討論和架構的問題,以及其餘方面的一些問題,總體感受仍是比較好的,hr小姐姐是廣東人,說話的聲音很好聽,也很真誠。


 

9. 音娛科技

主要作的日本的直播產品,公司並不大,創始人好像也是頭條出來的,各類福利制度和頭條進本相似。

 

一面

  1. activity生命週期 以及各個函數的含義

  2. activity task的四種類型

  3. fragment的生命週期

  4. 啓動server的兩種方式

  5. intent傳輸數據的大小限制

  6. binder的原理

  7. activity的啓動流程

  8. hashmap實現原理,1.8的改動,紅黑樹概念

  9. 合併兩個有序的鏈表

 

二面

  1. 爲何離開抖音

  2. 組件化實現方案 spi的缺點,怎麼使用字節碼注入

  3. Dex的組成,爲何每一個dex會有65536的限制

  4. 還有好多,時間太長記不太清楚了

 

總結

面試技術應該是經過了,最終卡在薪資,可能我要的過高,公司可能以爲依照我如今背景,性價比不高,就沒談下去,後面跟其餘公司聊的時候,又瞭解了一些這個公司的狀況,聽說年終獎特別少,不少人在年後都跳槽了。


 

10. 小紅書

一面

  1. Activity的生命週期、fragment的生命週期,onRestart()何時調用

  2. service的兩種啓動方式,service的生命週期

  3. binder機制

  4. 進程保活:1.防止進程被殺 2.殺死後再拉起,詳細的答案網上搜一下,這裏就不列舉出來了

  5. app的包體積優化,lint、proguard、andresguard原理,字節碼注入,刪除R.java的變量,刪除access$001方法,壓縮圖片資源和使用redex等。

 

二面

  1. 自我介紹

  2. 對JNI和C++瞭解嗎?基本不瞭解,就略過了

  3. Activity的launchMode,每一個Mode的含義,Activity的啓動流程

  4. 怎麼樣實現MP4播放alpha的視頻,編解碼的一些流程,NV20、YUV、RGB一些概念,SurfaceView和TextureSurfaceView的區別

  5. 組件化的實現,都有什麼技術方案,優缺點

  6. 使用數組實現一個隊列,有void add(int val)void pop()兩個函數,並且須要考慮擴容

 

三面(業務線負責人)

  1. 介紹本身,介紹在抖音作過的事情

  2. 哪兩件事情作得最有成就感

  3. 怎樣重構代碼,基本的6大原則,詳細討論每一個原則的含義,使用過的設計模式

  4. 假定場景,接口定義的有缺陷,第二版須要修改,是增長仍是直接修改,以及還有沒有其餘的方案,怎麼去作,爲何,這個是開放的題,結合設計原則,以及真實的狀況和本身的一些例子說明便可

 

四面(Android負責人)

  1. 介紹本身,爲何離開抖音

  2. mp4播放alpha視頻的實現方案,詳細解說

  3. 跨部門合做,具體的一個例子,怎麼去溝通,假設一個例子,用最恰當的方式去溝通。

  4. 怎麼向上管理以及向下管理

 

五面(相似VP級別)

  1. 對技術選型的見解,flutter、c++、java、kotlin,核心是解決問題

  2. 是否會使用kotlin,優點,以及在項目中真正帶來的收益

  3. 組件化,依賴版本號不一樣的解決辦法

  4. 插件化,一些實際問題的,具體是什麼記不太清楚了

 

總結

小紅書的裝修真是豪,辦公環境特別棒,可是面試流程有點多,足足面了5輪,不過整體來講技術仍是很不錯的,不管是廣度仍是深度,尤爲最後一面,專門從上海飛來面試,十分榮幸,從這點就能看出公司對人才的重視程度,是一個值得加入的公司,hr小姐姐人美也真誠。


 

11. 餓了嗎

一面

  1. 包體積優化,Lint、proguard、andResGuard的原理,以及抖音作的一些包體積優化的方案

  2. 線程和線程池的討論,爲何要用線程池,線程池各個參數的含義,若是隊列滿了會發生什麼,爲何線程池的數量是cpu核數+1

  3. 好吧,記不起來了

 

二面

  1. 自我介紹

  2. 線程安全的方式,sychronized和violated的區別

  3. 怎麼自定義Transform、自定義Task,Task之間怎麼依賴,大體順序是什麼,增量編譯的概念,異步加快文件的讀取,ASM接口的使用

  4. cookie、session、token的含義和區別,這裏我確實不熟悉,就直接說我不太清楚了。

 

三面

  1. 自我介紹

  2. 在抖音都作過什麼事情,相關的幾個方向深刻討論一下

  3. 對於架構的思考,怎樣設計一個好的架構,6大設計原則,分別說明一下

  4. 用過什麼設計模式,爲何要用設計模式,對於設計模式的思考

  5. 怎樣提升開發效率,較少溝通成本,實例說明下

  6. 爲何要引入kotlin,優缺點

  7. 之後的規劃

 

四面(交叉面)

  1. 介紹本身,爲何離開抖音

  2. 音視頻的相關知識,NV20,YUV,RGB的關係,爲何mp4的壓縮率比webp的動畫要高,編解碼的流程,通用的編碼格式,軟硬解的區別。

  3. View的繪製流程,硬件加速的原理和軟件繪製的區別,以及相關的view的優化

 

總結

整體來講面試體驗仍是不錯的,三面面試官對於職業發展和新技術的看法都是很是深入,也給與了我不少建議。


 

12. 美菜網

一面

  1. 動畫實現的方式,幀動畫和屬性動畫的實現原理

  2. 一張圖片加載到手機內存中真正的大小是怎麼計算的

  3. OOM產生的原理,內存泄漏是因爲什麼引發的,GCRoot有哪幾種類型,JVM等

  4. 一個二分查找的變形題,具體的題目記不清楚了

  5. 爲何要作組件化,組件化的實現方案都有什麼,優缺點

  6. Activity的啓動流程

  7. View的繪製流程,從VSYNC信號開始

 

二面

  1. 性能優化,包體積優化,R.java優化,access$xx方法優化,資源優化原理

  2. MVVM是什麼,我本身作的輕量級的MVVM的實現方式,優勢是什麼

  3. 看過什麼第三方的源碼,retrofit原理,動態代理和靜態代理的區別,是否使用反射,okhttp的原理,Http和Https的區別,Https的socket security layer的握手,EventBus的原理,3.0的區別,APT的使用以及怎樣處理字節碼(ASM、javaassit、BECEL等)

 

總結

美菜網真的是好亂呀,面試人感受有幾十個,如今美菜網擴張這麼厲害嗎?我面試的時候我旁邊的哥們也在面試,真的是很嘈雜,不過面試官的基礎還不錯,看過一些源碼,可是並無問到什麼特別好的點,對整個新技術的看法和對個人建議(通常會問面試官一些對於新技術例如flutter見解,和對個人一些建議)感受不是很深,跟hr談完後就離開了。


 

13. 愛奇藝

一面

  1. 從Activity A跳到Activity B的生命週期的調用過程,若是是異步進程呢

  2. 冷起優化,systrace怎麼使用,實現原理

  3. ANR是什麼,怎麼上報ANR,有些手機拿不出,有些手機拿不出anr/traces.txt,怎麼查找ANR問題

  4. 插件化的原理,Activity的啓動流程,hook點

  5. 一個類,內部有一個鏈表的數據結構,實現void add(Node n)void remove(int index)的函數

 

二面

  1. 介紹工做經驗,爲何離開抖音

  2. HashMap的實現原理

  3. 在抖音作的工做,主要說了ui優化和冷起優化兩個部分,擴展開來,討論了不少相關的知識點

  4. 手寫消費者生產者模型的代碼

 

總結

此次面試的是奇異果,並非愛奇藝app,由於我仍是想作app,二面以後,我就跟面試官說了個人想法,就不必聊下去了,就直接走了。


 

14. 快手

一面

  1. handler介紹,爲何阻塞不會形成anr,屏障消息,產生內存泄露緣由,handler內存泄露的引用鏈

  2. 事件攔截機制,view的繪製流程

  3. android的系統渲染原理,renderthread的解釋,三緩衝機制播放透明mp4的原理,surfaceview和textureview的區別

  4. opengl的繪製流程,texturesurface是什麼,頂點着色器和片元着色器各自做用,VOB是什麼

  5. 一個無序的int數組,給一個target數字,找出數組中兩個數字相加爲target,並輸出座標

 

二面

二面面試官是facebook回來的,面試風格的確和以前的面試官討論不同

  1. hashmap的實現原理,怎樣找到index,size爲何是2的倍數,怎樣resize,resize事後,以前的hash衝突還存在嗎?currenthashmap的實現原理

  2. 怎樣保證多線程的安全,什麼是樂觀鎖,怎麼使用

  3. 設計一個發送語音模塊的架構,須要寫出全部接口函數,而且須要詳細說明,可能面試官更加在乎設計能力,這裏討論的時間很是長。

  4. view的繪製流程,onMeasure、onLayout、onDraw,各個參數是什麼含義,尤爲是widthMeasureSpec、heightMeasureSpec以及對應的AT_MOST、EXACTLY和UNSPECIFIED

  5. 數組中存有1-3的三種數字,例如[1,2,3,1,2,2,1,3,3],將其排序爲[1,1,1,2,2,2,3,3,3],要求時間複雜度,後續將內容變爲一個對象,繼續排序

 

三面

  1. 工做經歷介紹,爲何離開抖音

  2. mp4播放alpha視頻的原理,與其餘方案的對比,收益點是什麼

  3. "之"字形打印二叉樹

  4. 1~100盞燈,都是亮的,第一次將能被1整除的數的燈按下,變暗,第二次將能被2整除的數的等按下,變亮,第三次將能被3整除的數的等按下,變暗......第100次將能被100整除的數的燈按下,問,最後有多少盞燈是亮的。

 

總結

整體來講面試官的技術仍是很厲害的,二面面試官的背景很好,思路也獨特,有點外企風格。三面面試官比較注重算法,和解決問題的思路。整個面試流程真的是不太友好,三次面試去了三次,並且前兩次都是在茶水間,一直說會議室訂不到,環境特別嘈雜,並且前兩次都是臨近飯點,茶水間送飯更是雜亂,感受快手效率和環境有一些混亂(我的面試感受),可是不可否認快手在2018年的成績仍是很好的,尤爲是直播的營收仍是至關的不錯。


 

15. Airbnb

因爲Airbnb面試了七輪,並且不少同窗都想看,那我就單獨寫一篇關於Airbnb的面經,正在整理中,整理好後會把鏈接發出來,歡迎關注


 

16. 右劃

時間真的是有點長,記不太清楚了,只能記個大概,一共三面,就不分開寫了。

  1. 抖音作了什麼

  2. Activity的啓動流程

  3. 手寫LruChache

  4. 怎麼播放一個alpha的mp4視頻

  5. 進程間的通信方式,Binder的機制,爲何不使用Socket

  6. Activity的啓動模式,進程間啓動是否不一樣

 

總結

右劃真的是一家很是不錯的公司,有一件事情就體現了整個公司的價值觀:因爲我當天去公司接待的人比較多,二面和三面中間大概有兩個小時的空檔,我其實挺不滿意的,跟hr反饋了這個事情,hr立馬就跟我解釋了事情的緣由,而且立馬跟我道歉了,後面cto還專門爲這個事情跟我說了緣由。雖而後面沒有去這個公司,可是我仍是很欣賞的,從公司層面,公司的定位很明確,並且有本身的核心技術。從我的來看,公司也是很是人性化,管三餐有房補並且有問題及時改正,我以爲你們能夠來看看。

 

HR面總結

在大多數互聯網公司內(除了外企),到了HR面,基本上已經定下來,正常的聊聊就能發offer了,只要別太「個性」,或者三觀異於常人就能收到offer,大致就是一個積極樂觀的態度。有幾點須要注意下:

  1. 不要說前公司和前leader的壞話

  2. 對於爲何離開原公司,標準答案是目前公司不適合現有的自身發展,尋求更好的機會,(固然大部分都是由於錢 心知肚明就行,不用說出來)

  3. 展示本身積極樂觀和樂於助人的一面

注意以上幾點大致就沒問題了。ps:Airbnb的文化面很是重要,聽說20%的面試者在這個環節中被刷掉。

討論

我會討論幾個話題,固然都是從我認知出發,並不必定對,歡迎你們一塊兒探討。

面試

面試過程其實大部分時候是,面試官或者公司是主導方,大部分的節奏是跟着面試官走,可是我以爲面試其實就是一個相互探討的過程,不只是公司在選擇你,你也在選擇公司、之後工做的同事和leader。因此我此次面試中,更多的是和麪試官探討,也會反問面試官一些問題,不只僅是最後面試官說能夠問他幾個問題,在面試過程當中就會詢問一些,優秀的面試官會跟你探討,而且討論出一個合理的方案或者正確的答案,整個過程很是愉悅,相互都學習到了,可是有一些面試,則不太友好,問道的問題老是說本身回去百度一下,這個很讓我無語。

此次最大的收穫就是跟60多位面試官的交流,更加讓我認清我本身,認清本身的長處、短板和之後的規劃,和對作人作事的見解,在這裏真誠的感謝60多位面試官。

互聯網寒冬

對於這個話題,從我自身的角度而言有一些感觸,從2018年開始互聯網就一直有寒冬的說法,各大互聯網開始裁人、縮減HC甚至對碼農的年終獎下手(辛辛苦苦一年,就期望年終獎~),固然最近確實環境有一些波動,可是遠沒有網上傳的寒冬已至那麼嚴重。從個人面試結果來看就知道,互聯網並非寒冬,只不過是更加理智,對全部的面試者來講要求的更高,因此咱們更加要注重自身能力的培養,這並非說咱們要全身心的投入到刷算法,背理論知識等,咱們更加註重本身的理論知識怎樣可以爲公司、產品帶來更大的價值,從軟實力方面來講,不只要把事情作好,更要作好向上管理和向下管理。我的建議:想好爲何要跳槽,無腦跳是最很差的狀況,若是必定要跳槽,最好的狀況是騎驢找馬,不要裸辭,跳槽需謹慎!!跳槽需謹慎!!跳槽需謹慎!!

學歷是否重要

個人答案是重要,我就是學歷的受益者,只要投遞出的簡歷都會邀請面試(除了一些對工做年限限制很是嚴格的企業,hulu)。固然,在互聯網的圈子中,核心是你自己的技術,可是有多少人的技術能達到逆天或者很是牛逼的地步,若是你是這樣的人,啥都不用說了,可是我以爲絕大部分的程序員都是普通人、日常人,不要說什麼3年之後公司就不看學歷了,學歷是一生的事情,那些高考可以碾壓你的人,出了社會只要他們願意,照樣能碾壓你,你努力,你拼命,別人也不會睡大覺等你,因此,能提高本身的學歷,仍是要儘可能提高的。

大公司 VS 小公司

「大公司擰螺絲、小公司獨當一面,進步更快」,我不太認同這句話,固然具體狀況具體分析,每一個人的狀況不一樣,可是我仍是以爲你們能去大公司仍是儘可能去大公司,緣由我總結了如下幾點:

  1. 鍍金,這一點我相信大部分同窗都是贊同的,我就不贅言了。

  2. 知識的深度和積累,在大公司你能學到的東西更深和更加系統,並且能夠有時間本身去思考和學習,尤爲對於工做時間不長的同窗。

  3. 和優秀的人一塊兒工做,大公司碰到優秀同事的機率更大,像我這樣的普通人其實都是在模仿和學習,正是因爲身邊有了優秀太多的人,纔會有危機感,纔有機會跟着他們去學習,學習他們怎樣學習、怎樣思考問題甚至怎樣爲人處世。在華爲中有到鑫和李橋,在抖音中,有夏老師、江老師還有樂華大佬等等,太多人,我從他們身上學到太多的東西,有一些能讓我受益終身。

選擇

選擇一樣是很是重要的,選擇的首要前提是你要有不少機會,否則你都沒機會怎麼選擇,在不少機會擺在你面的時候,必定要認真思考,不要衝動,想好本身須要的,多聽別人的意見,最後本身決定。咱們不能保證每一次選擇都是正確的,可是能保證咱們是不後悔的,遇事要冷靜,多思考。

這裏說的選擇不只僅是選擇去哪一個公司,從事什麼方向,還有與什麼樣的同事工做,選擇什麼樣的leader,甚至是生活中的事情,網上說一我的要有一些成就,須要具有下面幾點,我以爲很是的對:

  1. 你本身要行

  2. 有人以爲你行

  3. 以爲你行的人也行

生活與工做

其實這個話題對我來講有一些困惑,「工做是爲了更好的生活」,這句話是很是正確的,可是做爲一個沒有背景、父母幫你付不起首付的普通人來講哪裏來的享受生活,惟有不斷努力、不斷的進步纔有更好的物質回報,北京是全中國的人才彙集地,在工做的三年中,我不敢有一絲的懈怠,由於身邊比我條件好,能力比我強,年齡比我小的人太多了,不論在哪裏資源的分配都是二八原則。有不少身邊人說我是苦行僧,不懂得享受生活,太無趣,的確我不否定,可是我知道惟有這樣,我才能爲個人父母、愛人以及之後的孩子撐起一片天,反過來說,這些又是個人動力。感慨有點多了,這個話題全看本身,我滿意目前的一個狀態。我的拙見,你們看看就行。

最後

感謝你們能耐着性子,看完我囉哩囉嗦的面經,以上僅是我的的觀點。感受兩年稍縱即逝,在這兩年中成長了不少,感謝全部幫助過個人人。

相關文章
相關標籤/搜索