筆記 BAT 面試題 及部分答案

題目出自:https://www.jianshu.com/p/c70989bd5f29
本文出自 AWeiLoveAndroid的博客html

2018220日星期二前端

隨筆 筆記 BAT 面試題java

1、java面試題

熟練掌握java是很關鍵的,大公司不只僅要求你會使用幾個api,更多的是要你熟悉源碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些java有關的一些算法,設計模式等等。react

(一) java基礎面試知識點
  • java==equalshashCode的區別
  • intcharlong各佔多少字節數
  • intinteger的區別
  • 談談對java多態的理解
  • StringStringBufferStringBuilder區別
  • 什麼是內部類?內部類的做用
  • 抽象類和接口區別
  • 抽象類的意義
  • 抽象類與接口的應用場景
  • 抽象類是否能夠沒有方法和屬性?
  • 接口的意義
  • 泛型中extendssuper的區別
  • 父類的靜態方法可否被子類重寫
  • 進程和線程的區別
  • finalfinallyfinalize的區別
  • 序列化的方式

Externalizable是Serailizable的擴展,實現Externalizable接口的類其序列化有如下特色:
序列化時調用類的方法writeExternal,反序列化調用readExternal方法;
在執行反序列化時先調用類的無參數構造函數,這一點與默認的反序列化是不一樣的,所以對實現Externalizable接口來實現序列化的類而言,必須提供一個public的無參數構造函數,不然在反序列化時將出現異常。c++

總結git

若是採用默認的序列化方式,只要讓一個類實現Serializable接口,其實例就能夠被序列化。一般,專門爲繼承而設計的類應該儘可能不要實現Serializable接口,由於一旦父類實現了Serializable接口,其全部子類也都是可序列化的了。github

默認的序列化方式的不足之處:面試

1.直接對對象的不宜對外公開的敏感數據進行序列化,這是不安全的;
2.不會檢查對象的成員變量是否符合正確的約束條件,有可能被篡改數據而致使運行異常;
3.須要對對象圖作遞歸遍歷,若是對象圖很複雜,會消耗不少資源,設置引發Java虛擬機的堆棧溢出;
4.使類的接口被類的內部實現約束,制約類的升級與維護。算法

經過實現Serializable接口的private類型的writeObject()和readObject(),或是實現Externalizable接口,並實現writeExternal()與readExternal()方法,並提供public類型的無參數構造函數兩種方式來控制序列化過程能夠有效規避默認序列化方式的不足之處。sql

 

  • Serializable Parcelable 的區別

二者最大的區別在於 存儲媒介的不一樣Serializable 使用 I/O 讀寫存儲在硬盤上,而 Parcelable是直接 在內存中讀寫。很明顯,內存的讀寫速度一般大於 IO 讀寫,因此在 Android 中傳遞數據優先選擇 Parcelable

Serializable 會使用反射,序列化和反序列化過程須要大量 I/O 操做, Parcelable 自已實現封送和解封(marshalled &unmarshalled)操做不須要用反射,數據也存放在 Native 內存中,效率要快不少

Serializable:

  • 1.Serializable是java提供的可序列化接口
  • 2.Serializable的序列化與反序列化須要大量的IO操做,效率比較低
  • 3.Serializable實現起來很簡單

Parcelable:

  • 1.Parcelable是Android特有的可序列化接口
  • 2.Parcelable的效率比較高
  • 3.Parcleable實現起來比較複雜
  • 1.Parcleable: 內存中的序列化時使用,效率更高
  • 2.Serializable: 對象序列化到存儲設備中、在網絡中傳輸等

使用場

 

  • 靜態屬性和靜態方法是否能夠被繼承?是否能夠被重寫?以及緣由?
  • 靜態內部類的設計意圖

局部內部類

局部內部類是嵌套在方法和做用於內的,對於這個類的使用主要是應用與解決比較複雜的問題,想建立一個類來輔助咱們的解決方案,到那時又不但願這個類是公共可用的,因此就產生了局部內部類,局部內部類和成員內部類同樣被編譯,只是它的做用域發生了改變,它只能在該方法和屬性中被使用,出了該方法和屬性就會失效。

