我這篇文章並非簡單的描述一些面試中的題,或者總結一些Android的知識,而是想記錄我整個的想法和準備的過程,以及一些心得體會,讓你們更加全面的去看待工做、跳槽和生活(從個人角度,固然確定有不合理的地方,你們借鑑就好)前端
在字節跳動的兩年時間中見證了抖音從百萬日活到2.5億、團隊從10人到100多人的過程,技術上不一樣時期的選型以及迭代、沉澱和更替。項目上經歷了一個工程到模塊化再到組件化最後插件化,深入理解項目不一樣階段和不一樣體量的時候技術框架的選型。流程上不一樣階段不一樣的方案,一直在探索最大的效率的協同開發。產品上從不斷試錯到穩步發展的過程,也就是數據驅動業務的過程。java
字節跳動是一個偉大的公司,優秀的同事真是數不勝數,我在其中只是一個菜鳥,仰望各類大佬,無論是從技術方面仍是作人作事的方面都學到了不少、成長了不少。在抖音的兩年十分感謝個人同事、領導對個人幫助和提攜,尤爲是亨惠、火火老師、馬老師、江老師、夏老師、將軍、若雷、樂華、龍博等等一羣大牛,還有漂亮的pm小姐姐佳鑫,和帥氣的設計師鼕鼕,只能說我是何其的幸運,可以和一羣優秀的同事一塊兒共事、見證一款偉大app的崛起。android
此次面試瞭如下幾個公司(不是面試順序):
Airbnb、快陪練、探探、猿輔導、趣頭條、脈脈、動動、瓜子二手車、伴魚、最右、BIGO、音娛、快手、小紅書、美菜網、微軟、亞馬遜、Ihandy、餓了嗎、愛奇藝、右劃c++
其中面試沒經過的是:脈脈(一面掛),其餘的公司都到了hr面談薪資,美菜網、音娛、動動、猿題庫等公司hr開誠佈公的跟我說給不了我要的價錢,雖然技術面評價不錯,我也明白,因爲拿到一些offer後,我對不太想去的公司會要的比較高,我本身都以爲確定不會給。微軟和亞馬遜有另外的狀況,由於當時已經基本肯定拿到Airbnb的offer加上眼睛由於上火長了針眼,特別疼,就直接拒絕了。可能有同窗發現了,爲何此次我沒有去BAT去試試(百度、阿里、騰訊),百度的確沒有投遞,阿里和騰訊不是我不想去,實在是太慢了(多是我沒有走內推,而是在boss投遞的緣由),基本上是投遞後一個月後才告訴我簡歷經過去面試。
git
這些面試題是今年去Airbnb、快手、小紅書、猿輔導等15家公司面試後整理的面試題,還借鑑了網友去百度、小米、樂視、美團、5八、獵豹、360、新浪、搜狐等一線互聯網公司面試被問到的題目。而且大多數都整理了答案,熟悉這些知識點會大大增長經過前兩輪技術面試的概率。程序員
我去面試的全部公司問到的題目基本上全都包含在這些面試題裏。對於要找工做的朋友們來講很值得短時間快速突擊一下。須要的朋友留下郵箱,我會一一發送的。github
爲何要跳槽,這個問題必定要思考清楚,由於跳槽的成本實際上是挺大的,在一家公司積累的不只僅是人脈還有對當前行業以及業務的熟悉度,新進入一家公司,一切須要從頭再來,須要快速的證實本身,尤爲是技術人員,還有就是對新環境和代碼的熟悉,這些都是成本,因此在跳槽前,必定要想好,爲何要跳槽。其實馬爸爸有一句經典的話「要麼錢沒給到位,要麼心委屈了」,說的很形象,我這裏再細說一下:web
那麼跳槽的核心就是利益最大化,固然這裏說的利益,不只僅是薪資福利,還有本身的職業規劃。面試
做爲技術人員,我大概總結了下面三個方向,其實哪一個方向都是大有可爲,關鍵仍是要看本身。算法
做爲一個再也不年輕的程序員來講,已經不能忽略薪資和福利,再也不像剛畢業的同窗,只要能成長、只要平臺好,薪資什麼的不重要。其實每一個階段都有本身的側重點,我大概對薪資、平臺、成長排了個序(本身的觀點)
上面是本身不成熟的見解,從自身的一些經驗出發的,僅供參考。
這是最辛苦的階段,你不只要把平常的工做作好,還要開始着手準備刷題、基礎知識準備以及高階知識的準備,除此以外我還對英語進行了一些準備,因爲無論是想去外企、出國以及看英文的文檔,英語都是必不可少的,英語在咱們的平常生活中也愈來愈重要,咱們要,整個階段大概持續了4個多月。其實每一次跳槽,都是對這幾年工做的一個梳理和總結,雖然你們都明白「面試造火箭、進去擰螺絲」的道理,對於公司而言,這是篩選人才的一個方式,畢竟人是第一輩子產力,只要有優秀的人才,那麼造出的火箭纔可能「一飛沖天」。對於我的而言,若是公司裏同事優秀的人,那麼你確定也不會差,咱們確定更但願和優秀的人一塊兒共事。
個人方式仍是以前的老套路LeetCode +《劍指offer》,雖然老,可是效果很是不錯。這個過程不只是個腦力活仍是體力活,因爲不能再公司刷題,我通常的選擇方式是在晚上回到家後,因爲公司常常加班,我一般到家是10:00-11:00期間,先鍛鍊半個小時(一會再聊這個事情),而後刷題半個小時到一個小時。固然也能夠在上下班的路上抽時間看看題。
因爲面的Android崗位,須要準備一些Java和Android方面的知識,有不少的文章都會去介紹怎麼去複習基礎的知識或者進階知識,或者是閱讀一些經典的面試數據,例如任玉剛的《Android開發藝術探索》,都是很是不錯的。你們能夠根據網上的文章和一些數據梳理一個本身的知識體系,將一個一個知識點造成點再到面,這樣能更加深入的理解,並且有本身的側重點,我就列舉一下個人準備的方向:
簡歷的重要性就不言而喻了,怎麼樣寫好簡歷是個技術活,固然若是你有很好的背景(學校或者公司),那麼無論你怎麼寫,基本上都不刷掉你,咱們做爲通常的人仍是須要下一番功夫的。拿個人簡歷做爲例子,大概有如下幾個部分:
怎樣寫簡歷,這個開源網站不錯,教你怎麼寫簡歷,並且有一個在線markdown在線網站,能夠導出pdf。
因爲時間的緣由,有一些面試題記錄的不是很是的詳細,可是大體是這些,可能會漏掉一些題。這篇總結與2017年面試總結同樣,我並不會給出答案,一個是由於,面試太多,細節實在記不住,並且有些題也有可能記錯,有時候一天最多面試了4家,從早上10點到晚上9點一直在面試,我連續面試一週後,直接上火了,眼睛長了個針眼,腫的老大了。二是由於,我這篇文章主要目的並非帶你複習Android的相應知識點,並且每一個人都有本身的側重點。
「求其上者得其中 求其中者得其下」,按照這個原則此次面試我就大膽的面試架構師或者可以帶人的職位,因此不少問題都是架構的考慮和知識的廣度以及本身的思考,這些回答很大程度上是開放題,相信你們都有本身的想法和看法,我就不班門弄斧了,真的是由於抖音發展的太快,見識了太多的問題和優秀解決方案,因此只要本身用點心,能夠學的地方仍是不少的。
總結部分僅是我的的觀點,若是有錯誤或者影響到公司的地方,但願你們能提出,我會修改不恰當的言辭。
仍是先填我的信息表格,其實我不太喜歡這種方式,一上來就是我的的詳細信息,你又沒有給我發offer,我也沒決定要來,並且還沒技術面。不過既然來了就要尊重公司的辦事方式,我只簡單寫了一下我以爲能夠告訴公司的我的信息。而後作了一份筆試題,一道算法和一些網絡方面的知識,不難。
快陪練總體的環境並非很好,環境很嘈雜,並且我是在門口面試的,很亂。
- MVC、MVP和MVVM的原理和區別
- 設計的六大基礎原則
- 使用UML畫一下訪問者設計模式
- 先聊了聊爲何離開如今公司,畢竟如今這麼火
- 我作的項目中的一些解決方案,組件化、字節碼注入、包體積的極致優化
- 直播的架構設計
- 設計一個上傳日誌的大小,涉及到,性能、文件大小、怎樣壓縮、時機、TopK問題等
- 聊了聊在字節跳動作的事情
是一家創業公司,給的薪資仍是挺不錯的,可是因爲是996,沒有加班工資,多出來的錢可能就是加班工資吧,後面聽hr說公司正在打算取消996
是經過脈脈上網紅馬映怡推薦的,馬映怡以前在字節跳動,今年4月份到了探探,在脈脈找到了我,正好我有出去看看的意向,就約了時間去面試,探探的辦公環境仍是比較好的。
- OpenGL一些知識,頂點着色器、片元着色器的工做原理,什麼是VBO(這個沒想起來),以及shader的一些簡單問題
- View的事件傳遞機制
- 包體積優化
- JVM相關知識,Dalvik和ART的區別
- 組件化的實現方案
- 算法題,ViewGroup的層級深度,轉換爲二叉樹的層級深度
二面面試官,比較注重思惟,我理解爲聰不聰明的意思,有點腦筋急轉彎的意思,要求的最簡單有效的方法。
- RecyclerView防止內存OOM的一道題,充分利用自身的緩存機制,可能我始終沒理解問題所在,雖然給出解決方案,可是面試官不滿意,太繁瑣
- 討論LRUcache的實現和時間複雜度
cto面試
- 聊了一下抖音發展的過程當中個人角色,作過什麼事情,有什麼收益
- 在華爲的一些經歷,爲何離開華爲
- 聊了一到算法題,查找兩個字符串的交集和字符串1中有字符串2中沒有的問題。
此次主要是聊一下我將要作的工做,以及讓其餘面試官再次瞭解一下我,由於評級比較高,因此須要謹慎點。
總體來講探探發展仍是不錯,尤爲近兩年要上市,環境也不錯,管三餐,加班不嚴重,雙休,工資也給力,可是也是因爲近兩年要上市,因此要作的東西仍是比較多和急,須要你有必定的能力。
我是在boss投遞的猿題庫的Android開發崗位,結果hr小姐姐把我當成了server開發,先進來一位server的童鞋,讓我寫了一到算法題(二叉樹的鏡像),而後看看個人簡歷問我,是否是面試android的,我說是,她尷尬的說我是server面試官,而後趕忙與hr溝通,調整成爲Android。
猿題庫面試應該是有硬性的時間指標,應該是每一輪面試都要差很少1個小時,而且會出1~2道算法題。
主要聊了下面幾個方面
- 熱修復,主要說了ClassLoader的方式和Rubost的插裝方式,重點介紹了Rubost的原理。
- 實現直播禮物的一些技術選型,和播放帶有alpha通道MP4的解決方案
- 怎麼實現字節碼注入
- 抖音組件的探索,SPI到字節碼注入,優缺點。
- 接下來就是兩道算法題
- String字符串的數字相加
- 使用三個線程順序打印有序的數組
- 提問環節
- 包體積優化:靜態Lint,Proguard,AndResGuard和刪除R.java中的全部字段,刪除access$方法,在gradle的transform階段將壓縮png和jpeg,使用google開源的redex方案,每種方案的原理以及優缺點
- MVVM-livedata的實現原理
- 屬性動畫的原理,這裏沒看過,不太清楚
- Kotlin寫一個let的擴展函數,大致寫了一下代碼。
- 算法,多是我寫的太慢了,因此就只有一道
- 給定一個有序的數組和目標數,找出與目標數最近接的index,要求複雜度是log(n)的時間複雜度
三面就比較輕鬆了,面試官一直樂呵呵的,又問了一下alpha視頻的解決方案,而後聊了聊爲何要離開這麼火的項目,問了問個人經歷之類的,最後寫了兩道算法題
- 二叉樹的深度和廣度,要求一次遍歷
- 給定一個二叉樹和一個目標數,在二叉樹中是否存在一條路徑的全部節點的和與目標數是相同的case,而且打印。
效率並非很高,並且並不主動,多是跟我要的薪水過高有關係,後面經過詢問才知道,技術面試是經過了,可能字節跳動原本薪水就很高,我再跳過來,猿輔導考慮到個人工做年限和年齡,會倒掛一大批人,因此只能平薪過來,並且這樣知道我確定不會來,就沒主動跟我說。
整個面試環節整體來講還能夠,可是就是效率不高,也多是我運氣很差,我是4:10到猿題庫的,而後在前臺等了20所分鐘,hr纔來,說了剛纔在電話會議耽誤了,這個理解,而後等待面試又等了10多分鐘,來了server的面試童鞋,寫了道算法題,從新調整到Android面試,又等了15分鐘,真正Android面試開始在5:10左右,面試完成後基本到了8:30了。
對本身的表現基本滿意,就是很久不手寫代碼,有點生疏,寫的比較慢,大多數問題和答案都獲得了面試的承認,對一些知識點沒有複習到,其實我是這樣認爲的,並非全部的問題或者知識都須要知道,你只須要有1~2個方面瞭解的很透徹,獲得面試官的承認就行。
- 在抖音上顯示本身作的功能,框架的搭建,實現原理,所作的優化點等。
- 組件化的實現,爲何作組件化,不一樣實現的優缺點。
- hashmap的實現原理
- view的優化,減小層級,異步加載,x2c框架引入,優缺點,textview的優化。
- mp4播放alpha視頻實現的原理
一面面試官大概聊了1個小時左右,沒讓我寫算法,細究原理和細節,很是仔細。
- 冷啓優化的一些方案。
- 數據驅動業務的理解,怎麼作,和pm產生分歧怎麼解決。
- 我全部作的優化的收益是什麼,有什麼數據支撐。
- 事件分發機制,舉了一個具體的例子來解決。
- http的一些問題,1.1和2.0區別,心跳機制,https怎麼創建連接,怎麼進行數據加密等。
- 爲何離開抖音,職業發展,訴求等。
聊了大概一個小時,面試官的思路相對獨特,不是爲作技術而作技術,技術始終要服務於業務,我很是承認。
趣頭條北京位於海淀,位置不靠近地鐵,須要步行一段時間,不過效率挺高的,在面試完的次日就給我發offer了,面試流程也相對較少。對趣頭條的營收模式看的不是很清楚,相似發錢看新聞,可是如今頭條也再作這個,趣頭條可以搞得過頭條是個問題,若是沒有增加點,那後期的轉型是什麼(我瞎操心啥)?整體來講體驗仍是不錯的,hr也很真誠,屢次溝通,雖然最後我沒有去,感興趣的同窗能夠去看看。
瓜子二手車真的是太遠了,從海淀到工做地方將近花費了2個小時,並且還不在地鐵附近,還須要坐公交。
- 聊了一下項目中作過的東西,字節碼注入相關知識,transform優化,mp4禮物實現等
- 從桌面點擊icon圖標開始,整個啓動activity的啓動過程
- Binder的實現原理
- 插件化的原理,以及hook點,大概有兩個,能夠網上搜索一下
- hashmap的實現原理
- 單例的實現,sychrnized的實現原理,以及雙鎖不加violate,會不會有線程安全問題
- 二叉樹,讀取每一層最右邊的節點
- 聊聊大概履歷,以及在華爲、字節跳動都作了什麼,爲何要離開。
- 職業規劃,怎麼帶領團隊
- 代碼設計的基礎原則,以及用UML畫出工廠模式
- 將兩個有序的鏈表合併成一個有序的鏈表,遞歸和循環兩中方式
- 時間分發機制,而且須要從Android的sensor開始到應用層,我只知道從Activity開始的流程。
- 聊操做系統Unix,汗顏,我知之甚少。
- 對新技術的見解(flutter),瓜子二手車也已經開始在項目中使用fultter相關技術
- 自我介紹,爲何要離開抖音
- 線程安全的問題,sychronized和viloated的使用
- 實現一個CAS(樂觀鎖)的方法
- HashMap的實現原理,怎麼優化內存佔用,優化resize的過程,這個是開放的問題
- 自我介紹,在抖音作了什麼
- 在抖音作的比較好的兩件事情
- 設計一個美團的框架,組件化
瓜子二手車是衆多二手車中作的還算比較好的公司,如今像優信、人人二手車好像都不是很好了,就是太遠了,公司附近也沒有地鐵站,就算是公交站還須要走2千米,可是面試官感受仍是比較有水平的,後期的hr跟我談也是誠意滿滿,整個團隊在我來看,仍是一個想作事情的態度。整體來講hr仍是很是真誠的,想去的朋友能夠考慮考慮。
- 雙鎖單例,爲何要價violate
- 內部類訪問外部類
- 函數值傳遞的一些題
- 子類繼承父類,個字都有靜態變量、靜態代碼塊、構造函數,執行的順序
- int數組,除了一個數字外,其餘數字都出現兩次,找出這個只出現一次的數字
- 圖片壓縮原理,以及在transform階段進行的必要性,討論的還挺激烈
- 內部類引用外部函數的參數,爲何要final定義,值傳遞
- 判斷一個應用是否切到後臺
- 組件化的探討,假設場景,怎麼處理
- 插件化的實現方式,以及對相應的場景進行討論
伴魚的架構師
- 一個疑難雜症,也是自定義插件,討論是否有更好的方式,最後結果是,他想了一個比較巧妙的方式,沒有實踐過,可是告訴我能夠,保留本身的意見。
- 字節碼相關知識,ASM以及MD5的實現原理,png的壓縮原理,這裏比較亂,就是說到哪問道哪,比較發散。
- 對成爲架構師的幾點見解
- mp4實現alpha通道的原理,優缺點,收益是什麼
- m*n的二維數組,作(0,0)出發,能夠上下左右走,0爲暢通,1爲阻塞,目標位置(k,j),問是否能到達這個位置,相似迷宮的算法
感受伴魚的面試目的是問倒你,不少次討論問題,我說你有什麼見解或者正確答案的時候,面試官就讓我回去本身上網搜一下,或者給出的方案,經不起個人推敲,我問上兩三個問題,面試官反而有點語塞,感受很奇怪。不過公司有本身的考量,最後給的薪資不是很滿意,就沒有去,二面面試官給個人體驗仍是很是不錯的,考慮全面,並且也有深度。
Android中的引用關係
自定義view步驟
activity生命週期
- 介紹最右的現狀
- 經常使用的播放器,以及優缺點
- opengl的繪製流程
- 音視頻編解碼的流程
- 在抖音作的工做
- 性能優化,包體積優化,冷啓優化,卡頓優化的一些實現方案
- mvc mvp mvvm的區別,以及本身實現的輕量級mvvm的原理
- 編解碼的相關知識
- ijkplayer的優缺點,以及是否看過相關源碼
- flutter的探討
整體來講面試流程中規中矩,可是面試官的問題並非很全面,更加關心的是本身的關心的領域,對於我提出的問題(大前端和flutter),看法也僅僅是須要對新技術保持必定的敏感度,後面hr讓我去跟cto再談一輪,由於考慮到各個方面的因素,就直接拒絕了。
BIGO是YY旗下的一個公司,目前剛剛收購了一個海外的直播產品,並且未來會把業務放到北京,仍是想作一些事情,員工福利也是不錯的。因爲如今主要的人員仍是在廣東,前兩面都是電話面試
- 多線程怎麼保證線程安全,violated、sychronized、reenterLock,這三個鎖的原理以及區別,JVM是怎樣實現sychronized線程安全的。
- HashMap的實現原理,put()原理。hash衝突,resize,1.8的改動,什麼是紅黑樹,優勢。
- ui優化,主要從檢測和優化兩個部分說明,優化又分爲通用的優化,和改變繪製流程的優化。
- jvm的介紹,內存介紹,gc等
- binder機制
- hashmap是否線程安全,concurenthashmap實現原理,1.8以後有什麼改變
- 播放透明的mp4的原理
- 冷啓優化和ui卡頓的監測和優化
- thinker實現插件化的原理,咱們使用什麼什麼實現熱更新,熱更新的通用方案,以及優缺點
- 介紹本身以前的工做經歷,在華爲作了什麼,爲何離開華爲,在抖音都作了什麼工做
- 實現mp4播放alpha視頻的原理
- 是否使用過kotlin,kotlin的一些特性
- 內存泄漏和oom怎麼產生的,內存泄漏的監控,leakcanery的實現原理
- 看過哪些第三方框架的源碼,具體的實現原理。retrofit、okhttp和eventbus等
BIGO一二面仍是偏基礎的知識,並無很深或者很偏的問題,三面面試官是以前騰訊的大佬,面試更多的我作過的項目討論和架構的問題,以及其餘方面的一些問題,總體感受仍是比較好的,hr小姐姐是廣東人,說話的聲音很好聽,也很真誠。
主要作的日本的直播產品,公司並不大,創始人好像也是頭條出來的,各類福利制度和頭條進本相似。
- activity生命週期 以及各個函數的含義
- activity task的四種類型
- fragment的生命週期
- 啓動server的兩種方式
- intent傳輸數據的大小限制
- binder的原理
- activity的啓動流程
- hashmap實現原理,1.8的改動,紅黑樹概念
- 合併兩個有序的鏈表
- 爲何離開抖音
- 組件化實現方案 spi的缺點,怎麼使用字節碼注入
- Dex的組成,爲何每一個dex會有65536的限制
- 還有好多,時間太長記不太清楚了
面試技術應該是經過了,最終卡在薪資,可能我要的過高,公司可能以爲依照我如今背景,性價比不高,就沒談下去,後面跟其餘公司聊的時候,又瞭解了一些這個公司的狀況,聽說年終獎特別少,不少人在年後都跳槽了。
- Activity的生命週期、fragment的生命週期,onRestart()何時調用
- service的兩種啓動方式,service的生命週期
- binder機制
- 進程保活:1.防止進程被殺 2.殺死後再拉起,詳細的答案網上搜一下,這裏就不列舉出來了
- app的包體積優化,lint、proguard、andresguard原理,字節碼注入,刪除R.java的變量,刪除access$001方法,壓縮圖片資源和使用redex等。
- 自我介紹
- 對JNI和C++瞭解嗎?基本不瞭解,就略過了
- Activity的
launchMode
,每一個Mode的含義,Activity的啓動流程- 怎麼樣實現MP4播放alpha的視頻,編解碼的一些流程,NV20、YUV、RGB一些概念,SurfaceView和TextureSurfaceView的區別
- 組件化的實現,都有什麼技術方案,優缺點
- 使用數組實現一個隊列,有
void add(int val)
和void pop()
兩個函數,並且須要考慮擴容
- 介紹本身,介紹在抖音作過的事情
- 哪兩件事情作得最有成就感
- 怎樣重構代碼,基本的6大原則,詳細討論每一個原則的含義,使用過的設計模式
- 假定場景,接口定義的有缺陷,第二版須要修改,是增長仍是直接修改,以及還有沒有其餘的方案,怎麼去作,爲何,這個是開放的題,結合設計原則,以及真實的狀況和本身的一些例子說明便可
- 介紹本身,爲何離開抖音
- mp4播放alpha視頻的實現方案,詳細解說
- 跨部門合做,具體的一個例子,怎麼去溝通,假設一個例子,用最恰當的方式去溝通。
- 怎麼向上管理以及向下管理
- 對技術選型的見解,flutter、c++、java、kotlin,核心是解決問題
- 是否會使用kotlin,優點,以及在項目中真正帶來的收益
- 組件化,依賴版本號不一樣的解決辦法
- 插件化,一些實際問題的,具體是什麼記不太清楚了
小紅書的裝修真是豪,辦公環境特別棒,可是面試流程有點多,足足面了5輪,不過整體來講技術仍是很不錯的,不管是廣度仍是深度,尤爲最後一面,專門從上海飛來面試,十分榮幸,從這點就能看出公司對人才的重視程度,是一個值得加入的公司,hr小姐姐人美也真誠。
- 包體積優化,Lint、proguard、andResGuard的原理,以及抖音作的一些包體積優化的方案
- 線程和線程池的討論,爲何要用線程池,線程池各個參數的含義,若是隊列滿了會發生什麼,爲何線程池的數量是cpu核數+1
- 好吧,記不起來了
- 自我介紹
- 線程安全的方式,sychronized和violated的區別
- 怎麼自定義Transform、自定義Task,Task之間怎麼依賴,大體順序是什麼,增量編譯的概念,異步加快文件的讀取,ASM接口的使用
- cookie、session、token的含義和區別,這裏我確實不熟悉,就直接說我不太清楚了。
- 自我介紹
- 在抖音都作過什麼事情,相關的幾個方向深刻討論一下
- 對於架構的思考,怎樣設計一個好的架構,6大設計原則,分別說明一下
- 用過什麼設計模式,爲何要用設計模式,對於設計模式的思考
- 怎樣提升開發效率,較少溝通成本,實例說明下
- 爲何要引入kotlin,優缺點
- 之後的規劃
- 介紹本身,爲何離開抖音
- 音視頻的相關知識,NV20,YUV,RGB的關係,爲何mp4的壓縮率比webp的動畫要高,編解碼的流程,通用的編碼格式,軟硬解的區別。
- View的繪製流程,硬件加速的原理和軟件繪製的區別,以及相關的view的優化
整體來講面試體驗仍是不錯的,三面面試官對於職業發展和新技術的看法都是很是深入,也給與了我不少建議。
- 動畫實現的方式,幀動畫和屬性動畫的實現原理
- 一張圖片加載到手機內存中真正的大小是怎麼計算的
- OOM產生的原理,內存泄漏是因爲什麼引發的,GCRoot有哪幾種類型,JVM等
- 一個二分查找的變形題,具體的題目記不清楚了
- 爲何要作組件化,組件化的實現方案都有什麼,優缺點
- Activity的啓動流程
- View的繪製流程,從VSYNC信號開始
- 性能優化,包體積優化,R.java優化,access$xx方法優化,資源優化原理
- MVVM是什麼,我本身作的輕量級的MVVM的實現方式,優勢是什麼
- 看過什麼第三方的源碼,retrofit原理,動態代理和靜態代理的區別,是否使用反射,okhttp的原理,Http和Https的區別,Https的socket security layer的握手,EventBus的原理,3.0的區別,APT的使用以及怎樣處理字節碼(ASM、javaassit、BECEL等)
美菜網真的是好亂呀,面試人感受有幾十個,如今美菜網擴張這麼厲害嗎?我面試的時候我旁邊的哥們也在面試,真的是很嘈雜,不過面試官的基礎還不錯,看過一些源碼,可是並無問到什麼特別好的點,對整個新技術的看法和對個人建議(通常會問面試官一些對於新技術例如flutter見解,和對個人一些建議)感受不是很深,跟hr談完後就離開了。
- 從Activity A跳到Activity B的生命週期的調用過程,若是是異步進程呢
- 冷起優化,systrace怎麼使用,實現原理
- ANR是什麼,怎麼上報ANR,有些手機拿不出,有些手機拿不出anr/traces.txt,怎麼查找ANR問題
- 插件化的原理,Activity的啓動流程,hook點
- 一個類,內部有一個鏈表的數據結構,實現
void add(Node n)
和void remove(int index)
的函數
- 介紹工做經驗,爲何離開抖音
- HashMap的實現原理
- 在抖音作的工做,主要說了ui優化和冷起優化兩個部分,擴展開來,討論了不少相關的知識點
- 手寫消費者生產者模型的代碼
此次面試的是奇異果,並非愛奇藝app,由於我仍是想作app,二面以後,我就跟面試官說了個人想法,就不必聊下去了,就直接走了。
- handler介紹,爲何阻塞不會形成anr,屏障消息,產生內存泄露緣由,handler內存泄露的引用鏈
- 事件攔截機制,view的繪製流程
- android的系統渲染原理,renderthread的解釋,三緩衝機制播放透明mp4的原理,surfaceview和textureview的區別
- opengl的繪製流程,texturesurface是什麼,頂點着色器和片元着色器各自做用,VOB是什麼
- 一個無序的int數組,給一個target數字,找出數組中兩個數字相加爲target,並輸出座標
二面面試官是facebook回來的,面試風格的確和以前的面試官討論不同
- hashmap的實現原理,怎樣找到index,size爲何是2的倍數,怎樣resize,resize事後,以前的hash衝突還存在嗎?currenthashmap的實現原理
- 怎樣保證多線程的安全,什麼是樂觀鎖,怎麼使用
- 設計一個發送語音模塊的架構,須要寫出全部接口函數,而且須要詳細說明,可能面試官更加在乎設計能力,這裏討論的時間很是長。
- view的繪製流程,onMeasure、onLayout、onDraw,各個參數是什麼含義,尤爲是widthMeasureSpec、heightMeasureSpec以及對應的AT_MOST、EXACTLY和UNSPECIFIED
- 數組中存有1-3的三種數字,例如[1,2,3,1,2,2,1,3,3],將其排序爲[1,1,1,2,2,2,3,3,3],要求時間複雜度,後續將內容變爲一個對象,繼續排序
- 工做經歷介紹,爲何離開抖音
- mp4播放alpha視頻的原理,與其餘方案的對比,收益點是什麼
- "之"字形打印二叉樹
- 1~100盞燈,都是亮的,第一次將能被1整除的數的燈按下,變暗,第二次將能被2整除的數的等按下,變亮,第三次將能被3整除的數的等按下,變暗......第100次將能被100整除的數的燈按下,問,最後有多少盞燈是亮的。
整體來講面試官的技術仍是很厲害的,二面面試官的背景很好,思路也獨特,有點外企風格。三面面試官比較注重算法,和解決問題的思路。整個面試流程真的是不太友好,三次面試去了三次,並且前兩次都是在茶水間,一直說會議室訂不到,環境特別嘈雜,並且前兩次都是臨近飯點,茶水間送飯更是雜亂,感受快手效率和環境有一些混亂(我的面試感受),可是不可否認快手在2018年的成績仍是很好的,尤爲是直播的營收仍是至關的不錯。
因爲Airbnb面試了七輪,並且不少同窗都想看,那我就單獨寫一篇關於Airbnb的面經,正在整理中,整理好後會把鏈接發出來,歡迎關注
時間真的是有點長,記不太清楚了,只能記個大概,一共三面,就不分開寫了。
- 抖音作了什麼
- Activity的啓動流程
- 手寫LruChache
- 怎麼播放一個alpha的mp4視頻
- 進程間的通信方式,Binder的機制,爲何不使用Socket
- Activity的啓動模式,進程間啓動是否不一樣
右劃真的是一家很是不錯的公司,有一件事情就體現了整個公司的價值觀:因爲我當天去公司接待的人比較多,二面和三面中間大概有兩個小時的空檔,我其實挺不滿意的,跟hr反饋了這個事情,hr立馬就跟我解釋了事情的緣由,而且立馬跟我道歉了,後面cto還專門爲這個事情跟我說了緣由。雖而後面沒有去這個公司,可是我仍是很欣賞的,從公司層面,公司的定位很明確,並且有本身的核心技術。從我的來看,公司也是很是人性化,管三餐有房補並且有問題及時改正,我以爲你們能夠來看看。
在大多數互聯網公司內(除了外企),到了HR面,基本上已經定下來,正常的聊聊就能發offer了,只要別太「個性」,或者三觀異於常人就能收到offer,大致就是一個積極樂觀的態度。有幾點須要注意下:
注意以上幾點大致就沒問題了。ps:Airbnb的文化面很是重要,聽說20%的面試者在這個環節中被刷掉。
我會討論幾個話題,固然都是從我認知出發,並不必定對,歡迎你們一塊兒探討。
面試過程其實大部分時候是,面試官或者公司是主導方,大部分的節奏是跟着面試官走,可是我以爲面試其實就是一個相互探討的過程,不只是公司在選擇你,你也在選擇公司、之後工做的同事和leader。因此我此次面試中,更多的是和麪試官探討,也會反問面試官一些問題,不只僅是最後面試官說能夠問他幾個問題,在面試過程當中就會詢問一些,優秀的面試官會跟你探討,而且討論出一個合理的方案或者正確的答案,整個過程很是愉悅,相互都學習到了,可是有一些面試,則不太友好,問道的問題老是說本身回去百度一下,這個很讓我無語。
此次最大的收穫就是跟60多位面試官的交流,更加讓我認清我本身,認清本身的長處、短板和之後的規劃,和對作人作事的見解,在這裏真誠的感謝60多位面試官。
對於這個話題,從我自身的角度而言有一些感觸,從2018年開始互聯網就一直有寒冬的說法,各大互聯網開始裁人、縮減HC甚至對碼農的年終獎下手(辛辛苦苦一年,就期望年終獎~),固然最近確實環境有一些波動,可是遠沒有網上傳的寒冬已至那麼嚴重。從個人面試結果來看就知道,互聯網並非寒冬,只不過是更加理智,對全部的面試者來講要求的更高,因此咱們更加要注重自身能力的培養,這並非說咱們要全身心的投入到刷算法,背理論知識等,咱們更加註重本身的理論知識怎樣可以爲公司、產品帶來更大的價值,從軟實力方面來講,不只要把事情作好,更要作好向上管理和向下管理。我的建議:想好爲何要跳槽,無腦跳是最很差的狀況,若是必定要跳槽,最好的狀況是騎驢找馬,不要裸辭,跳槽需謹慎!!跳槽需謹慎!!跳槽需謹慎!!
個人答案是重要,我就是學歷的受益者,只要投遞出的簡歷都會邀請面試(除了一些對工做年限限制很是嚴格的企業,hulu)。固然,在互聯網的圈子中,核心是你自己的技術,可是有多少人的技術能達到逆天或者很是牛逼的地步,若是你是這樣的人,啥都不用說了,可是我以爲絕大部分的程序員都是普通人、日常人,不要說什麼3年之後公司就不看學歷了,學歷是一生的事情,那些高考可以碾壓你的人,出了社會只要他們願意,照樣能碾壓你,你努力,你拼命,別人也不會睡大覺等你,因此,能提高本身的學歷,仍是要儘可能提高的。
「大公司擰螺絲、小公司獨當一面,進步更快」,我不太認同這句話,固然具體狀況具體分析,每一個人的狀況不一樣,可是我仍是以爲你們能去大公司仍是儘可能去大公司,緣由我總結了如下幾點:
選擇一樣是很是重要的,選擇的首要前提是你要有不少機會,否則你都沒機會怎麼選擇,在不少機會擺在你面的時候,必定要認真思考,不要衝動,想好本身須要的,多聽別人的意見,最後本身決定。咱們不能保證每一次選擇都是正確的,可是能保證咱們是不後悔的,遇事要冷靜,多思考。
這裏說的選擇不只僅是選擇去哪一個公司,從事什麼方向,還有與什麼樣的同事工做,選擇什麼樣的leader,甚至是生活中的事情,網上說一我的要有一些成就,須要具有下面幾點,我以爲很是的對:
其實這個話題對我來講有一些困惑,「工做是爲了更好的生活」,這句話是很是正確的,可是做爲一個沒有背景、父母幫你付不起首付的普通人來講哪裏來的享受生活,惟有不斷努力、不斷的進步纔有更好的物質回報,北京是全中國的人才彙集地,在工做的三年中,我不敢有一絲的懈怠,由於身邊比我條件好,能力比我強,年齡比我小的人太多了,不論在哪裏資源的分配都是二八原則。有不少身邊人說我是苦行僧,不懂得享受生活,太無趣,的確我不否定,可是我知道惟有這樣,我才能爲個人父母、愛人以及之後的孩子撐起一片天,反過來說,這些又是個人動力。感慨有點多了,這個話題全看本身,我滿意目前的一個狀態。我的拙見,你們看看就行。
感謝你們能耐着性子,看完我囉哩囉嗦的面經,以上僅是我的的觀點。感受兩年稍縱即逝,在這兩年中成長了不少,感謝全部幫助過個人人。