1. 程式人生 > >近期參加的各大公司面試總結

近期參加的各大公司面試總結

前段時間公司堅持不下去了,所以加入了找工作的大軍。上一家公司是一家o2o創業公司,在裡面呆了一年半多,現有的公司的產品就是從零開始一點點參與完善迭代的,在這個過程中從中也學到了很多也成長了很多,更認識了一幫可愛的同事。

奈何大環境不好,公司已經堅持不下去了,所以開始準備找工作。從開始的準備面試題,面試找工作,換房子,處理一些家裡的事等,零零散散大概花了二十多天的樣子,這裡需要抱歉的是部落格和github上的問題沒有及時解決。

參加了不少公司的面試,有大公司有創業公司,有二線公司有小公司的,下面就是自己總結的面試題(這裡不在標註那些面試題對應著那家公司,至於面試題的答案,這裡暫時先不寫了):

  • 聊一聊protobuf是如何使用的?使用protobuf作為網路傳輸格式有哪些優勢?

  • 長連線是如何實現的?遇到過哪些問題?心跳機制的實現?耗電量,流量如何?穩定性如何?

  • 簡單談一談recyclerview、listview、scrollview三者之間的區別?

  • 談一談你對執行緒的理解?執行緒之間如何實現執行緒同步,多執行緒間資源訪問有何問題?談談你對synchronized關鍵字的理解?

  • Android中有哪幾種動畫?那些型別?他們之間有哪些區別?

  • 專案中使用到了imageloader,談一談你對imageloader的理解,如何實現的圖片資源的快取?

  • 簡單介紹一下arrayList,linkedList,vector三者之間的區別?

  • 如何配置activity使之成為啟動activity?

  • 如何實現序列化,序列化的原理與作用,Serializeble與Parcelable之間的區別?

  • 簡單介紹一下專案中使用的程式設計模式,說說mvc,mvp,mvvm三者之間的區別?

  • 談一談java中反射機制的實現原理,以及你對他的理解?

  • 專案中使用到了eventbus,那麼簡單說一下其實現原理?

  • 談一談hashmap的內部實現,hashcode與equals方法?

  • 談一談service服務,如何設定前臺服務,service的生命週期,bindService與startService的區別,什麼場景下使用?

  • 專案中使用了volley框架,談一談你對volley框架的理解,其有哪些使用規範?

  • 談一談java中map與set的區別?

  • 什麼是單鏈表?什麼事迴圈連結串列?二者之間有何區別?如何判斷某一連結串列結構為迴圈連結串列?

  • 談一談Android中的dex分包方案?

  • 簡單介紹一下Android中apk檔案的構建流程?

  • 簡單談一下你瞭解的元件化開發?

  • 那些加密演算法?對稱性加密與非對稱性加密?二者之間有何區別,具體有哪些加密演算法?

  • Android中webview控制元件版本適配問題?效能優化問題?記憶體溢位問題?

  • 是否可以使用gradle指令碼開發?是否使用過python?

  • 簡單介紹一下base64,其有何作用?

  • 簡單介紹一下Activity生命週期?各種情況下生命週期的呼叫情況?

  • 簡單介紹一下Service生命週期?startService與bindService的生命週期?

  • 如何遍歷二叉樹,以及遍歷二叉樹的複雜度空間複雜度?

  • 知道二叉樹前序遍歷,中序遍歷求後序遍歷?

  • 如何實現service的保活?有哪幾種方式?各有哪些利弊?

  • 簡單介紹一下長連線丟包的理解?

  • 簡單介紹一下TCP連線中四次揮手與三次握手?

  • Android中如何終止程序?

  • 簡單介紹一下leakcanary檢測記憶體溢位的原理?

  • 簡單介紹一下過度繪製原理?

  • volley框架中oom是如何產生的?

  • 在hdpi,xhdpi中載入同一張圖片記憶體大小比較?

  • Bitmap物件的ARGS_8888/ARGB_4444等圖片質量引數的區別?

  • 簡單介紹一下Java中的四中引用:強引用,軟引用,弱引用,虛引用以及各自的區別?

  • 簡單介紹一下Binder機制原理以及實現例項,Android中是否有其他的程序間通訊方式?

  • Android中的熱修復方案例項,原理與區別?

  • 平時開發過程中涉及到的設計模式?簡單介紹一下你熟悉的某種設計模式?

  • 專案中使用了scheme協議,簡單介紹一下其作用與簡單使用方式?

  • 你參與過那些開源專案以及負責哪方面的工作?

  • 簡單介紹一下java中的泛型,泛型擦除以及相關的概念?

  • java類載入器的載入流程?

  • 單例模式的各種變種?懶漢模式,餓漢模式等等

  • HashMap的擴容機制?

  • list,vector執行緒安全性問題?

  • java中有哪幾種classloader?

  • Android中程序的級別?以及各自的區別?

  • Android中的殺死程序和設定中的結束執行有何區別?

  • Android中的執行緒池?Android多執行緒之間如何互動?

  • Android中的多程序如何理解?如何配置Activity跨程序啟動?

  • java中程式碼塊,靜態程式碼快,建構函式的載入順序?

  • Android中Surfaceview相關概念?

  • Android中效能優化,記憶體洩露場景,以及相應的解決方案?

  • Android中Handler非同步訊息機制?

  • Android中的事件分發機制?

  • View的繪製流程,主要方法等?

  • 簡單介紹一下如何自定義View元件?

  • Bitmap如何優化?Bitmap的快取策略?

  • Activity的啟動模式,區別以及各自的使用場景?

  • Service與Activity之間如何通訊?

  • 手寫程式碼實現一個出入棧?

  • 手寫程式碼實現兩個棧實現一個佇列?

  • 手寫程式碼實現單例模式?

  • 使用遞迴遞迴和迴圈實現階乘?

  • 手寫程式碼實現兩個數組合並並排血的操作?

  • 手寫程式碼實現一個快速排序以及其時間複雜度和空間複雜度?

還有一些問題記得不是特別清楚了,這裡面有一些大公司:百度,360,網易,樂視,小米,知乎等等,當然也有一些小公司創業公司等。

由於這次想去個大一些的公司,所以主要針對大公司做了一些複習,這裡不得不說,想去大公司面試的童鞋一定要看一下資料結構和演算法。比如常見的資料結構:陣列,連結串列,棧,佇列,二叉樹等等;常見的排序演算法也要知道幾種,以及他們各自的時間負責度和空間複雜度。