匿名內部類

一、匿名內部類是沒有訪問修飾符的。

二、new 匿名內部類,這個類首先是要存在的。

三、當所在方法的形參須要被匿名內部類使用,那麼這個形參就必須爲final。

四、匿名內部類沒有明面上的構造方法,編譯器會自動生成一個引用外部類的構造方法。

在成員內部類中要注意兩點:

成員內部類中不能存在任何static的變量和方法;

成員內部類是依附於外圍類的,因此只有先建立了外圍類纔可以建立內部類。

靜態內部類

靜態內部類與非靜態內部類之間存在一個最大的區別:非靜態內部類在編譯完成以後會隱含地保存着一個引用,該引用是指向建立它的外圍內,可是靜態內部類卻沒有。

沒有這個引用就意味着:它的建立是不須要依賴於外圍類的。

它不能使用任何外圍類的非static成員變量和方法。

 

  • 成員內部類、靜態內部類、局部內部類和匿名內部類的理解,以及項目中的應用

不過要注意的是,當成員內部類擁有和外部類同名的成員變量或者方法時,會發生隱藏現象,即默認狀況下訪問的是成員內部類的成員。若是要訪問外部類的同名成員,須要如下面的形式進行訪問:

1

2

外部類.this.成員變量

外部類.this.成員方法

反向調用  添加get 方法 ,調用get 方法  調用 內部類的 變量和方法

 這段代碼爲兩個按鈕設置監聽器,這裏面就使用了匿名內部類

代碼中須要給按鈕設置監聽器對象,使用匿名內部類可以在實現父類或者接口中的方法狀況下同時產生一個相應的對象,可是前提是這個父類或者接口必須先存在才能這樣使用。 

匿名內部類是惟一一種沒有構造器的類。正由於其沒有構造器,因此匿名內部類的使用範圍很是有限,大部分匿名內部類用於接口回調。匿名內部類在編譯的時候由系統自動起名爲Outter$1.class。通常來講,匿名內部類用於繼承其餘類或是實現接口,並不須要增長額外的方法,只是對繼承方法的實現或是重寫。

 4.靜態內部類

  靜態內部類也是定義在另外一個類裏面的類,只不過在類的前面多了一個關鍵字static。靜態內部類是不須要依賴於外部類的,這點和類的靜態成員屬性有點相似,而且它不能使用外部類的非static成員變量或者方法,這點很好理解,由於在沒有外部類的對象的狀況下,能夠建立靜態內部類的對象,若是容許訪問外部類的非static成員就會產生矛盾,由於外部類的非static成員必須依附於具體的對象。

