Android高級(jí)面試題匯總

前言

金三銀四得糜,很多同學(xué)心里大概都準(zhǔn)備著年后找工作或者跳槽艘虎。最近有很多同學(xué)都在交流群里求大廠面試題症概。正好我電腦里面有這方面的整理,于是就發(fā)上來(lái)分享給大家但荤。

這些題目是網(wǎng)友去百度罗岖、小米、樂(lè)視腹躁、美團(tuán)桑包、58、獵豹纺非、360哑了、新浪赘方、搜狐等一線互聯(lián)網(wǎng)公司面試被問(wèn)到的題目。熟悉本文中列出的知識(shí)點(diǎn)會(huì)大大增加通過(guò)前兩輪技術(shù)面試的幾率弱左。

主要分為以下幾部分:

(1)java面試題

(2)Android面試題

(3)高級(jí)開(kāi)發(fā)技術(shù)面試題

(4)跨平臺(tái)Hybrid 開(kāi)發(fā)

一窄陡、java面試題

熟練掌握java是很關(guān)鍵的,大公司不僅僅要求你會(huì)使用幾個(gè)api拆火,更多的是要你熟悉源碼實(shí)現(xiàn)原理跳夭,甚至要你知道有哪些不足,怎么改進(jìn)们镜,還有一些java有關(guān)的一些算法币叹,設(shè)計(jì)模式等等。

(一) java基礎(chǔ)面試知識(shí)點(diǎn)

  • java中==和equals和hashCode的區(qū)別

  • int模狭、char颈抚、long各占多少字節(jié)數(shù)

  • int與integer的區(qū)別

  • 探探對(duì)java多態(tài)的理解

  • String、StringBuffer嚼鹉、StringBuilder區(qū)別

  • 什么是內(nèi)部類(lèi)贩汉??jī)?nèi)部類(lèi)的作用

  • 抽象類(lèi)和接口區(qū)別

  • 抽象類(lèi)的意義

  • 抽象類(lèi)與接口的應(yīng)用場(chǎng)景

  • 抽象類(lèi)是否可以沒(méi)有方法和屬性?

  • 接口的意義

  • 泛型中extends和super的區(qū)別

  • 父類(lèi)的靜態(tài)方法能否被子類(lèi)重寫(xiě)

  • 進(jìn)程和線程的區(qū)別

  • final反砌,finally雾鬼,finalize的區(qū)別

  • 序列化的方式

  • Serializable 和Parcelable 的區(qū)別

  • 靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫(xiě)宴树?以及原因策菜?

  • 靜態(tài)內(nèi)部類(lèi)的設(shè)計(jì)意圖

  • 成員內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)酒贬、局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)的理解又憨,以及項(xiàng)目中的應(yīng)用

  • 談?wù)剬?duì)kotlin的理解

  • 閉包和局部?jī)?nèi)部類(lèi)的區(qū)別

  • string 轉(zhuǎn)換成 integer的方式及原理

(二) java深入源碼級(jí)的面試題(有難度)
  • 哪些情況下的對(duì)象會(huì)被垃圾回收機(jī)制處理掉?

  • 講一下常見(jiàn)編碼方式锭吨?

  • utf-8編碼中的中文占幾個(gè)字節(jié)蠢莺;int型幾個(gè)字節(jié)?

  • 靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別零如,什么場(chǎng)景使用躏将?

  • Java的異常體系

  • 談?wù)勀銓?duì)解析與分派的認(rèn)識(shí)。

  • 修改對(duì)象A的equals方法的簽名考蕾,那么使用HashMap存放這個(gè)對(duì)象實(shí)例的時(shí)候祸憋,會(huì)調(diào)用哪個(gè)equals方法?

  • Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么肖卧?

  • 如何將一個(gè)Java對(duì)象序列化到文件里蚯窥?

  • 說(shuō)說(shuō)你對(duì)Java反射的理解

  • 說(shuō)說(shuō)你對(duì)Java注解的理解

  • 說(shuō)說(shuō)你對(duì)依賴(lài)注入的理解

  • 說(shuō)一下泛型原理,并舉例說(shuō)明

  • Java中String的了解

  • String為什么要設(shè)計(jì)成不可變的?

  • Object類(lèi)的equal和hashCode方法重寫(xiě)拦赠,為什么巍沙?

