天天看點

Android三非實習面筋:3輪面試,終與位元組無緣,結束了,被焦慮支配的120天...

Android三非實習面筋:3輪面試,終與位元組無緣,結束了,被焦慮支配的120天...

結束了,被焦慮支配的120天

就在前幾天6月28日,詢問 hr 後,位元組三面沒有通過,我的找實習之路也結束了,從3月1日開始投遞履歷到6月28日,算算日子正好 120 天,我也終于結束這被焦慮的支配的時光,這一路走下來,我也就剩下這篇面試面經了,記錄着我的心酸淚啊...

面試這個四個月,真的是擔驚受怕、坐立不安、上蹿下跳的,睡睡覺突然就醒了,想到面試官當時想問的是啥了,然後就開始輾轉反側、徹夜難眠...

三月一号,最開始在 BOSS 上投履歷,發消息,已讀,沒人回複,開始修改話術,發連結,有幾兩家開始收我的履歷,過了五六天然後收到了一個電話面吧,當時内心好的難受,開始自我質疑,我是那不行那,這不行,這也不行,那好像也不行,哪哪都不行。面試機會都沒有,因為這個事,我室友找我出去吃燒烤,我主動喝了七瓶啤酒,回去哇哇吐🤮,雖然我是東北人,但我真的不愛喝酒,出去都躲酒的那種。過了幾天收到第一個視訊面試騰訊會議,半個多小時吧,問點問題寫寫代碼,3月25日收到了自己第一個 offer,心情稍微高漲一點。

四月一号,做了攜程的筆試,然後面試,二面結束,越複盤越心痛,這一段藍橋杯和PTA備賽,本來就頭疼,面試又挂了,直接裂開,因為很多大公司校招都開啟了,我都投了,大多初篩都沒過,就攜程一個到面試環節,結果我還完犢子的給挂了,又崩了,我室友叫我吃飯又喝,這啥酒啊,一瓶喝的我直迷糊,喝完酒睡一覺,精神也好一點了,繼續備賽吧,過了一段時間逛逛牛客,有同學和我差不多時間面試狀态變到 hr 了,我也不死心去查查,我也變成 hr 面試中了,突然好開心,結果人家過幾天 OC 了,我被扔進人才池了。

到五一了,比賽結束了,不行我還得找工作啊,五一那五天假不知道投了多少份履歷,假期一結束一堆面試邀約,竟然還有幾個做崗前教育訓練的,啥嘛,好未來在實習僧上投遞也通過了,我在官網内推好幾次都沒過,奇安信BOSS投的也過了,結果奇安信招的應屆生,好未來問我學曆問題,我說要專生本,面試回報三年後正式錄用有風險不建議錄用,當然計算機基礎有待加強。我當時人都傻,一天兩家都沒了,CVTE 筆試也過了,開始約面試,這公司流程好慢,滴滴(實習僧)和圖森未來(脈脈),圖森算法沒答對,技術棧不比對,一面都沒通過,滴滴是我第一個知名網際網路offer吧也是唯一一個,過了幾天好未來另一個部門約面試,hr和我說面試通過了,等 offer 吧,然後就沒信了,CVTE hr面也涼了

六月了,在牛客網看到百度招聘就直接發的郵箱,回複他們部門招滿了,把我推給别的部門,晚上 hr 約面試,我參加藍橋杯就是為了這個企業綠色就業通道裡面有百度,想要面試機會,這國賽還沒比機會就來了,好開心,結果面試結束了,戲劇性的一幕又來了,面試剛結束沒幾分鐘,面試官問我願不願意以另一種方式加入他們,這正式就變外包了,我履歷不僅沒藏學曆,還單獨列個教育經曆還寫在履歷最上方,就怕出現這種事,結果還是出現了,第二天位元組這邊内推通過了,BOSS 上投遞的履歷,牛客網上看到内推人的微信,加了詢問進度,挂了,内推人打電話簡單詢問履歷情況,又撈了我一下,才有這個面試機會,感覺位元組面試的壓力和難度确實要比别的公司大很多,沒想到三面能通過,畢竟那個異步排程器寫那麼久還沒寫對,學曆問題 offer 批不下來,不過 hr 說在群裡推薦了一下,我就又被别的部門撈起,這個部門一二面都一個多小時,面完心都哇涼哇涼的,根本沒想到能過,到三面,感覺沒問我什麼,挂掉了,我水準太差了,面試官對我不感興趣吧,這次挂掉,說實話不心痛,反而很釋懷,面試嗎畢竟還是一個雙向選擇的過程。