1.每一個內部類都能獨立的繼承一個接口的實現,因此不管外部類是否已經繼承了某個(接口的)實現,對於內部類都沒有影響。內部類使得多繼承的解決方案變得完整,

  2.方便將存在必定邏輯關係的類組織在一塊兒,又能夠對外界隱藏。

  3.方便編寫事件驅動程序

  4.方便編寫線程代碼

  我的以爲第一點是最重要的緣由之一,內部類的存在使得Java的多繼承機制變得更加完善。

 

  • 談談對kotlin的理解
  • 閉包和局部內部類的區別
  • string 轉換成 integer的方式及原理
  • 哪些狀況下的對象會被垃圾回收機制處理掉?
  • 講一下常見編碼方式?
  • utf-8編碼中的中文佔幾個字節;int型幾個字節?
  • 靜態代理和動態代理的區別,什麼場景使用?
  • Java的異常體系
  • 談談你對解析與分派的認識。
  • 修改對象Aequals方法的簽名,那麼使用HashMap存放這個對象實例的時候,會調用哪一個equals方法?
  • Java中實現多態的機制是什麼?
  • 如何將一個Java對象序列化到文件裏?
  • 說說你對Java反射的理解
  • 說說你對Java註解的理解
  • 說說你對依賴注入的理解
  • 說一下泛型原理,並舉例說明
  • JavaString的瞭解
  • String爲何要設計成不可變的?
  • Object類的equalhashCode方法重寫,爲何?
  • 經常使用數據結構簡介
  • 併發集合瞭解哪些?
  • 列舉java的集合以及集合之間的繼承關係
  • 集合類以及集合框架
  • 容器類介紹以及之間的區別(容器類估計不少人沒聽這個詞,Java容器主要能夠劃分爲4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、ArraysCollections),具體的能夠看看這篇博文 Java容器類
  • List,Set,Map的區別
  • ListMap的實現方式以及存儲方式
  • HashMap的實現原理
  • HashMap數據結構?
  • HashMap源碼理解
  • HashMap如何put數據(從HashMap源碼角度講解)?
  • HashMap怎麼手寫實現?
  • ConcurrentHashMap的實現原理
  • ArrayMapHashMap的對比
  • HashTable實現原理
  • TreeMap具體實現
  • HashMapHashTable的區別
  • HashMapHashSet的區別
  • HashSetHashMap怎麼判斷集合元素重複?
  • 集合Set實現Hash怎麼防止碰撞
  • ArrayListLinkedList的區別,以及應用場景
  • 數組和鏈表的區別
  • 二叉樹的深度優先遍歷和廣度優先遍歷的具體實現
  • 堆的結構
  • 堆和樹的區別
  • 堆和棧在內存中的區別是什麼(解答提示:能夠從數據結構方面以及實際實現方面兩個方面去回答)
  • 什麼是深拷貝和淺拷貝
  • 手寫鏈表逆序代碼
  • 講一下對樹,B+樹的理解
  • 講一下對圖的理解
  • 判斷單鏈表成環與否?
  • 鏈表翻轉(即:翻轉一個單項鍊表)
  • 合併多個單有序鏈表(假設都是遞增的)
  • 開啓線程的三種方式?
  • 線程和進程的區別?
  • 爲何要有線程,而不是僅僅用進程?
  • run()start()方法區別
  • 如何控制某個方法容許併發訪問線程的個數?
  • Javawaitseelp方法的不一樣;
  • 談談wait/notify關鍵字的理解
  • 什麼致使線程阻塞?
  • 線程如何關閉?
  • 講一下java中的同步的方法
  • 數據一致性如何保證?
  • 如何保證線程安全?
  • 如何實現線程同步?
  • 兩個進程同時要求寫或者讀,能不能實現?如何防止進程的同步?
  • 線程間操做List
  • Java中對象的生命週期
  • Synchronized用法
  • synchronize的原理
  • 談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解
  • static synchronized 方法的多線程訪問和做用
  • 同一個類裏面兩個synchronized方法,兩個線程同時訪問的問題
  • volatile的原理
  • 談談volatile關鍵字的用法
  • 談談volatile關鍵字的做用
  • 談談NIO的理解
  • synchronized volatile 關鍵字的區別
  • synchronizedLock的區別
  • ReentrantLock synchronizedvolatile比較
  • ReentrantLock的內部實現
  • lock原理
  • 死鎖的四個必要條件?
  • 怎麼避免死鎖?
  • 對象鎖和類鎖是否會互相影響?
  • 什麼是線程池,如何使用?
  • Java的併發、多線程、線程模型
  • 談談對多線程的理解
  • 多線程有什麼要注意的問題?
  • 談談你對併發編程的理解並舉例說明
  • 談談你對多線程同步機制的理解?
  • 如何保證多線程讀寫文件的安全?
  • 多線程斷點續傳原理
  • 斷點續傳的實現
(二) java深刻源碼級的面試題(有難度)
(三) 數據結構
(四) 線程、多線程和線程池
(五)併發編程有關知識點(這個是通常Android開發用的少的,因此建議多去看看):

平時Android開發中對併發編程能夠作得比較少,Thread這個類常常會用到,可是咱們想提高本身的話,必定不能停留在表面,,咱們也應該去了解一下java的關於線程相關的源碼級別的東西。