(三) 數(shù)據(jù)結(jié)構(gòu)
  • 常用數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介

  • 并發(fā)集合了解哪些?

  • 列舉java的集合以及集合之間的繼承關(guān)系

  • 集合類(lèi)以及集合框架

  • 容器類(lèi)介紹以及之間的區(qū)別(容器類(lèi)估計(jì)很多人沒(méi)聽(tīng)這個(gè)詞荷鼠,Java容器主要可以劃分為4個(gè)部分:List列表句携、Set集合、Map映射允乐、工具類(lèi)(Iterator迭代器务甥、Enumeration枚舉類(lèi)、Arrays和Collections)喳篇,具體的可以看看這篇博文 Java容器類(lèi))

  • List,Set,Map的區(qū)別

  • List和Map的實(shí)現(xiàn)方式以及存儲(chǔ)方式

  • HashMap的實(shí)現(xiàn)原理

  • HashMap數(shù)據(jù)結(jié)構(gòu)?

  • HashMap源碼理解

  • HashMap如何put數(shù)據(jù)(從HashMap源碼角度講解)态辛?

  • HashMap怎么手寫(xiě)實(shí)現(xiàn)麸澜?

  • ConcurrentHashMap的實(shí)現(xiàn)原理

  • ArrayMap和HashMap的對(duì)比

  • HashTable實(shí)現(xiàn)原理

  • TreeMap具體實(shí)現(xiàn)

  • HashMap和HashTable的區(qū)別

  • HashMap與HashSet的區(qū)別

  • HashSet與HashMap怎么判斷集合元素重復(fù)?

  • 集合Set實(shí)現(xiàn)Hash怎么防止碰撞

  • ArrayList和LinkedList的區(qū)別奏黑,以及應(yīng)用場(chǎng)景

  • 數(shù)組和鏈表的區(qū)別

  • 二叉樹(shù)的深度優(yōu)先遍歷和廣度優(yōu)先遍歷的具體實(shí)現(xiàn)

  • 堆的結(jié)構(gòu)

  • 堆和樹(shù)的區(qū)別

  • 堆和棧在內(nèi)存中的區(qū)別是什么(解答提示:可以從數(shù)據(jù)結(jié)構(gòu)方面以及實(shí)際實(shí)現(xiàn)方面兩個(gè)方面去回答)炊邦?

  • 什么是深拷貝和淺拷貝

  • 手寫(xiě)鏈表逆序代碼

  • 講一下對(duì)樹(shù),B+樹(shù)的理解

  • 講一下對(duì)圖的理解

  • 判斷單鏈表成環(huán)與否熟史?

  • 鏈表翻轉(zhuǎn)(即:翻轉(zhuǎn)一個(gè)單項(xiàng)鏈表)

  • 合并多個(gè)單有序鏈表(假設(shè)都是遞增的)

(四) 線程馁害、多線程和線程池
  • 開(kāi)啟線程的三種方式?

  • 線程和進(jìn)程的區(qū)別蹂匹?

  • 為什么要有線程碘菜,而不是僅僅用進(jìn)程?

  • run()和start()方法區(qū)別

  • 如何控制某個(gè)方法允許并發(fā)訪問(wèn)線程的個(gè)數(shù)限寞?

  • 在Java中wait和seelp方法的不同忍啸;

  • 談?wù)剋ait/notify關(guān)鍵字的理解

  • 什么導(dǎo)致線程阻塞?

  • 線程如何關(guān)閉履植?

  • 講一下java中的同步的方法

  • 數(shù)據(jù)一致性如何保證计雌?

  • 如何保證線程安全?

  • 如何實(shí)現(xiàn)線程同步玫霎?

  • 兩個(gè)進(jìn)程同時(shí)要求寫(xiě)或者讀凿滤,能不能實(shí)現(xiàn)?如何防止進(jìn)程的同步庶近?

  • 線程間操作List

  • Java中對(duì)象的生命周期

  • Synchronized用法

  • synchronize的原理

  • 談?wù)剬?duì)Synchronized關(guān)鍵字翁脆,類(lèi)鎖,方法鎖拦盹,重入鎖的理解

  • static synchronized 方法的多線程訪問(wèn)和作用

  • 同一個(gè)類(lèi)里面兩個(gè)synchronized方法鹃祖,兩個(gè)線程同時(shí)訪問(wèn)的問(wèn)題

  • volatile的原理

  • 談?wù)剉olatile關(guān)鍵字的用法

  • 談?wù)剉olatile關(guān)鍵字的作用

  • 談?wù)凬IO的理解

  • synchronized 和volatile 關(guān)鍵字的區(qū)別

  • synchronized與Lock的區(qū)別

  • ReentrantLock 、synchronized和volatile比較

  • ReentrantLock的內(nèi)部實(shí)現(xiàn)

  • lock原理

  • 死鎖的四個(gè)必要條件?

  • 怎么避免死鎖恬口?

  • 對(duì)象鎖和類(lèi)鎖是否會(huì)互相影響校读?

  • 什么是線程池,如何使用?

  • Java的并發(fā)祖能、多線程歉秫、線程模型

  • 談?wù)剬?duì)多線程的理解

  • 多線程有什么要注意的問(wèn)題?

  • 談?wù)勀銓?duì)并發(fā)編程的理解并舉例說(shuō)明

  • 談?wù)勀銓?duì)多線程同步機(jī)制的理解养铸?

  • 如何保證多線程讀寫(xiě)文件的安全雁芙?

  • 多線程斷點(diǎn)續(xù)傳原理

  • 斷點(diǎn)續(xù)傳的實(shí)現(xiàn)

