1. 程式人生 > >Android 面試總結【中級】-2018

Android 面試總結【中級】-2018

從畢業至今經歷了兩家公司,都是比較小的創業型公司。目前因為某些因素不得投入到轟轟烈烈的求職大軍中來。這次求職的目標是中大型公司,加之時間只有一個月不到,因此面試經歷不算豐富。不過還是記錄下來以供參考,順便算是一個總結吧。

這裡只對問題做一些記錄,具體答案就不公佈了,才疏學淺以免誤導。

Java 相關

這一部分主要是一些 Java 方面的知識。面試 Android 免不了的會被問到 Java 的東西。

  • Java 三大特性
  • Java中==和equals和hashCode的區別
  • String、StringBuffer、StringBuilder區別
  • 對 String 的理解
  • 成員內部類、靜態內部類、區域性內部類和匿名內部類的理解,以及專案中的應用
  • 泛型中 extends 和 super 的區別
  • 泛型的原理
  • 序列化的方式及區別
  • 一個 Integer 物件在記憶體中佔多少個位元組
  • Java 的異常體系
  • 多型的機制
  • 反射機制
  • 類載入過程

Android 相關

  • 四大元件
  • Activity Fragment 生命週期
  • Activity 各種切換間的生命週期呼叫過程
  • Activity 啟動模式及應用場景
  • Activity 和 Service 之間的通訊方式
  • 跨程序通訊都有那些方式
  • 資料庫,以及資料庫升級
  • 自定義 View 相關的東西
  • 事件分發機制
  • Activity-Window-View三者的關係
  • IntentService 的原理
  • AsyncTask 的原理
  • Activity 的啟動
  • Handler 的原理
  • Handler 使用過程中可能出現那些問題,及解決辦法
  • ScrollView 的原理
  • 對Bitmap 的理解
  • RecycleView/ListView 優化
  • gradle 在打包過程中是怎麼執行的
  • Library 和 主工程的 gradle 的區別

Kotlin

關於 Kotin 這個被問到的比較少,但是現在越來越多公司開始使用,所以最好還是做一定的瞭解。

  • 高階函式
  • 類擴充套件
  • 對 Kotlin 的看法(使用心得等)

一些常用三方庫、框架等

這個也是被問到的比較多的內容,一般都是問原理。

  • 開發中都用到了那些三方庫
  • RxJava 的使用及原理
  • Glide 的原理
  • Retrofit 的原理

資料結構

包括一些常用集合的原理等問題,我把它們劃分為資料結構相關的知識

  • HashMap 的原理(初始化、擴容、put操作等)
  • HashMap 和 HashTable 的區別,哪個是執行緒安全的
  • ArrayList 的原理
  • ArrayList 和 LinkedList 的區別
  • TreeMap 的瞭解
  • SpareArray 的原理
  • 連結串列(要求手寫一個連結串列結構)
  • 平衡二叉樹的瞭解
  • 二叉樹的遍歷(前序、中序、後序)

執行緒相關

多執行緒其實在面試中是被問到的比較多的,不過翻來覆去就這幾個問題

  • run 和 start 的區別
  • 怎麼啟動多執行緒
  • 執行緒池都有哪些,以及他們的區別、原理等
  • 執行緒是什麼時候結束的
  • 如何結束掉一個執行緒,如果當前執行緒正在被阻塞,怎麼結束掉
  • Thread 和 Runnable 的區別
  • 執行緒同步機制
  • 鎖機制

演算法

演算法這一塊被問到的不是太多,不過最好做相應的瞭解並由一定的準備。

  • 排序演算法有哪些
  • 氣泡排序的時間複雜度
  • 要求對一組學生成績做排序,並寫出演算法的時間複雜度
  • 1, 1, 2, 3, 5, 8, 13, 21, 34, 55… 的規律,並手寫演算法(斐波那契數列)
  • 反轉一個單鏈表

網路相關

網路這一塊被問到的也不算太多,都是比較簡單的問題。

  • Http 請求的方式都有哪些
  • GET 請求的引數有什麼要注意的
  • GET 請求的引數長度限制
  • POST 請求的型別有哪些

主觀問題

這裡面主要是聊一些主觀性的東西,不過個人認為算是比較重要的東西。

  • 如果讓你封裝一個圖片載入庫,你都會考慮哪些方面的問題
  • 如果一個頁面多次進入越來越卡,你會考慮到那些方面的問題
  • 最近開發中遇到的認為比較有價值的問題
  • 你認為你做的專案中有哪些比較有代表性的技術
  • 閒暇時間都幹嘛?
  • 平時有看一些技術文章、書籍麼?你認為對你實際開發的幫助有哪些
  • 搞了這麼久開發,你認為自己有哪些亮點

其他

  • git 的 Rebase 和 Merge 的區別

以上就是我在近一個月面試過程中遇到的問題,僅靠個人之力肯定不夠全面。不過程式設計師崇尚開源,這裡也是拿出來和大家分享。