結束了,被焦慮支配的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 說在羣裏推薦了一下,我就又被別的部門撈起,這個部門一二面都一個多小時,面完心都哇涼哇涼的,根本沒想到能過,到三面,感覺沒問我什麼,掛掉了,我水平太差了,面試官對我不感興趣吧,這次掛掉,說實話不心痛,反而很釋懷,面試嗎畢竟還是一個雙向選擇的過程。
雖然這一路挺艱辛,也不知道自己下一步是邁向哪裏,但是在心態和技術上讓我成長了很多,回頭看來我還算是挺幸運的吧。
字節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彙總複習資料—Java》
《Android彙總複習資料—Android》
《Android彙總複習資料—Android擴展》
《Android彙總複習資料—Kotlin》
《Android彙總複習資料—Flutter》
《Android彙總複習資料—算法》
除了上面的學習路線,還可以額外的配合以下方式學習,效果翻倍~
①看視頻進行系統學習
前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因爲Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視頻來學習,效果更好,也更全面。關於視頻學習,個人可以推薦去B站進行學習,B站上有很多學習視頻,唯一的缺點就是免費的容易過時。
另外,我自己也珍藏了好幾套視頻,有需要的我也可以分享給你。
②讀源碼,看實戰筆記,學習大神思路
“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。
主要內含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。
③面試前夕,刷題衝刺
面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。
關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:
④2020大廠面試高頻知識點
- 圖片
- 網絡和安全機制
- 數據庫
- 插件化、模塊化、組件化、熱修復、增量更新、Gradle
- 架構設計和設計模式
- 性能優化
- Android Framework
- Android優秀三方庫源碼