(五)并發(fā)編程有關(guān)知識(shí)點(diǎn)(這個(gè)是一般Android開(kāi)發(fā)用的少的,所以建議多去看看):

平時(shí)Android開(kāi)發(fā)中對(duì)并發(fā)編程可以做得比較少钞螟,Thread這個(gè)類(lèi)經(jīng)常會(huì)用到兔甘,但是我們想提升自己的話(huà),一定不能停留在表面鳞滨,,我們也應(yīng)該去了解一下java的關(guān)于線程相關(guān)的源碼級(jí)別的東西洞焙。

二、Android面試題

Android面試題包括Android基礎(chǔ)拯啦,還有一些源碼級(jí)別的澡匪、原理這些等。所以想去大公司面試褒链,一定要多看看源碼和實(shí)現(xiàn)方式唁情,常用框架可以試試自己能不能手寫(xiě)實(shí)現(xiàn)一下,鍛煉一下自己甫匹。

(一)Android基礎(chǔ)知識(shí)點(diǎn)
  • 四大組件是什么

  • 四大組件的生命周期和簡(jiǎn)單用法

  • Activity之間的通信方式

  • Activity各種情況下的生命周期

  • 橫豎屏切換的時(shí)候甸鸟,Activity 各種情況下的生命周期

  • Activity與Fragment之間生命周期比較

  • Activity上有Dialog的時(shí)候按Home鍵時(shí)的生命周期

  • 兩個(gè)Activity 之間跳轉(zhuǎn)時(shí)必然會(huì)執(zhí)行的是哪幾個(gè)方法?

  • 前臺(tái)切換到后臺(tái)赛惩,然后再回到前臺(tái)哀墓,Activity生命周期回調(diào)方法。彈出Dialog喷兼,生命值周期回調(diào)方法篮绰。

  • Activity的四種啟動(dòng)模式對(duì)比

  • Activity狀態(tài)保存于恢復(fù)

  • fragment各種情況下的生命周期

  • Fragment狀態(tài)保存startActivityForResult是哪個(gè)類(lèi)的方法,在什么情況下使用季惯?

  • 如何實(shí)現(xiàn)Fragment的滑動(dòng)吠各?

  • fragment之間傳遞數(shù)據(jù)的方式?

  • Activity 怎么和Service 綁定勉抓?

  • 怎么在Activity 中啟動(dòng)自己對(duì)應(yīng)的Service贾漏?

  • service和activity怎么進(jìn)行數(shù)據(jù)交互?

  • Service的開(kāi)啟方式

  • 請(qǐng)描述一下Service 的生命周期

  • 談?wù)勀銓?duì)ContentProvider的理解

  • 說(shuō)說(shuō)ContentProvider藕筋、ContentResolver纵散、ContentObserver 之間的關(guān)系

  • 請(qǐng)描述一下廣播BroadcastReceiver的理解

  • 廣播的分類(lèi)

  • 廣播使用的方式和場(chǎng)景

  • 在manifest 和代碼中如何注冊(cè)和使用BroadcastReceiver?

  • 本地廣播和全局廣播有什么差別?

  • BroadcastReceiver,LocalBroadcastReceiver 區(qū)別

  • AlertDialog,popupWindow,Activity區(qū)別

  • Application 和 Activity 的 Context 對(duì)象的區(qū)別

  • Android屬性動(dòng)畫(huà)特性

  • 如何導(dǎo)入外部數(shù)據(jù)庫(kù)?

  • LinearLayout伍掀、RelativeLayout掰茶、FrameLayout的特性及對(duì)比,并介紹使用場(chǎng)景蜜笤。

  • 談?wù)剬?duì)接口與回調(diào)的理解

  • 回調(diào)的原理

  • 寫(xiě)一個(gè)回調(diào)demo

  • 介紹下SurfView

  • RecycleView的使用

  • 序列化的作用濒蒋,以及Android兩種序列化的區(qū)別

  • 差值器

  • 估值器

  • Android中數(shù)據(jù)存儲(chǔ)方式