學習的參考資料以下:

Java 內存模型

線程狀態:

鎖:

併發編程:

 

2、Android面試題

Android面試題包括Android基礎,還有一些源碼級別的、原理這些等。因此想去大公司面試,必定要多看看源碼和實現方式,經常使用框架能夠試試本身能不能手寫實現一下,鍛鍊一下本身。

(一)Android基礎知識點
  • 四大組件是什麼
  • 四大組件的生命週期和簡單用法
  • Activity之間的通訊方式
  • Activity各類狀況下的生命週期
  • 橫豎屏切換的時候,Activity 各類狀況下的生命週期
  • ActivityFragment之間生命週期比較
  • Activity上有Dialog的時候按Home鍵時的生命週期
  • 兩個Activity 之間跳轉時必然會執行的是哪幾個方法?
  • 前臺切換到後臺,而後再回到前臺,Activity生命週期回調方法。彈出Dialog,生命值週期回調方法。
  • Activity的四種啓動模式對比
  • Activity狀態保存於恢復
  • fragment各類狀況下的生命週期
  • Fragment狀態保存startActivityForResult是哪一個類的方法,在什麼狀況下使用?
  • 如何實現Fragment的滑動?
  • fragment之間傳遞數據的方式?
  • Activity 怎麼和Service 綁定?
  • 怎麼在Activity 中啓動本身對應的Service
  • serviceactivity怎麼進行數據交互?
  • Service的開啓方式
  • 請描述一下Service 的生命週期
  • 談談你對ContentProvider的理解
  • 說說ContentProviderContentResolverContentObserver 之間的關係
  • 請描述一下廣播BroadcastReceiver的理解
  • 廣播的分類
  • 廣播使用的方式和場景
  • manifest 和代碼中如何註冊和使用BroadcastReceiver?
  • 本地廣播和全局廣播有什麼差異?
  • BroadcastReceiverLocalBroadcastReceiver 區別
  • AlertDialog,popupWindow,Activity區別
  • Application Activity Context 對象的區別
  • Android屬性動畫特性
  • 如何導入外部數據庫?
  • LinearLayoutRelativeLayoutFrameLayout的特性及對比,並介紹使用場景。
  • 談談對接口與回調的理解
  • 回調的原理
  • 寫一個回調demo
  • 介紹下SurfView
  • RecycleView的使用
  • 序列化的做用,以及Android兩種序列化的區別
  • 差值器
  • 估值器
  • Android中數據存儲方式
  • Android動畫框架實現原理
  • Android各個版本API的區別
  • RequestlayoutonlayoutonDrawDrawChild區別與聯繫
  • invalidatepostInvalidate的區別及使用
  • Activity-Window-View三者的差異
  • 談談對Volley的理解
  • 如何優化自定義View
  • 低版本SDK如何實現高版本api
  • 描述一次網絡請求的流程
  • HttpUrlConnection okhttp關係
  • Bitmap對象的理解
  • looper架構
  • ActivityThreadAMSWMS的工做原理
  • 自定義View如何考慮機型適配
  • 自定義View的事件
  • AstncTask+HttpClient AsyncHttpClient有什麼區別?
  • LaunchMode應用場景
  • AsyncTask 如何使用?
  • SpareArray原理
  • 請介紹下ContentProvider 是如何實現數據共享的?
  • AndroidServiceActivity之間通訊的幾種方式
  • IntentService原理及做用是什麼?
  • 說說ActivityIntentService 是什麼關係
  • ApplicationContextActivityContext的區別
  • SP是進程同步的嗎?有什麼方法作到同步?
  • 談談多線程在Android中的使用
  • 進程和 Application 的生命週期
  • 封裝View的時候怎麼知道view的大小
  • RecycleView原理
  • AndroidManifest的做用與理解
  • Handler機制和底層實現
  • HandlerThreadHandlerThread的差異
  • handler發消息給子線程,looper怎麼啓動?
  • 關於Handler,在任何地方new Handler 都是什麼線程下?
  • ThreadLocal原理,實現及如何保證Local屬性?
  • 請解釋下在單線程模型中MessageHandlerMessage QueueLooper之間的關係
  • 請描述一下View事件傳遞分發機制
  • Touch事件傳遞流程
  • 事件分發中的onTouch onTouchEvent 有什麼區別,又該如何使用?
  • ViewViewGroup分別有哪些事件分發相關的回調方法
  • View刷新機制
  • View繪製流程
  • 自定義控件原理
  • 自定義View如何提供獲取View屬性的接口?
  • Android代碼中實現WAP方式聯網
  • AsyncTask機制
  • AsyncTask原理及不足
  • 如何取消AsyncTask
  • 爲何不能在子線程更新UI
  • ANR產生的緣由是什麼?
  • ANR定位和修正
  • oom是什麼?
  • 什麼狀況致使oom
  • 有什麼解決方法能夠避免OOM
  • Oom 是否能夠try catch?爲何?
  • 內存泄漏是什麼?
  • 什麼狀況致使內存泄漏?
  • 如何防止線程的內存泄漏?
  • 內存泄露場的解決方法
  • 內存泄漏和內存溢出區別?
  • LruCache默認緩存大小
  • ContentProvider的權限管理(解答:讀寫分離,權限控制-精確到表級,URL控制)
  • 如何經過廣播攔截和abort一條短信?
  • 廣播是否能夠請求網絡?
  • 廣播引發anr的時間限制是多少?
  • 計算一個view的嵌套層級
  • Activity
  • Android線程有沒有上限?
  • 線程池有沒有上限?
  • ListView重用的是什麼?
  • Android爲何引入Parcelable
  • 有沒有嘗試簡化Parcelable的使用?
  • ListView 中圖片錯位的問題是如何產生的?
  • 混合開發有了解嗎?
  • 知道哪些混合開發的方式?說出它們的優缺點和各自使用場景?(解答:好比:RNweexH5,小程序,WPA等。作Android的瞭解一些前端js等仍是頗有好處的)
  • 屏幕適配的處理技巧都有哪些?
  • 服務器只提供數據接收接口,在多線程或多進程條件下,如何保證數據的有序到達?
  • 動態佈局的理解
  • 怎麼去除重複代碼?
  • 畫出 Android 的大致架構圖
  • RecycleviewListView的區別
  • ListView圖片加載錯亂的原理和解決方案
  • 動態權限適配方案,權限組的概念
  • Android系統爲何會設計ContentProvider
  • 下拉狀態欄是否是影響activity的生命週期
  • 若是在onStop的時候作了網絡請求,onResume的時候怎麼恢復?
  • Bitmap 使用時候注意什麼?
  • Bitmaprecycler()
  • Android中開啓攝像頭的主要步驟
  • ViewPager使用細節,如何設置成每次只初始化當前的Fragment,其餘的不初始化?
  • 點擊事件被攔截,可是想傳到下面的View,如何操做?
  • 微信主頁面的實現方式
  • 微信上消息小紅點的原理
  • CAS介紹(這是阿里巴巴的面試題,我不是很瞭解,能夠參考博客: CAS簡介
(二)Android源碼相關分析
(三)常見的一些原理性問題
(四)開發中常見的一些問題

 

3、混合開發面試題

大廠除了技術深度以外,還要求你具有一些廣度的知識,好比你要會前端知識,會混合開發,至少會一種腳本語言,C c++更不用說了,也是必會的。

  • Hybrid作過嗎?
  • Hybrid通訊原理是什麼,有作研究嗎?
  • react native有多少了解?講一下原理。
  • weex瞭解嗎?如何本身實現相似技術?
  • flutter瞭解嗎?內部是如何實現跨平臺的?
  • Dart語言有研究貴嗎?
  • 快應用瞭解嗎?跟其她方式相比有什麼優缺點?
  • 說說你用過的混合開發技術有哪些?各有什麼優缺點?
  • Python會嗎?
  • 會不會PHP
  • Gradle瞭解多少?groovy語法會嗎?

 

4、高端技術面試題

這裏講的是大公司須要用到的一些高端Android技術,這裏專門整理了一個文檔,但願你們均可以看看。這些題目有點技術含量,須要好點時間去研究一下的。

(一)圖片
  • 圖片庫對比
  • 圖片庫的源碼分析
  • 圖片框架緩存實現
  • LRUCache原理
  • 圖片加載原理
  • 本身去實現圖片庫,怎麼作?
  • Glide源碼解析
  • Glide使用什麼緩存?
  • Glide內存緩存如何控制大小?
  • 網絡框架對比和源碼分析
  • 本身去設計網絡請求框架,怎麼作?
  • okhttp源碼
  • 網絡請求緩存處理,okhttp如何處理網絡緩存的
  • 從網絡加載一個10M的圖片,說下注意事項
  • TCP3次握手和四次揮手
  • TCPUDP的區別
  • TCPUDP的應用
  • HTTP協議
  • HTTP1.02.0的區別
  • HTTP報文結構
  • HTTPHTTPS的區別以及如何實現安全性
  • 如何驗證證書的合法性?
  • https中哪裏用了對稱加密,哪裏用了非對稱加密,對加密算法(如RSA)等是否有了解?
  • client如何肯定本身發送的消息被server收到?
  • 談談你對WebSocket的理解
  • WebSocketsocket的區別
  • 談談你對安卓簽名的理解。
  • 請解釋安卓爲啥要加簽名機制?
  • 視頻加密傳輸
  • App 是如何沙箱化,爲何要這麼作?
  • 權限管理系統(底層的權限是如何進行 grant 的)?
  • sqlite升級,增長字段的語句
  • 數據庫框架對比和源碼分析
  • 數據庫的優化
  • 數據庫數據遷移問題
  • 排序算法有哪些?
  • 最快的排序算法是哪一個?
  • 手寫一個冒泡排序
  • 手寫快速排序代碼
  • 快速排序的過程、時間複雜度、空間複雜度
  • 手寫堆排序
  • 堆排序過程、時間複雜度及空間複雜度
  • 寫出你所知道的排序算法及時空複雜度,穩定性
  • 二叉樹給出根節點和目標節點,找出從根節點到目標節點的路徑
  • 給阿里2萬多名員工按年齡排序應該選擇哪一個算法?
  • GC算法(各類算法的優缺點以及應用場景)
  • 蟻羣算法與蒙特卡洛算法
  • 子串包含問題(KMP 算法)寫代碼實現
  • 一個無序,不重複數組,輸出N個元素,使得N個元素的和相加爲M,給出時間複雜度、空間複雜度。手寫算法
  • 萬億級別的兩個URL文件AB,如何求出AB的差集C(提示:Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應用層面對尋址的優化)
  • 百度POI中如何試下查找最近的商家功能(提示:座標鏡像+R)
  • 兩個不重複的數組集合中,求共同的元素。
  • 兩個不重複的數組集合中,這兩個集合都是海量數據,內存中放不下,怎麼求共同的元素?
  • 一個文件中有100萬個整數,由空格分開,在程序中判斷用戶輸入的整數是否在此文件中。說出最優的方法
  • 一張Bitmap所佔內存以及內存佔用的計算
  • 2000萬個整數,找出第五十大的數字?
  • 燒一根不均勻的繩,從頭燒到尾總共須要1個小時。如今有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
  • 1000之內的水仙花數以及40億之內的水仙花數
  • 5枚硬幣,23反如何劃分爲兩堆而後經過翻轉讓兩堆中正面向上的硬8幣和反面向上的硬幣個數相同
  • 時針走一圈,時針分針重合幾回
  • N*N的方格紙,裏面有多少個正方形
  • x個蘋果,一天只能吃一個、兩個、或者三個,問多少天能夠吃完?
  • 對熱修復和插件化的理解
  • 插件化原理分析
  • 模塊化實現(好處,緣由)
  • 熱修復,插件化
  • 項目組件化的理解
  • 描述清點擊 Android Studio build 按鈕後發生了什麼
  • 談談你對Android設計模式的理解
  • MVC MVP MVVM原理和區別
  • 你所知道的設計模式有哪些?
  • 項目中經常使用的設計模式
  • 手寫生產者/消費者模式
  • 寫出觀察者模式的代碼
  • 適配器模式,裝飾者模式,外觀模式的異同?
  • 用到的一些開源框架,介紹一個看過源碼的,內部實現過程。
  • 談談對RxJava的理解
  • RxJava的功能與原理實現
  • RxJava的做用,與平時使用的異步操做來比的優缺點
  • 說說EventBus做用,實現方式,代替EventBus的方式
  • 0設計一款App總體架構,如何去作?
  • 說一款你認爲當前比較火的應用並設計(好比:直播APPP2P金融,小視頻等)
  • 談談對java狀態機理解
  • Fragment若是在Adapter中使用應該如何解耦?
  • Binder機制及底層實現
  • 對於應用更新這塊是如何作的?(解答:灰度,強制更新,分區域更新)
  • 實現一個Json解析器(能夠經過正則提升速度)
  • 統計啓動時長,標準
  • 如何對Android 應用進行性能分析以及優化?
  • ddms traceView
  • 性能優化如何分析systrace
  • IDE如何分析內存泄漏?
  • Java多線程引起的性能問題,怎麼解決?
  • 啓動頁白屏及黑屏解決?
  • 啓動太慢怎麼解決?
  • 怎麼保證應用啓動不卡頓?
  • App啓動崩潰異常捕捉
  • 自定義View注意事項
  • 如今下載速度很慢,試從網絡協議的角度分析緣由,並優化(提示:網絡的5層均可以涉及)
  • Https請求慢的解決辦法(提示:DNS,攜帶數據,直接訪問IP
  • 如何保持應用的穩定性
  • RecyclerViewListView的性能對比
  • ListView的優化
  • RecycleView優化
  • View渲染
  • Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
  • java中的四種引用的區別以及使用場景
  • 強引用置爲null,會不會被回收?
  • 請介紹一下NDK
  • 什麼是NDK?
  • jni用過嗎?
  • 如何在jni中註冊native函數,有幾種註冊方式?
  • Java如何調用cc++語言?
  • jni如何調用java層代碼?
  • 進程間通訊的方式?
  • Binder機制
  • 簡述IPC
  • 什麼是AIDL
  • AIDL解決了什麼問題?
  • AIDL如何使用?
  • Android 上的 Inter-Process-Communication 跨進程通訊時如何工做的?
  • 多進程場景碰見過麼?
  • Android進程分類?
  • 進程和 Application 的生命週期?
  • 進程調度
  • 談談對進程共享和線程安全的認識
  • 談談對多進程開發的理解以及多進程應用場景
  • 什麼是協程?
  • java虛擬機的特性
  • 談談對jvm的理解
  • JVM內存區域,開線程影響哪塊內存
  • DalvikART虛擬機有什麼瞭解?
  • ArtDalvik對比
  • 虛擬機原理,如何本身設計一個虛擬機(內存管理,類加載,雙親委派)
  • 談談你對雙親委派模型理解
  • JVM內存模型,內存區域
  • 類加載機制
  • 談談對ClassLoader(類加載器)的理解
  • 談談對動態加載(OSGI)的理解
  • 內存對象的循環引用及避免
  • 內存回收機制、GC回收策略、GC原理時機以及GC對象
  • 垃圾回收機制與調用System.gc()區別
  • Ubuntu編譯安卓系統
  • 系統啓動流程是什麼?(提示:Zygote進程 –> SystemServer進程 –> 各類系統服務 –> 應用進程)
  • 大致說清一個應用程序安裝到手機上時發生了什麼
  • 簡述Activity啓動所有過程
  • App啓動流程,從點擊桌面開始
  • 邏輯地址與物理地址,爲何使用邏輯地址?
  • Android爲每一個應用程序分配的內存大小是多少?
  • Android中進程內存的分配,能不能本身分配定額內存?
  • 進程保活的方式
  • 如何保證一個後臺服務不被殺死?(相同問題:如何保證service在後臺不被kill?)比較省電的方式是什麼?
  • App中喚醒其餘進程的實現方式
(二)網絡和安全機制
(三)數據庫
(四)算法
(五)插件化、模塊化、組件化、熱修復、增量更新、Gradle
(六)架構設計和設計模式
(七)性能優化
(八)NDK、jni、Binder、AIDL、進程通訊有關
(九)framework層、ROM定製、Ubuntu、Linux之類的問題

 

5、非技術性問題&HR問題彙總

這裏整理的是一些與技術沒有直接關係的面試題,可是可以考察你的綜合水平,因此不要覺得不是技術問題,就不看,每每有時候就是這樣一些細節的題目被忽視,而錯過了一次次面試機會。

(一)非技術問題
  • 介紹你作過的哪些項目
  • 都使用過哪些框架、平臺?
  • 都使用過哪些自定義控件?
  • 研究比較深刻的領域有哪些?
  • 對業內信息的關注渠道有哪些?
  • 最近都讀哪些書?
  • 有沒有什麼開源項目?
  • 本身最擅長的技術點,最感興趣的技術領域和技術點
  • 項目中用了哪些開源庫,如何避免由於引入開源庫而致使的安全性和穩定性問題
  • 實習過程當中作了什麼,有什麼產出?
  • 您在前一家公司的離職緣由是什麼?
  • 講一件你印象最深的一件事情
  • 介紹一個你影響最深的項目
  • 介紹你最熱愛最擅長的專業領域
  • 公司實習最大的收穫是什麼?
  • 與上級意見不一致時,你將怎麼辦?
  • 本身的優勢和缺點是什麼?並舉例說明?
  • 你的學習方法是什麼樣的?實習過程當中如何學習?實習項目中遇到的最大困難是什麼以及如何解決的?
  • 說一件最能證實你能力的事情
  • 針對你你申請的這個職位,你認爲你還欠缺什麼
  • 若是經過此次面試咱們單位錄用了你,但工做一段時間卻發現你根本不適合這個職位,你怎麼辦?
  • 項目中遇到最大的困難是什麼?如何解決的?
  • 你的職業規劃以及我的目標、將來發展路線及求職定位
  • 若是你在此次面試中沒有被錄用,你怎麼打算?
  • 評價下本身,評價下本身的技術水平,我的代碼量如何?
  • 經過哪些渠道瞭解的招聘信息,其餘同窗都投了哪些公司?
  • 業餘都有哪些愛好?
  • 你作過的哪件事最令本身感到驕傲?
  • 假如你晚上要去送一個出國的同窗去機場,可單位臨時有事非你辦不可,你怎麼辦?
  • 就你申請的這個職位,你認爲你還欠缺什麼?
  • 當前的offer情況;若是BATH都給了offer該如何選?
  • 你對一份工做更看重哪些方面?平臺,技術,氛圍,城市,仍是money
  • 理想薪資範圍;杭州崗和北京崗選哪一個?
  • 理想中的工做環境是什麼?
  • 談談你對跳槽的見解
  • 說說你對行業、技術發展趨勢的見解
  • 實習過程當中周圍同事/同窗有哪些值得學習的地方?
  • 家人對你的工做指望及本身的工做指望
  • 若是你的工做出現失誤,給本公司形成經濟損失,你認爲該怎麼辦?
  • 若上司在公開會議上誤會你了,該如何解決?
  • 是否能夠實習,能夠實習多久?
  • 在五年的時間內,你的職業規劃
  • 你看中公司的什麼?或者公司的那些方面最吸引你?
(二)HR提出的面試問題



做者:AWeiLoveAndroid
連接:https://www.jianshu.com/p/c70989bd5f29
來源:簡書
簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。

l ;

相關文章
相關標籤/搜索