關於人文方面的問題html
關於 Java 方面的問到的知識點java
以上就是關於 Java 所問道的知識點,記得不是太清楚了,待補充。。。android
關於 Android 方面的問到的知識點程序員
第一面面試
1 手寫算法題。一共有3個,面試官隨機選擇一個。貓撲素數;1到n,求1的個數;單詞反轉。
2 Activity的加載模式。
standard,singleTop,singleTask,singleInstance。
能夠參考:https://developer.android.com/guide/components/tasks-and-back-stack.html
2.1 何時會用到singleTask?
在MainActivity的時候用到
3 Handler機制?
MessageQueue,Looper等。
3.1 一個線程是否只有一個Looper?
3.2 如何保證一個線程只有一個Looper?
參考:ThreadLocal
4 多線程的方式有哪些?
1) new Thread()
2) AsyncTask
3) Handler
4) IntentService
5) ThreadPoolExecutor
5 ANR異常發生條件
1)5s內沒有響應用戶輸入事件
2)10s內廣播接收器沒有處理完畢
3)20s內服務沒有處理完畢
5.1 如何分析ANR
log+trace.txt
6自定義View和ViewGroup
說一下本身定義的組件就行
7 事件處理
分發,攔截,處理。只是View沒有攔截處理
8 GC算法
標記清除,標記整理,複製,分代收集
參考:http://www.jianshu.com/p/7c708a66ff42
把上面文章弄懂了,就能刷過GC
9 四大引用
強,軟,弱,虛,並說明下合適GC
10 動畫
View動畫,屬性動畫,幀動畫。再說下View和屬性動畫區別。
參考:https://developer.android.com/guide/topics/graphics/overview.html
11 Dalvik和Art區別?(Just In Time和Ahead Of Time)算法
就這樣第一面基本結束。一共問了11個問題,其中美團的手寫算法在業界算是比較出名,不少小夥伴可能卡在手寫算法上。而後就是一些Android和Java的細節性東西,這些基礎內容只要有1年經驗的都基本能說出個一二三。設計模式
大概過了10分鐘,接下來是緩存
第二面安全
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 加密算法有哪些?對稱加密和非對稱加密的區別?
MD5,SHA1,Base64,RSA,AES,DES
對稱:使用相同密鑰,須要在網絡傳輸,安全性不高。
非對稱:使用一對密鑰,公鑰和私鑰,私鑰不在網絡傳輸,所以安全性高。
9 TCP的三次握手?兩次行不行?爲何?TCP攻擊知道嗎?如何進行攻擊?
10 內存優化如何作?
11 看過那些源碼?
12 會對代碼進行review嗎?什麼時候review?怎麼review?
13 項目中遇到的讓你棘手的問題?多久解決,怎麼解決?(考的是你發現問題和解決問題的能力)
14 如何學習?什麼時候學習?怎麼學習?學習渠道?(考的是學習能力)
就這樣,第二面結束了。能夠看出,第二面的難度會比第一面大一點,可是還好,基本都是經常使用的內容,深度會偏向原理性質。這就說明在平時的編碼過程當中,須要多多思考,多看源碼實現方式,而不要一味着去寫代碼。程序員會寫代碼,但不要作一個只會寫代碼的程序員。咱們的思惟方式是不可替代的。網絡
大概過了10分鐘,開始進行第三面面試:
第三面
1 前幾回面試感受如何?
2 你如今的APP日活是多少?
3 你如今如何處理崩潰日誌?
4 你以爲小團隊好仍是大團隊好?(這個問題不能直接回答好和很差,否則掉坑裏了)
5 你的優勢和缺點說下?
6 你的發展方向說下?是先講究寬度仍是講究深度,爲何?
7 爲何離職?
8 其餘小問題,如哪裏人啊?如今工資怎樣?要求如何,什麼時候到崗啊?有什麼問題要問個人嗎?
就這樣,第三面結束了。能夠看出,第三面面試官不會考察你的知識細節,而是問一些形而上的知識。他是從總體方向上去把握面試者,每每最後一個面試官對你起到決定性做用。固然,能見到最後一面面試官,說明你前兩面都已通過了。
總結
此次面試感受還不錯,美團的開發同窗待人方面很隨和。很喜歡這種氛圍。結果不重要,重要的是過程。只要你有實力,就別擔憂。若是很差好學習,就算背了面試題,又能如何?同樣會在面試中PASS。因此說,平時寫代碼的時候須要多多思考,不必定用到纔去Google,對於一些新的技術,要不斷追求同時別忘記了基礎很重要,基礎,基礎,基礎,重要的事說3遍。
在接下來的學習和工做中,須要學習繼續探索如下問題。
1 Java基礎知識。線程,java虛擬機,內存模型等。
2 Android基礎知識。官方API,經常使用控件源碼,自定義控件,動畫,性能分析等。
3 app層面:第三方開源框架(okHttp,Retrofit,ButterKnife),熱修復技術(Andfix,Robust,Tinker等),崩潰處理,日誌處理,內存溢出內存泄漏定位等。
4 網絡基礎:TCP/IP,Http/Https,UDP,七層網絡協議等等。
5 溝通能力和相處能力,這是軟實力。很是關鍵,若是你技術很好,可是相處起來很困難,我想面試官也不太願意招你。
最後,向您請教一個問題唄?您是如何學習的?如何對知識進行管理和規劃?如何善用記憶七天遺忘曲線?如何對碎片化的時間進行管理?這個問題是我一直在黑暗中摸索的問題,但願你們踊躍留言?一塊兒進步!