(二)Android源碼相關(guān)分析

  • Android動(dòng)畫(huà)框架實(shí)現(xiàn)原理

  • Android各個(gè)版本API的區(qū)別

  • Requestlayout,onlayout把兔,onDraw沪伙,DrawChild區(qū)別與聯(lián)系

  • invalidate和postInvalidate的區(qū)別及使用

  • Activity-Window-View三者的差別

  • 談?wù)剬?duì)Volley的理解

  • 如何優(yōu)化自定義View

  • 低版本SDK如何實(shí)現(xiàn)高版本api?

  • 描述一次網(wǎng)絡(luò)請(qǐng)求的流程

  • HttpUrlConnection 和 okhttp關(guān)系

  • Bitmap對(duì)象的理解

  • looper架構(gòu)

  • ActivityThread县好,AMS围橡,WMS的工作原理

  • 自定義View如何考慮機(jī)型適配

  • 自定義View的事件

  • AstncTask+HttpClient 與 AsyncHttpClient有什么區(qū)別?

  • LaunchMode應(yīng)用場(chǎng)景

  • AsyncTask 如何使用?

  • SpareArray原理

  • 請(qǐng)介紹下ContentProvider 是如何實(shí)現(xiàn)數(shù)據(jù)共享的缕贡?

  • AndroidService與Activity之間通信的幾種方式

  • IntentService原理及作用是什么某饰?

  • 說(shuō)說(shuō)Activity、Intent善绎、Service 是什么關(guān)系

  • ApplicationContext和ActivityContext的區(qū)別

  • SP是進(jìn)程同步的嗎?有什么方法做到同步?

  • 談?wù)劧嗑€程在Android中的使用

  • 進(jìn)程和 Application 的生命周期

  • 封裝View的時(shí)候怎么知道view的大小

  • RecycleView原理

  • AndroidManifest的作用與理解

(三)常見(jiàn)的一些原理性問(wèn)題

  • Handler機(jī)制和底層實(shí)現(xiàn)

  • Handler诫尽、Thread和HandlerThread的差別

  • handler發(fā)消息給子線程禀酱,looper怎么啟動(dòng)?

  • 關(guān)于Handler牧嫉,在任何地方new Handler 都是什么線程下?

  • ThreadLocal原理剂跟,實(shí)現(xiàn)及如何保證Local屬性?

  • 請(qǐng)解釋下在單線程模型中Message酣藻、Handler曹洽、Message Queue、Looper之間的關(guān)系

  • 請(qǐng)描述一下View事件傳遞分發(fā)機(jī)制

  • Touch事件傳遞流程

  • 事件分發(fā)中的onTouch 和onTouchEvent 有什么區(qū)別辽剧,又該如何使用送淆?

  • View和ViewGroup分別有哪些事件分發(fā)相關(guān)的回調(diào)方法

  • View刷新機(jī)制

  • View繪制流程

  • 自定義控件原理

  • 自定義View如何提供獲取View屬性的接口?

  • Android代碼中實(shí)現(xiàn)WAP方式聯(lián)網(wǎng)

  • AsyncTask機(jī)制

  • AsyncTask原理及不足

  • 如何取消AsyncTask怕轿?

  • 為什么不能在子線程更新UI偷崩?

  • ANR產(chǎn)生的原因是什么?

  • ANR定位和修正

  • oom是什么撞羽?

  • 什么情況導(dǎo)致oom阐斜?

  • 有什么解決方法可以避免OOM?

  • Oom 是否可以try catch诀紊?為什么谒出?

  • 內(nèi)存泄漏是什么?

  • 什么情況導(dǎo)致內(nèi)存泄漏?

  • 如何防止線程的內(nèi)存泄漏笤喳?

  • 內(nèi)存泄露場(chǎng)的解決方法

  • 內(nèi)存泄漏和內(nèi)存溢出區(qū)別为居?

  • LruCache默認(rèn)緩存大小

  • ContentProvider的權(quán)限管理(解答:讀寫(xiě)分離,權(quán)限控制-精確到表級(jí)莉测,URL控制)

  • 如何通過(guò)廣播攔截和abort一條短信颜骤?

  • 廣播是否可以請(qǐng)求網(wǎng)絡(luò)?

  • 廣播引起anr的時(shí)間限制是多少捣卤?

  • 計(jì)算一個(gè)view的嵌套層級(jí)

  • Activity棧

  • Android線程有沒(méi)有上限忍抽?

  • 線程池有沒(méi)有上限?

  • ListView重用的是什么董朝?

  • Android為什么引入Parcelable鸠项?

  • 有沒(méi)有嘗試簡(jiǎn)化Parcelable的使用?

