柳暗花明
我的個人背景非常簡單,也可以說絲毫沒有亮點。
學歷普通,計算機專業專科畢業,畢業後出來就一直在一家小公司,歲月如梭細,算了下至今從事Android開發已經5年了,也crud了五年,每天就是抄代碼,毫無新意,甚至一度的懷疑人生。
其實很久之前就已經對自己不滿了,每次都在想鼓起勇氣想去打破困境,去改變自己,然而因爲遊戲因爲玩耍一次又一次的破功;直到這次疫情,強有力的給了我當頭一棒。是的,我失業了。這時候才真正的體會到什麼叫做人無遠慮,必有近憂。
失業之後瘋狂的去找面經,去海投簡歷(都是一些小的不能再小的公司有回覆),去找老朋友,去找同學;但是在疫情這麼嚴重的當下根本不會找到合適的工作的,我也又冷靜下來了,準備好好的調整下心態,整理下自己;
在這期間也七七八八的接到一些電話面試;這時候給了我個新的啓示——可以去投一些小公司的簡歷,去面試掃盲,看看哪些東西不會,欠缺哪些知識,然後慢慢的做面試覆盤。並且通過這些面試給自己查漏補缺;
也許我的運氣沒有壞到極限吧,在惡補了三個月知識之後,我朋友給我打來了電話,說是有個字節跳動事業部的內推;
幸運女神往往會眷顧努力的人,所以當好運降臨到我頭上,我並不詫異,目前拿到了字節跳動25K的offer,下文也不說廢話,主要分享我這次“面試經歷”和“這段時間的學習方法”,希望能幫助到你們。
又一村
一面:(1hour)
自我介紹
java泛型,反射
進程間通信的方式,安卓中有哪些方式,爲什麼是基於Binder的,不用傳統的操作系統進程間通信方式呢
一個app可以開啓多個進程嘛,怎麼做呢,每個進程都是在獨立的虛擬機上嘛
異步消息處理流程,如果發送一個延時消息,messagequeue裏面怎麼個順序,messagequeue是個什麼數據結構
廣播的種類,註冊的方式,以及不同註冊方式的生命週期。
局部廣播和全局廣播的區別分別用什麼實現的。
activity和service的通信方式
進程和線程的區別
併發和並行分別是什麼意思,多線程是併發還是並行
安卓10有什麼新的特性。
HTTPS過程。
DNS解析過程,如果服務器ip地址改變了,客戶端怎麼知道呢
算法:二叉樹的右視圖。
二面:(1hour)
介紹一下所有的map,以及他們之間的對比,適用場景。
一個按鈕,手抖了連續點了兩次,會跳轉兩次頁面,怎麼讓這種情況不發生。
一個商品頁一個商詳頁,點擊商詳頁的一個關注按鈕,希望回到商品頁也能夠顯示關注的狀態,怎麼做
項目中定時爲什麼用AlarmManager,不用postDelayed
項目中後臺網絡請求爲什麼用service不用線程
也問了一些安卓的新特性。
內部類會有內存泄漏問題嗎 內部類爲什麼能訪問外部類的變量,爲什麼還能訪問外部類的私有變量。
算法:單鏈表判斷有無環。
三面:(35min)
- 介紹項目用到了contentprovider,然後問ContentProvider的生命週期,application,activity,service,contentprovider他們的context有什麼區別。
- 內存溢出和內存泄漏,提到了bitmap
- 然後問下載一個圖片的時候直接下載了一個5g的圖片,不壓縮一定會產生OOM問題,那麼怎麼去獲取這個圖片的長寬呢,或者說這個圖片的大小在你沒下載之前如何得到。不會。
- 實習期間遇到的最大的問題,如何解決問題。
- 後面就是聊天,爲什麼選擇上海啊互聯網行業的信息從哪裏獲取啊什麼的。
hr面:(15分鐘左右)
- 微信視頻,都是常規問題.
- 看面試記錄,之前也有面過,部門不一樣面試體驗如何呢
- 優缺點
- 投遞過哪些公司。
- 男朋友在哪個部門,做啥的
- 怎麼想到學安卓的。
- 瞭解字節跳動嘛等問題
十年寒窗,夜以繼日
文章內容中涉及到的Android面試題、源碼文檔,技術筆記等學習資料,均可以免費分享給大家學習,只需點贊+關注後私信“666”免費獲取
1、看視頻進行系統學習
這5年多的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因爲Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視頻來學習,效果更好,也更全面。關於視頻學習,個人可以推薦去B站進行學習,B站上有很多學習視頻,唯一的缺點就是免費的容易過時,也不可能會有人把自己真正喫飯的傢伙完全分享出來。
另外,我自己也珍藏了好幾套視頻資料躺在網盤裏,有需要的我也可以分享給你:
2、讀源碼,看實戰筆記,學習大神思路
“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。
筆記特點: 條理清晰,含圖像化、代碼分析表示更加易懂。
內容概要: 微信 MMKV 源碼、阿里巴巴路由框架ARouter 源碼、AsyncTask 源碼、Volley 源碼、Retrofit、OkHttp、ButterKnife、Okio、SharedPreferences、EventBus、Android 自定義註解、View 的工作機制、Android 觸摸事件分發機制、Android 按鍵事件分發機制等等Android開發過程中相關源碼精編解析!
-
OkHttp源碼深度分析
-
Binder 源碼深入解析
-
三方庫源碼筆記(1)-EventBus 源碼詳解
-
Android框架體系架構學習筆記
-
Flutter進階學習筆記
-
2021版Android核心筆記
3、面試前夕,刷題衝刺
面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。
關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:
自行學習交流直達鏈接:【點擊獲取】
需要相關知識點可以查看我的【GitHub】,對於已經掌握的可以忽略以節省時間。
總結
只有技術過硬,在哪兒都不愁就業,“萬般帶不去,唯有業隨身”學習本來就不是在課堂那幾年說了算,而是在人生的旅途中不間斷的事情。
人生短暫,別稀裏糊塗的活一輩子,不要將就。在找面經的這段時間看到非常適合自己經歷的兩句話:
真正毀掉你的不僅僅是閒着,更多是忙的馬不停蹄
因爲學習的苦需要主動去喫,期間充滿了挑戰,充滿了困惑,充滿了未知......而生活的苦,你躺着不動它就來了,溫水煮青蛙那種......所以大多數人寧願喫生活的苦,也不願喫學習的苦?