如標題所示,我的個人背景非常簡單,Android開發經驗1年半,學歷普通,2本本科畢業,畢業後出來就一直在Crud,在公司每天重複的工作對我的技術提升並沒有什麼幫助,但小鎮出來的我也深知自我努力的重要性,想要改變「命運」,沒有背景沒有資本的人,只能通過勤奮獲得。
幸運女神往往會眷顧努力的人,所以當好運降臨到我頭上,我並不詫異,目前拿到了美團30K的offer,下文也不說廢話,主要分享我這次「美團面試經歷」和「個人學習方法」,希望能幫助到你們。
內容過多,不適合在文章全部闡述,下文的面試題以及學習資料都有整理在pdf裡,需要完整pdf版的,可以私信我看到全部資料內容。
1、手寫演演算法題。貓撲素數;1到n,求1的個數;單詞反轉;
2、Activity的載入模式。
standard,singleTop,singleTask,singleInstance。
3、什麼時候會用到singleTask?
在MainActivity的時候用到
4、Handler機制?
5、一個執行緒是否只有一個Looper?
6、如何保證一個執行緒只有一個Looper?
7、多執行緒的方式有哪些?
8、ANR異常發生條件
(1)5s內沒有響應使用者輸入事件
(2)10s內廣播接收器沒有處理完畢
(3)20s內服務沒有處理完畢
9、如何分析ANR?
10、自定義View和ViewGroup
11、事件處理:分發,攔截,處理。
12、GC演演算法
13、View動畫,屬性動畫,幀動畫。再說下View和屬性動畫區別。
1、OkHttp原理?
2、Retrofit原理?為何用代理?代理的作用是什麼?
3、ButterKnife原理?用到反射嗎?為什麼?
4、ANR異常如何查詢並分析?
5、JVM記憶體模型?效能調優?
6、垃圾蒐集演演算法有哪些?G1演演算法?
7、Http和Https的區別?
(1)Https是ssl加密傳輸,Http是明文傳輸
(2)Https是使用埠443,而Http使用80
(3)HttpsSSL+HTTP協定構建的可進行加密傳輸、身份認證的網路協定要比Http協定安全
(4)Https協定需要到CA申請證書
8、加密演演算法有哪些?對稱加密和非對稱加密的區別?
(1)MD5,SHA1,Base64,RSA,AES,DES
(2)對稱:使用相同金鑰,需要在網路傳輸,安全性不高。
(3)非對稱:使用一對金鑰,公鑰和私鑰,私鑰不在網路傳輸,因此安全性高。
9、TCP的三次握手?兩次行不行?為什麼?TCP攻擊知道嗎?如何進行攻擊?
10、記憶體優化如何做?
11、看過哪些原始碼?
12、會對程式碼進行review嗎?何時review?怎麼review?
13、專案中遇到的讓你棘手的問題?多久解決,怎麼解決?
14、平時如何學習?何時學習?怎麼學習?學習渠道?
1、前幾次面試感覺如何?
2、你現在的APP日活是多少?
3、你現在如何處理崩潰紀錄檔?
4、你覺得小團隊好還是大團隊好? 5 你的優點和缺點說下?
6、你的發展方向說下?是先講究寬度還是講究深度,為什麼?
7、為什麼離職?
8、其他小問題,如哪裡人啊?現在工資怎樣?要求如何,何時到崗啊?有什麼問題要問我的嗎?
這1年多的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因為Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視訊來學習,效果更好,也更全面。關於視訊學習,個人可以推薦去B站進行學習,B站上有很多學習視訊,唯一的缺點就是免費的容易過時。
另外,我自己也珍藏了好幾套視訊資料躺在網路硬碟裡,有需要的我也可以分享給你:
「程式語言是程式設計師的表達的方式,而架構是程式設計師對世界的認知」。
所以,程式設計師要想快速認知並學習架構,讀原始碼是必不可少的。閱讀原始碼,是解決問題 + 理解事物,更重要的:看到原始碼背後的想法;程式設計師說:讀萬行原始碼,行萬種實踐。
面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,演演算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。
關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:
只有技術過硬,在哪兒都不愁就業,「萬般帶不去,唯有業隨身」學習本來就不是在課堂那幾年說了算,而是在人生的旅途中不間斷的事情。
人生短暫,別稀裡糊塗的活一輩子,不要將就。
文章內容中涉及到的Android面試題、原始碼檔案,技術筆記等學習資料,均可以免費分享給大家學習,只需你動動手多多支援即可!需要的同學可以私信我獲取!