(四)開(kāi)發(fā)中常見(jiàn)的一些問(wèn)題

  • ListView 中圖片錯(cuò)位的問(wèn)題是如何產(chǎn)生的?

  • 混合開(kāi)發(fā)有了解嗎子姜?

  • 知道哪些混合開(kāi)發(fā)的方式祟绊?說(shuō)出它們的優(yōu)缺點(diǎn)和各自使用場(chǎng)景?(解答:比如:RN哥捕,weex牧抽,H5,小程序遥赚,WPA等扬舒。做Android的了解一些前- 端js等還是很有好處的);

  • 屏幕適配的處理技巧都有哪些?

  • 服務(wù)器只提供數(shù)據(jù)接收接口凫佛,在多線程或多進(jìn)程條件下讲坎,如何保證數(shù)據(jù)的有序到達(dá)?

  • 動(dòng)態(tài)布局的理解

  • 怎么去除重復(fù)代碼愧薛?

  • 畫(huà)出 Android 的大體架構(gòu)圖

  • Recycleview和ListView的區(qū)別

  • ListView圖片加載錯(cuò)亂的原理和解決方案

  • 動(dòng)態(tài)權(quán)限適配方案晨炕,權(quán)限組的概念

  • Android系統(tǒng)為什么會(huì)設(shè)計(jì)ContentProvider?

  • 下拉狀態(tài)欄是不是影響activity的生命周期

  • 如果在onStop的時(shí)候做了網(wǎng)絡(luò)請(qǐng)求毫炉,onResume的時(shí)候怎么恢復(fù)瓮栗?

  • Bitmap 使用時(shí)候注意什么?

  • Bitmap的recycler()

  • Android中開(kāi)啟攝像頭的主要步驟

  • ViewPager使用細(xì)節(jié)瞄勾,如何設(shè)置成每次只初始化當(dāng)前的Fragment遵馆,其他的不初始化?

  • 點(diǎn)擊事件被攔截丰榴,但是想傳到下面的View货邓,如何操作?

  • 微信主頁(yè)面的實(shí)現(xiàn)方式

  • 微信上消息小紅點(diǎn)的原理

  • CAS介紹(這是阿里巴巴的面試題四濒,我不是很了解换况,可以參考博客: CAS簡(jiǎn)介)

三职辨、高級(jí)開(kāi)發(fā)技術(shù)面試題

這里講的是大公司需要用到的一些高端Android技術(shù),這里專(zhuān)門(mén)整理了一個(gè)文檔戈二,希望大家都可以看看舒裤。這些題目有點(diǎn)技術(shù)含量,需要好點(diǎn)時(shí)間去研究一下的觉吭。

(一)圖片

  • 圖片庫(kù)對(duì)比

  • 圖片庫(kù)的源碼分析

  • 圖片框架緩存實(shí)現(xiàn)

  • LRUCache原理

  • 圖片加載原理

  • 自己去實(shí)現(xiàn)圖片庫(kù)腾供,怎么做?

  • Glide源碼解析

  • Glide使用什么緩存鲜滩?

  • Glide內(nèi)存緩存如何控制大邪楸睢?

(二)網(wǎng)絡(luò)和安全機(jī)制

  • 網(wǎng)絡(luò)框架對(duì)比和源碼分析

  • 自己去設(shè)計(jì)網(wǎng)絡(luò)請(qǐng)求框架徙硅,怎么做榜聂?

  • okhttp源碼

  • 網(wǎng)絡(luò)請(qǐng)求緩存處理,okhttp如何處理網(wǎng)絡(luò)緩存的

  • 從網(wǎng)絡(luò)加載一個(gè)10M的圖片嗓蘑,說(shuō)下注意事項(xiàng)

  • TCP的3次握手和四次揮手

  • TCP與UDP的區(qū)別

  • TCP與UDP的應(yīng)用

  • HTTP協(xié)議

  • HTTP1.0與2.0的區(qū)別

  • HTTP報(bào)文結(jié)構(gòu)

  • HTTP與HTTPS的區(qū)別以及如何實(shí)現(xiàn)安全性

  • 如何驗(yàn)證證書(shū)的合法性?

  • https中哪里用了對(duì)稱(chēng)加密须肆,哪里用了非對(duì)稱(chēng)加密,對(duì)加密算法(如RSA)等是否有了解?

  • client如何確定自己發(fā)送的消息被server收到?

  • 談?wù)勀銓?duì)WebSocket的理解

  • WebSocket與socket的區(qū)別

  • 談?wù)勀銓?duì)安卓簽名的理解桩皿。

  • 請(qǐng)解釋安卓為啥要加簽名機(jī)制?

  • 視頻加密傳輸

  • App 是如何沙箱化豌汇,為什么要這么做?

  • 權(quán)限管理系統(tǒng)(底層的權(quán)限是如何進(jìn)行 grant 的)泄隔?

(三)數(shù)據(jù)庫(kù)

  • sqlite升級(jí)瘤礁,增加字段的語(yǔ)句

  • 數(shù)據(jù)庫(kù)框架對(duì)比和源碼分析

  • 數(shù)據(jù)庫(kù)的優(yōu)化

  • 數(shù)據(jù)庫(kù)數(shù)據(jù)遷移問(wèn)題