雖然這一路挺艱辛,也不知道自己下一步是邁向哪裡,但是在心态和技術上讓我成長了很多,回頭看來我還算是挺幸運的吧。

Android三非實習面筋:3輪面試,終與位元組無緣,結束了,被焦慮支配的120天...

位元組3輪技術面+一輪HR面

技術面一面(時長47分鐘)

有些問題忘記了,記憶中就隻有這些内容
  • 自我介紹
  • 項目有沒有上線
  • 項目難點
  • DialogFragment

    記憶體洩漏的定位過程
  • Leakcanary

    的原理
  • Handler

    介紹一下
  • Handler

    記憶體洩漏說一下
  • 說一下設計模式
  • 手寫單例
  • 算法:[112. 路徑總和](javascript:void(0);)

技術面二面(時長48分鐘)

  • 自我介紹
  • 介紹一下項目
  • 軟體大概樣式是怎樣
  • 首頁是怎樣做的
  • 首頁下拉重新整理是怎麼做的?(說了滑動沖突的處理)
  • view

    事件分發機制怎樣
  • 事件好幾層,怎麼知道是由哪個控件處理(說了根據觸摸的位置啥的,不太了解對不對)
  • 提到了責任鍊,内部鍊怎麼分發的
  • 怎麼判斷哪個

    view

    處理(根據

    return true/ false

  • 我們的事件有

    action_move,action_down,action_cancel

    ,所有的事件都是一層一層往下分發嗎(說了不一定,

    down

    被攔截了,後續就收不到其他的事件了,然後提到了

    action_cancel

    的機制)
  • 我聽到你首頁用了

    recyclerView

    ,那他一般怎麼用?
  • 提到了

    adapter

  • adapter

    用來幹嘛?
  • adapter

    中有哪些是主要方法(說了

    bindView

    ,這塊不太記得了,說項目中用到的是

    BRVAH

  • 提到了

    ListView

  • 為什麼用

    Rv

    不用

    Lv

    (說了1.強制實作

    viewHolder

    (避免

    findViewById

    ) 2.緩存機制)
  • Lv

    二級緩存怎麼判斷這個

    View

    是他要的?(答了

    postion,id

  • 然後問

    id

    指的是?(這裡說忘記了)
  • 四級緩存是怎麼找到

    view

    他要的?(說了

    itemType

  • 如果有相同的

    itemType

    怎麼處理?(說了直接使用任意一個)
  • 如果四級緩存中找不到呢?(說了手動加載)
  • 手動加載是哪裡來的?(說了從布局

    xml

    中定義的

    itemtype

    中拿的)
  • xml

    怎麼關聯到

    Rv

    (加載代碼

    inflate

    的,不太了解)
  • 堆記憶體和棧記憶體差別
  • 5層網絡協定包括哪些?
  • tcp

    三次握手說一下
  • equals

    ==

    差別
  • hashmap

    實作原理(說了基本結構,

    put

  • get

    是怎樣實作的

智力題:

  • 5升桶,3升桶,水無限,你給我裝出4升水

算法:[82. 删除排序連結清單中的重複元素 II](javascript:void(0);)

技術面三面(時長37分鐘)

  • 自我介紹
  • 架構設計主要是什麼
  • 說一下你提到的依賴倒置
  • 除了依賴倒置還有什麼重要的原則(剛說完單一職責就被打斷)
  • MVP注意事項(說了記憶體洩漏的處理)
  • 記憶體洩漏的原理
  • 怎麼判斷記憶體不能被釋放
  • 如何檢測記憶體洩漏(說了線下用

    LeakCanary

    ,線上用

    Memory profiler

    ,然後自己扯到

    DialogFragment

    記憶體洩漏)
  • 打斷,問

    final

    作用(說了修飾類,方法,變量,作用)
  • 非靜态内部類引用外部類對象,需要

    final

    關鍵字嗎?(說了應該用

    static

    ,轉為靜态内部類,防止記憶體洩漏)
  • 多線程使用過嗎
  • 說一下線程池的使用(剛說了構造方法實作)
  • 核心線程數什麼作用(說了線程池的運作流程)
  • 核心線程數和最大線程數的設定(

    IO

    密集型和

    CPU

    密集型,最大線程數的話,看系統支援的并發量)
  • 一個程序有多少個線程?(說了空間允許的範圍内可以一直開辟)
  • 實際上是多少?(說了

    2g

    配置設定的空間)
  • 為什麼是2g(說了之前看過,具體原理不太清楚)
  • 一個異步任務都開一個線程,還是多個任務開一個線程,你怎麼決定開不開?(說了耗時的話就開,不太耗時不開,因為線程切換排程的話,存在一定的開銷)
  • 線程安全怎麼保證?
  • syncronized

    内部原理是什麼(說了修飾靜态方法和非靜态方法,代碼塊)
  • 修飾靜态方法和非靜态方法,能夠并發執行嗎?(可以,因為他們鎖的對象不一樣,說到了死鎖)
  • 死鎖的原理是什麼?
  • 出現死鎖怎麼排查(這個不太會,說了用

    jvm

    中的

    jstack

  • 追問怎麼用?(說沒用過,隻是知道)
  • 問我他的原理是什麼?(不太知道,說看

    traces.txt

    ,看堆棧)
  • 怎麼安全停止一個線程(說了用

    volatile

    修飾變量,通過

    while

    (變量),手動設定

    true false

  • volatile

    原理是什麼?(說了

    java

    記憶體模型啥的,修飾特性啥的)
  • 網絡了解嗎
  • tcp

    優點(可靠性,面向連接配接)
  • 面向連接配接是什麼?(說了計算機通信前建立連接配接)
  • 面向連接配接和非面向連接配接的本質差別是什麼?(亂答,不知道)
  • 擁塞控制原理
  • http

    udp

    差別(說了層數)
  • http

    請求流程
下面開始聊天了
  • 反問

HR 面

  • 你是周一面的三面,這幾天關于面試你是怎麼考慮的?
  • 周一面試完,周四周五才給你回報,有考慮過面試不通過嗎
我說周二就給我回報了
  • 面試感受如何?
  • 你對面試做了什麼準備
  • 用戶端基礎知識方面的話,你是怎麼複習和準備的?
  • 有做一些刷題嗎?
  • 位元組算法這塊,難度怎麼樣
  • 距離畢業還有一年半,你怎麼規劃這段時間
  • 你們是資訊安全專業?應該不是計算機專業的同學吧
  • 你是什麼時候考慮轉開發
  • 你是大一就打算做開發?還是說進到工作室後,受到師兄的影響才轉開發?
  • 介紹一下工作室
  • 配合方式是怎樣的?
  • 說一下影響比較深的項目
  • 主要是用戶端做?還是前端背景都有?
  • 這個項目你們老師也是怎樣評價的?
  • 團隊協作有沒有遇到比較難推進的時候?
  • 你會主動去配合團隊嗎
  • 自己學習或者工作,怎麼安排時間?
  • 工作的時間占你一天多少時間?
  • 任務你是怎麼管理
  • 你的方法論挺好的,你提到的日程管理軟體是哪個?
  • 旁邊人用哪幾個詞語評價你
  • 你的優點缺點分别是什麼?
  • 有遇到壓力特别大的時候嗎?
  • 你在學校成績怎樣
  • 你對自己的未來的規劃
  • 什麼時候能來?能來多久
  • 學校課程怎樣
  • 反問

面試位元組需要做好哪些準備

通過整個面經就會知道,現在網際網路校園招聘技術崗位面試所考察的内容是非常的标準化的!

面試流程主要分為三個部分:
  • 位元組跳動是非常重視應試同學程式設計能力的考察的,每輪技術面試都會考察2-3道算法題目。
  • 然後第一輪面試會着重考察候選者的Android基礎知識,java基礎,資料庫,作業系統,計算機網絡等。
  • 然後後續面試面試官會圍繞着候選者的項目進行提問。

要想掌握正确的學習準備方法,最關鍵的就是要知道面試問的是什麼!所有的考試面試其實都有重點可尋的,最忌諱盲目的瞎學準備!

同時這裡還要額外說一下,推薦大家去多看面經,并不是讓大家隻看面經,死記硬背面經,投機取巧。這種隻簡單被面經的同學面試也是無法通過的。還是要踏踏實實的去多認真學習技術,多看優質的官方技術文檔、書籍、部落格。

知己知彼,百戰百勝。

Android市場需求短期内提升自己

Android方向

關于Android的發展方向這裡我歸類了如下幾類:

1、應用層開發,不限于各種産品,主要還是Android原生開發,主要是各種性能優化。

2、嵌入式開發,不限于各種開發闆子,物聯網,智能家居,車聯網/車載

3、安全開發,不限于各種反逆向,反彙編,尋找安全漏洞

4、音視訊開發,不限于直播、點播、音視訊通話、音視訊會議,短視訊等

5、插件化、元件化、熱修複開發,不限于自研和使用開源架構內建開發

6、系統開發(Android),不限于Rom維護和FrameWork層定制需求

7、圖形圖像開發,不限于OpenGL ES,EGL,GLSurfaceView,濾鏡,美顔

8、小程式 / 快應用

按照Android 标準面試問題學習

目标明确,位元組崗位職責:

Android三非實習面筋:3輪面試,終與位元組無緣,結束了,被焦慮支配的120天...

如果你想去一家不錯的公司,但是目前的硬實力又不到,我覺得還是有必要去努力一下的,技術能力的高低能決定你走多遠,平台的高低,能決定你的高度。

如果你通過努力成功進入到了心儀的公司,一定不要懈怠放松,職場成長和新技術學習一樣,不進則退。

如何提升技能

首先,對于沒有學習方向,知識不體系的人,我把我工作幾年整理的學習路線分享給大家,做一個借鑒作用,還不知道怎麼學習的人可以直接照着我這個學習路線一個個的去學習,知識不體系的人可以參考下我整理路線的方式,總之希望能夠幫到你們!

Android三非實習面筋:3輪面試,終與位元組無緣,結束了,被焦慮支配的120天...
除了上面的學習路線,還可以額外的配合以下方式學習,效果翻倍~

①看視訊進行系統學習

前幾年的Crud經曆,讓我明白自己真的算是菜雞中的戰鬥機,也正因為Crud,導緻自己技術比較零散,也不夠深入不夠系統,是以重新進行學習是很有必要的。我差的是系統知識,差的結構架構和思路,是以通過視訊來學習,效果更好,也更全面。關于視訊學習,個人可以推薦去B站進行學習,B站上有很多學習視訊,唯一的缺點就是免費的容易過時。

另外,我自己也珍藏了好幾套視訊,有需要的我也可以分享給你。

②讀源碼,看實戰筆記,學習大神思路

“程式設計語言是程式員的表達的方式,而架構是程式員對世界的認知”。是以,程式員要想快速認知并學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 了解事物,更重要的:看到源碼背後的想法;程式員說:讀萬行源碼,行萬種實踐。

主要内含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。

③面試前夕,刷題沖刺

面試的前一周時間内,就可以開始刷題沖刺了。請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

關于面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三。

④2020大廠面試高頻知識點

  • 圖檔
  • 網絡和安全機制
  • 資料庫
  • 插件化、子產品化、元件化、熱修複、增量更新、Gradle
  • 架構設計和設計模式
  • 性能優化
  • Android Framework
  • Android優秀三方庫源碼
以上這些内容均免費分享給大家,需要完整版的朋友,點這裡可以看到全部内容。或者點選 【這裡】 檢視擷取方式。