jujin for android

面試問題

關於人文方面的問題html

  • 先介紹一下你本身?
  • 你有什麼興趣愛好?
  • 你日常空閒時間會幹什麼,看哪些書,有什麼心得體會?
  • 若是面試過了的話,就會問你的指望薪資,而後就開始各類壓榨你。

關於 Java 方面的問到的知識點java

  • 面向對象的三大特性,如何理解其中的多態?
  • JVM 的內存模型?
  • String、StringBuilder、StringBuffer 的區別,StringBuffer 是如何實現線程安全的?
  • 瞭解過 HTTP 嗎?說說它的特色,它裏面有哪些方法,有了解過嗎?知道 HTTPS 嗎?這二者有什麼區別?
  • 你日常是怎麼進行加密的?MD5 加密是可逆的嗎?
  • 接口與抽象類的區別?static 方法能夠被覆蓋嗎?爲何?
  • 建立線程的方式,他們有什麼區別?知道線程池嗎?說說對線程池的理解?
  • 你瞭解過 Java 的四種引用嗎?分別表明什麼含義,他們有什麼區別?
  • Java 中關於 equals 和 hashcode 的理解?
  • 關於 Java 中深拷貝和淺拷貝的區別?
  • 簡單的說下 Java 的垃圾回收?
  • 瞭解過 Java 的集合嗎?說說 HashMap 的底層實現原理?ArrayList 和 LinkedList 的區別?Java 集合中哪些是線程安全的?
  • 如何實現對象的排序?
  • 知道 ThreadLocal 嗎?說說對它的理解?
  • 在你寫代碼的過程當中有使用過設計模式嗎?你知道哪些?爲何要這樣用,能解決什麼問題?
  • 瞭解註解嗎?瞭解反射嗎?爲何要使用反射?
  • 數據結構中經常使用排序算法?

以上就是關於 Java 所問道的知識點,記得不是太清楚了,待補充。。。android

關於 Android 方面的問到的知識點程序員

  • Activity 的生命週期是什麼? onPause 和 onStop 有什麼區別?
  • Android 五種佈局的性能對比?
  • Android 四大組件是什麼?分別說說對它們的理解?
  • 關於 Service 的理解?它的啓動方式有什麼區別?
  • 瞭解 fragment 嗎?說說你對它的理解?
  • 自定義過 view 嗎?它的步驟是什麼?說說你自定義 view 過程當中出現的問題,以及是如何解決的?
  • 刷新 view 的幾種方式,他們有什麼區別?
  • Android 實現數據存儲的幾種方式?
  • 如何實現 Android 中的緩存的,經過使用第三方庫和自定義來分別說明一下緩存技術的實現?
  • 如何實現 Activity 與 fragment 的通訊?
  • Android 5.0、6.0、7.0 新特性?
  • Android 中的動畫分類?
  • 你之前是如何進行屏幕適配的?
  • 說說 Activity 建立過程?
  • Android 中如何與 JS 交互的?
  • 瞭解 APP 的啓動流程?
  • 你知道哪些圖片加載庫?他們有什麼區別?ImageLoader 的內部緩存機制是什麼?是如何實現的?
  • Android 中是如何實現異步通訊的?
  • 說說 Handler 內部實現原理?
  • 使用過 AsyncTask 嗎?說說它的內部實現原理?它有什麼缺陷?如何改進?
  • 知道 JNI、Binder 嗎?說說你對它們的理解?
  • 如何實現進程間的通訊?
  • 說說 Android view 和 viewGroup 的事件分發機制?
  • 你開發過程當中使用到了哪些第三方庫?瞭解過他們的源碼嗎?
  • 你瞭解廣播嗎?它與 EventBus 有什麼區別?能互相實現嗎?
  • 大家網絡請求是如何實現的?知道 Volley 嗎?內部實現流程是什麼?它與 OKHttp 有什麼區別?
  • 你瞭解哪些第三方功能?知道推送嗎?它的原理是什麼?
  • 接觸過 MVP 模式嗎?說說看對它的認識?
  • 知道 Android 中的多渠道打包嗎?
  • Android 簽名機制的原理?反編譯解壓後的文件夾所包含的內容有哪些?
  • 你瞭解過模塊化、組件化開發嗎?
  • 開始開發 APP 如何進行架構?
  • APP 工程模塊是如何劃分的?你是如何進行封裝的?
  • APP 是如何進行優化的?知道 OOM 嗎?如何解決內存泄漏?

 

第一面面試

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 溝通能力和相處能力,這是軟實力。很是關鍵,若是你技術很好,可是相處起來很困難,我想面試官也不太願意招你。

 

最後,向您請教一個問題唄?您是如何學習的?如何對知識進行管理和規劃?如何善用記憶七天遺忘曲線?如何對碎片化的時間進行管理?這個問題是我一直在黑暗中摸索的問題,但願你們踊躍留言?一塊兒進步!

相關文章
相關標籤/搜索