(四)算法

  • 排序算法有哪些?

  • 最快的排序算法是哪個(gè)梅尤?

  • 手寫(xiě)一個(gè)冒泡排序

  • 手寫(xiě)快速排序代碼

  • 快速排序的過(guò)程、時(shí)間復(fù)雜度岩调、空間復(fù)雜度

  • 手寫(xiě)堆排序

  • 堆排序過(guò)程巷燥、時(shí)間復(fù)雜度及空間復(fù)雜度

  • 寫(xiě)出你所知道的排序算法及時(shí)空復(fù)雜度,穩(wěn)定性

  • 二叉樹(shù)給出根節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)号枕,找出從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑

  • 給阿里2萬(wàn)多名員工按年齡排序應(yīng)該選擇哪個(gè)算法缰揪?

  • GC算法(各種算法的優(yōu)缺點(diǎn)以及應(yīng)用場(chǎng)景)

  • 蟻群算法與蒙特卡洛算法

  • 子串包含問(wèn)題(KMP 算法)寫(xiě)代碼實(shí)現(xiàn)

  • 一個(gè)無(wú)序,不重復(fù)數(shù)組葱淳,輸出N個(gè)元素钝腺,使得N個(gè)元素的和相加為M,給出時(shí)間復(fù)雜度赞厕、空間復(fù)雜度艳狐。手寫(xiě)算法

  • 萬(wàn)億級(jí)別的兩個(gè)URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分組->多文件讀寫(xiě)效率->磁盤(pán)尋址以及應(yīng)用層面對(duì)尋址的優(yōu)化)

  • 百度POI中如何試下查找最近的商家功能(提示:坐標(biāo)鏡像+R樹(shù))皿桑。
    兩個(gè)不重復(fù)的數(shù)組集合中毫目,求共同的元素蔬啡。

  • 兩個(gè)不重復(fù)的數(shù)組集合中,這兩個(gè)集合都是海量數(shù)據(jù)镀虐,內(nèi)存中放不下箱蟆,怎么求共同的元素?

  • 一個(gè)文件中有100萬(wàn)個(gè)整數(shù)刮便,由空格分開(kāi)空猜,在程序中判斷用戶(hù)輸入的整數(shù)是否在此文件中。說(shuō)出最優(yōu)的方法

  • 一張Bitmap所占內(nèi)存以及內(nèi)存占用的計(jì)算

  • 2000萬(wàn)個(gè)整數(shù)恨旱,找出第五十大的數(shù)字辈毯?

  • 燒一根不均勻的繩,從頭燒到尾總共需要1個(gè)小時(shí)〗焉保現(xiàn)在有若干條材質(zhì)相同的繩子漓摩,問(wèn)如何用燒繩的方法來(lái)計(jì)時(shí)一個(gè)小時(shí)十五分鐘呢?

  • 求1000以?xún)?nèi)的水仙花數(shù)以及40億以?xún)?nèi)的水仙花數(shù)

  • 5枚硬幣入客,2正3反如何劃分為兩堆然后通過(guò)翻轉(zhuǎn)讓兩堆中正面向上的硬8幣和反面向上的硬幣個(gè)數(shù)相同

  • 時(shí)針走一圈管毙,時(shí)針?lè)轴樦睾蠋状?/p>

  • N*N的方格紙,里面有多少個(gè)正方形

  • x個(gè)蘋(píng)果,一天只能吃一個(gè)桌硫、兩個(gè)夭咬、或者三個(gè),問(wèn)多少天可以吃完铆隘?

(五)插件化卓舵、模塊化、組件化膀钠、熱修復(fù)掏湾、增量更新、Gradle

  • 對(duì)熱修復(fù)和插件化的理解

  • 插件化原理分析

  • 模塊化實(shí)現(xiàn)(好處肿嘲,原因)

  • 熱修復(fù),插件化

  • 項(xiàng)目組件化的理解

  • 描述清點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么

(六)架構(gòu)設(shè)計(jì)和設(shè)計(jì)模式

  • 談?wù)勀銓?duì)Android設(shè)計(jì)模式的理解

  • MVC MVP MVVM原理和區(qū)別

  • 你所知道的設(shè)計(jì)模式有哪些融击?

  • 項(xiàng)目中常用的設(shè)計(jì)模式

  • 手寫(xiě)生產(chǎn)者/消費(fèi)者模式

  • 寫(xiě)出觀察者模式的代碼

  • 適配器模式,裝飾者模式雳窟,外觀模式的異同尊浪?

  • 用到的一些開(kāi)源框架,介紹一個(gè)看過(guò)源碼的封救,內(nèi)部實(shí)現(xiàn)過(guò)程拇涤。

  • 談?wù)剬?duì)RxJava的理解

  • RxJava的功能與原理實(shí)現(xiàn)

  • RxJava的作用,與平時(shí)使用的異步操作來(lái)比的優(yōu)缺點(diǎn)

  • 說(shuō)說(shuō)EventBus作用誉结,實(shí)現(xiàn)方式鹅士,代替EventBus的方式

  • 從0設(shè)計(jì)一款A(yù)pp整體架構(gòu),如何去做惩坑?

  • 說(shuō)一款你認(rèn)為當(dāng)前比較火的應(yīng)用并設(shè)計(jì)(比如:直播APP如绸,P2P金融嘱朽,小視頻等)

  • 談?wù)剬?duì)java狀態(tài)機(jī)理解

  • Fragment如果在Adapter中使用應(yīng)該如何解耦?

  • Binder機(jī)制及底層實(shí)現(xiàn)

  • 對(duì)于應(yīng)用更新這塊是如何做的怔接?(解答:灰度搪泳,強(qiáng)制更新,分區(qū)域更新)扼脐?

  • 實(shí)現(xiàn)一個(gè)Json解析器(可以通過(guò)正則提高速度)
    統(tǒng)計(jì)啟動(dòng)時(shí)長(zhǎng),標(biāo)準(zhǔn)

(七)性能優(yōu)化

  • 如何對(duì)Android 應(yīng)用進(jìn)行性能分析以及優(yōu)化?

  • ddms 和 traceView

  • 性能優(yōu)化如何分析systrace岸军?

  • 用IDE如何分析內(nèi)存泄漏?

  • Java多線程引發(fā)的性能問(wèn)題瓦侮,怎么解決艰赞?

  • 啟動(dòng)頁(yè)白屏及黑屏解決?

  • 啟動(dòng)太慢怎么解決肚吏?

  • 怎么保證應(yīng)用啟動(dòng)不卡頓方妖?

  • App啟動(dòng)崩潰異常捕捉

  • 自定義View注意事項(xiàng)

  • 現(xiàn)在下載速度很慢,試從網(wǎng)絡(luò)協(xié)議的角度分析原因,并優(yōu)化(提示:網(wǎng)絡(luò)的5層都可以涉及)。

  • Https請(qǐng)求慢的解決辦法(提示:DNS罚攀,攜帶數(shù)據(jù)党觅,直接訪問(wèn)IP)

  • 如何保持應(yīng)用的穩(wěn)定性

  • RecyclerView和ListView的性能對(duì)比

  • ListView的優(yōu)化

  • RecycleView優(yōu)化

  • View渲染

  • Bitmap如何處理大圖,如一張30M的大圖斋泄,如何預(yù)防OOM

  • java中的四種引用的區(qū)別以及使用場(chǎng)景

  • 強(qiáng)引用置為null杯瞻,會(huì)不會(huì)被回收?

(八)NDK炫掐、jni魁莉、Binder、AIDL募胃、進(jìn)程通信有關(guān)

  • 請(qǐng)介紹一下NDK

  • 什么是NDK庫(kù)?

  • jni用過(guò)嗎旗唁?

  • 如何在jni中注冊(cè)native函數(shù),有幾種注冊(cè)方式?

  • Java如何調(diào)用c痹束、c++語(yǔ)言检疫?

  • jni如何調(diào)用java層代碼?

  • 進(jìn)程間通信的方式参袱?

  • Binder機(jī)制

  • 簡(jiǎn)述IPC?

  • 什么是AIDL秽梅?

  • AIDL解決了什么問(wèn)題抹蚀?

  • AIDL如何使用?

  • Android 上的 Inter-Process-Communication 跨進(jìn)程通信時(shí)如何工作的企垦?

  • 多進(jìn)程場(chǎng)景遇見(jiàn)過(guò)么环壤?

  • Android進(jìn)程分類(lèi)?

  • 進(jìn)程和 Application 的生命周期钞诡?

  • 進(jìn)程調(diào)度

  • 談?wù)剬?duì)進(jìn)程共享和線程安全的認(rèn)識(shí)

  • 談?wù)剬?duì)多進(jìn)程開(kāi)發(fā)的理解以及多進(jìn)程應(yīng)用場(chǎng)景

  • 什么是協(xié)程郑现?

(九)framework層湃崩、ROM定制、Ubuntu接箫、Linux之類(lèi)的問(wèn)題

  • java虛擬機(jī)的特性

  • 談?wù)剬?duì)jvm的理解

  • JVM內(nèi)存區(qū)域攒读,開(kāi)線程影響哪塊內(nèi)存

  • 對(duì)Dalvik、ART虛擬機(jī)有什么了解辛友?

  • Art和Dalvik對(duì)比

  • 虛擬機(jī)原理薄扁,如何自己設(shè)計(jì)一個(gè)虛擬機(jī)(內(nèi)存管理,類(lèi)加載废累,雙親委派)

  • 談?wù)勀銓?duì)雙親委派模型理解

  • JVM內(nèi)存模型邓梅,內(nèi)存區(qū)域

  • 類(lèi)加載機(jī)制

  • 談?wù)剬?duì)ClassLoader(類(lèi)加載器)的理解

  • 談?wù)剬?duì)動(dòng)態(tài)加載(OSGI)的理解

  • 內(nèi)存對(duì)象的循環(huán)引用及避免

  • 內(nèi)存回收機(jī)制、GC回收策略邑滨、GC原理時(shí)機(jī)以及GC對(duì)象

  • 垃圾回收機(jī)制與調(diào)用System.gc()區(qū)別

  • Ubuntu編譯安卓系統(tǒng)

  • 系統(tǒng)啟動(dòng)流程是什么日缨?(提示:Zygote進(jìn)程 –> SystemServer進(jìn)程 –> 各種系統(tǒng)服務(wù) –> 應(yīng)用進(jìn)程)

  • 大體說(shuō)清一個(gè)應(yīng)用程序安裝到手機(jī)上時(shí)發(fā)生了什么

  • 簡(jiǎn)述Activity啟動(dòng)全部過(guò)程

  • App啟動(dòng)流程,從點(diǎn)擊桌面開(kāi)始

  • 邏輯地址與物理地址掖看,為什么使用邏輯地址匣距?

  • Android為每個(gè)應(yīng)用程序分配的內(nèi)存大小是多少?

  • Android中進(jìn)程內(nèi)存的分配乙各,能不能自己分配定額內(nèi)存墨礁?

  • 進(jìn)程保活的方式

  • 如何保證一個(gè)后臺(tái)服務(wù)不被殺死耳峦?(相同問(wèn)題:如何保證service在后臺(tái)不被kill恩静?)比較省電的方式是什么?

  • App中喚醒其他進(jìn)程的實(shí)現(xiàn)方式

四蹲坷、跨平臺(tái)Hybrid 開(kāi)發(fā)

  • flutter

  • Html5項(xiàng)目實(shí)戰(zhàn)

  • HTML&CSS&JavaScript 實(shí)戰(zhàn)

  • WordPress搭建網(wǎng)站項(xiàng)目實(shí)戰(zhàn)

  • 前端Vue架構(gòu)

  • 前端樣式開(kāi)發(fā)

  • Weex內(nèi)置能力

  • Weex原生應(yīng)用

  • Weex擴(kuò)展框架

  • WeexUI架構(gòu)

  • 介紹你做過(guò)的哪些項(xiàng)目

  • 都使用過(guò)哪些框架驶乾、平臺(tái)?

  • 都使用過(guò)哪些自定義控件循签?

  • 研究比較深入的領(lǐng)域有哪些级乐?

  • 對(duì)業(yè)內(nèi)信息的關(guān)注渠道有哪些?

  • 最近都讀哪些書(shū)县匠?

  • 有沒(méi)有什么開(kāi)源項(xiàng)目风科?

  • 自己最擅長(zhǎng)的技術(shù)點(diǎn),最感興趣的技術(shù)領(lǐng)域和技術(shù)點(diǎn)

  • 項(xiàng)目中用了哪些開(kāi)源庫(kù)乞旦,如何避免因?yàn)橐腴_(kāi)源庫(kù)而導(dǎo)致的安全性和穩(wěn)定性問(wèn)題

  • 實(shí)習(xí)過(guò)程中做了什么贼穆,有什么產(chǎn)出?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兰粉,一起剝皮案震驚了整個(gè)濱河市故痊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玖姑,老刑警劉巖愕秫,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慨菱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡戴甩,警方通過(guò)查閱死者的電腦和手機(jī)符喝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)等恐,“玉大人洲劣,你說(shuō)我怎么就攤上這事】问撸” “怎么了囱稽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)二跋。 經(jīng)常有香客問(wèn)我战惊,道長(zhǎng),這世上最難降的妖魔是什么扎即? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任吞获,我火速辦了婚禮,結(jié)果婚禮上谚鄙,老公的妹妹穿的比我還像新娘各拷。我一直安慰自己,他們只是感情好闷营,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布烤黍。 她就那樣靜靜地躺著,像睡著了一般傻盟。 火紅的嫁衣襯著肌膚如雪速蕊。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天娘赴,我揣著相機(jī)與錄音规哲,去河邊找鬼。 笑死诽表,一個(gè)胖子當(dāng)著我的面吹牛唉锌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竿奏,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袄简,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了议双?” 一聲冷哼從身側(cè)響起痘番,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捉片,失蹤者是張志新(化名)和其女友劉穎平痰,沒(méi)想到半個(gè)月后汞舱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宗雇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年昂芜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赔蒲。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泌神,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舞虱,到底是詐尸還是另有隱情欢际,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布矾兜,位于F島的核電站损趋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏椅寺。R本人自食惡果不足惜浑槽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望返帕。 院中可真熱鬧桐玻,春花似錦、人聲如沸荆萤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)观腊。三九已至邑闲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梧油,已是汗流浹背苫耸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儡陨,地道東北人褪子。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像骗村,于是被迫代替她去往敵國(guó)和親嫌褪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 金三銀四胚股,很多同學(xué)心里大概都準(zhǔn)備著年后找工作或者跳槽笼痛。最近有很多同學(xué)都在交流群里求大廠面試題贺嫂。正好我電腦里面...
    迷途小碼農(nóng)h閱讀 1,333評(píng)論 1 28
  • 彩排完,天已黑
    劉凱書(shū)法閱讀 4,218評(píng)論 1 3
  • 表情是什么搅裙,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒蘸秘。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了刻坊,難過(guò)就哭了枷恕。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,086評(píng)論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn)谭胚,但是人生放棄了冒險(xiǎn)徐块,也就放棄了無(wú)數(shù)的可能。 ...
    yichen大刀閱讀 6,052評(píng)論 0 4