溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter

發(fā)布時間:2020-07-29 02:45:32 來源:網(wǎng)絡(luò) 閱讀:729 作者:Android飛魚 欄目:移動開發(fā)

前言

本文是群里的一位資深架構(gòu)師整理出來的,這些題目是網(wǎng)友去百度、小米、樂視、美團(tuán)、58、獵豹、360、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術(shù)面試的幾率。之前網(wǎng)上也分享過這還沒來得及整理答案的面試題,需要答案可以關(guān)注更新文章


溫馨提示;本文偏長,建議勿在上班時間觀看

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter

面試題

一.java面試題

二.Android面試題

三.高級開發(fā)技術(shù)面試題

四.跨平臺Hybrid 開發(fā)

一、java面試題

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

(一) java基礎(chǔ)面試知識點

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

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

  • int與integer的區(qū)別

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

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

  • 什么是內(nèi)部類?內(nèi)部類的作用

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

  • 抽象類的意義

  • 抽象類與接口的應(yīng)用場景

  • 抽象類是否可以沒有方法和屬性?

  • 接口的意義

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

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

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

  • final,finally,finalize的區(qū)別

  • 序列化的方式

  • Serializable 和Parcelable 的區(qū)別

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

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

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

  • 談?wù)剬otlin的理解

  • 閉包和局部內(nèi)部類的區(qū)別

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

(二) java深入源碼級的面試題(有難度)

  • 哪些情況下的對象會被垃圾回收機(jī)制處理掉?

  • 講一下常見編碼方式?

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

  • 靜態(tài)代理和動態(tài)代理的區(qū)別,什么場景使用?

  • Java的異常體系

  • 談?wù)勀銓馕雠c分派的認(rèn)識。

  • 修改對象A的equals方法的簽名,那么使用HashMap存放這個對象實例的時候,會調(diào)用哪個equals方法?

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

  • 如何將一個Java對象序列化到文件里?

  • 說說你對Java反射的理解

  • 說說你對Java注解的理解

  • 說說你對依賴注入的理解

  • 說一下泛型原理,并舉例說明

  • Java中String的了解

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

  • Object類的equal和hashCode方法重寫,為什么?

(三) 數(shù)據(jù)結(jié)構(gòu)

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

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

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

  • 集合類以及集合框架

  • 容器類介紹以及之間的區(qū)別(容器類估計很多人沒聽這個詞,Java容器主要可以劃分為4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections),具體的可以看看這篇博文 Java容器類)

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

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

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

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

  • HashMap源碼理解

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

  • HashMap怎么手寫實現(xiàn)?

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

  • ArrayMap和HashMap的對比

  • HashTable實現(xiàn)原理

  • TreeMap具體實現(xiàn)

  • HashMap和HashTable的區(qū)別

  • HashMap與HashSet的區(qū)別

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

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

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

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

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

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

  • 堆和樹的區(qū)別

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

  • 什么是深拷貝和淺拷貝

  • 手寫鏈表逆序代碼

  • 講一下對樹,B+樹的理解

  • 講一下對圖的理解

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

  • 鏈表翻轉(zhuǎn)(即:翻轉(zhuǎn)一個單項鏈表)

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

附;數(shù)據(jù)結(jié)構(gòu)算法視頻和源碼包;

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter

數(shù)據(jù)結(jié)構(gòu)算法專題.png


(四) 線程、多線程和線程池


  • 開啟線程的三種方式?

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

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

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

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

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

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

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

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

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

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

  • 如何保證線程安全?

  • 如何實現(xiàn)線程同步?

  • 兩個進(jìn)程同時要求寫或者讀,能不能實現(xiàn)?如何防止進(jìn)程的同步?

  • 線程間操作List

  • Java中對象的生命周期

  • Synchronized用法

  • synchronize的原理

  • 談?wù)剬ynchronized關(guān)鍵字,類鎖,方法鎖,重入鎖的理解

  • static synchronized 方法的多線程訪問和作用

  • 同一個類里面兩個synchronized方法,兩個線程同時訪問的問題

  • 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)部實現(xiàn)

  • lock原理

  • 死鎖的四個必要條件?

  • 怎么避免死鎖?

  • 對象鎖和類鎖是否會互相影響?

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

  • Java的并發(fā)、多線程、線程模型

  • 談?wù)剬Χ嗑€程的理解

  • 多線程有什么要注意的問題?

  • 談?wù)勀銓Σl(fā)編程的理解并舉例說明

  • 談?wù)勀銓Χ嗑€程同步機(jī)制的理解?

  • 如何保證多線程讀寫文件的安全?

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

  • 斷點續(xù)傳的實現(xiàn)

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

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

附;java進(jìn)階與Android內(nèi)核專題

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter


二、Android面試題

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

(一)Android基礎(chǔ)知識點

  • 四大組件是什么

  • 四大組件的生命周期和簡單用法

  • Activity之間的通信方式

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

  • 橫豎屏切換的時候,Activity 各種情況下的生命周期

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

  • Activity上有Dialog的時候按Home鍵時的生命周期

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

  • 前臺切換到后臺,然后再回到前臺,Activity生命周期回調(diào)方法。彈出Dialog,生命值周期回調(diào)方法。

  • Activity的四種啟動模式對比

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

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

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

  • 如何實現(xiàn)Fragment的滑動?

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

  • Activity 怎么和Service 綁定?

  • 怎么在Activity 中啟動自己對應(yīng)的Service?

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

  • Service的開啟方式

  • 請描述一下Service 的生命周期

  • 談?wù)勀銓ontentProvider的理解

  • 說說ContentProvider、ContentResolver、ContentObserver 之間的關(guān)系

  • 請描述一下廣播BroadcastReceiver的理解

  • 廣播的分類

  • 廣播使用的方式和場景

  • 在manifest 和代碼中如何注冊和使用BroadcastReceiver?

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

  • BroadcastReceiver,LocalBroadcastReceiver 區(qū)別

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

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

  • Android屬性動畫特性

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

  • LinearLayout、RelativeLayout、FrameLayout的特性及對比,并介紹使用場景。

  • 談?wù)剬涌谂c回調(diào)的理解

  • 回調(diào)的原理

  • 寫一個回調(diào)demo

  • 介紹下SurfView

  • RecycleView的使用

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

  • 差值器

  • 估值器

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

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

  • Android動畫框架實現(xiàn)原理

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

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

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

  • Activity-Window-View三者的差別

  • 談?wù)剬olley的理解

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

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

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

  • HttpUrlConnection 和 okhttp關(guān)系

  • Bitmap對象的理解

  • looper架構(gòu)

  • ActivityThread,AMS,WMS的工作原理

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

  • 自定義View的事件

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

  • LaunchMode應(yīng)用場景

  • AsyncTask 如何使用?

  • SpareArray原理

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

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

  • IntentService原理及作用是什么?

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

  • ApplicationContext和ActivityContext的區(qū)別

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

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

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

  • 封裝View的時候怎么知道view的大小

  • RecycleView原理

  • AndroidManifest的作用與理解

(三)常見的一些原理性問題

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

  • Handler、Thread和HandlerThread的差別

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

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

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

  • 請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關(guān)系

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

  • Touch事件傳遞流程

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

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

  • View刷新機(jī)制

  • View繪制流程

  • 自定義控件原理

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

  • Android代碼中實現(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)存泄露場的解決方法

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

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

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

  • 如何通過廣播攔截和abort一條短信?

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

  • 廣播引起anr的時間限制是多少?

  • 計算一個view的嵌套層級

  • Activity棧

  • Android線程有沒有上限?

  • 線程池有沒有上限?

  • ListView重用的是什么?

  • Android為什么引入Parcelable?

  • 有沒有嘗試簡化Parcelable的使用?

(四)開發(fā)中常見的一些問題

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

  • 混合開發(fā)有了解嗎?

  • 知道哪些混合開發(fā)的方式?說出它們的優(yōu)缺點和各自使用場景?(解答:比如:RN,weex,H5,小程序,WPA等。做Android的了解一些前端js等還是很有好處的);

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

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

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

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

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

  • Recycleview和ListView的區(qū)別

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

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

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

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

  • 如果在onStop的時候做了網(wǎng)絡(luò)請求,onResume的時候怎么恢復(fù)?

  • Bitmap 使用時候注意什么?

  • Bitmap的recycler()

  • Android中開啟攝像頭的主要步驟

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

  • 點擊事件被攔截,但是想傳到下面的View,如何操作?

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

  • 微信上消息小紅點的原理

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

附;App開發(fā)框架知識專題.png

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter


三、高級開發(fā)技術(shù)面試題

這里講的是大公司需要用到的一些高端Android技術(shù),這里專門整理了一個文檔,希望大家都可以看看。這些題目有點技術(shù)含量,需要好點時間去研究一下的。

(一)圖片

  • 圖片庫對比

  • 圖片庫的源碼分析

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

  • LRUCache原理

  • 圖片加載原理

  • 自己去實現(xiàn)圖片庫,怎么做?

  • Glide源碼解析

  • Glide使用什么緩存?

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

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

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

  • 自己去設(shè)計網(wǎng)絡(luò)請求框架,怎么做?

  • okhttp源碼

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

  • 從網(wǎng)絡(luò)加載一個10M的圖片,說下注意事項

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

  • TCP與UDP的區(qū)別

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

  • HTTP協(xié)議

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

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

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

  • 如何驗證證書的合法性?

  • https中哪里用了對稱加密,哪里用了非對稱加密,對加密算法(如RSA)等是否有了解?

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

  • 談?wù)勀銓ebSocket的理解

  • WebSocket與socket的區(qū)別

  • 談?wù)勀銓Π沧亢灻睦斫狻?/p>

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

  • 視頻加密傳輸

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

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

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

  • sqlite升級,增加字段的語句

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

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

  • 數(shù)據(jù)庫數(shù)據(jù)遷移問題

(四)算法

  • 排序算法有哪些?

  • 最快的排序算法是哪個?

  • 手寫一個冒泡排序

  • 手寫快速排序代碼

  • 快速排序的過程、時間復(fù)雜度、空間復(fù)雜度

  • 手寫堆排序

  • 堆排序過程、時間復(fù)雜度及空間復(fù)雜度

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

  • 二叉樹給出根節(jié)點和目標(biāo)節(jié)點,找出從根節(jié)點到目標(biāo)節(jié)點的路徑

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

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

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

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

  • 一個無序,不重復(fù)數(shù)組,輸出N個元素,使得N個元素的和相加為M,給出時間復(fù)雜度、空間復(fù)雜度。手寫算法

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

  • 百度POI中如何試下查找最近的商家功能(提示:坐標(biāo)鏡像+R樹)。

  • 兩個不重復(fù)的數(shù)組集合中,求共同的元素。

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

  • 一個文件中有100萬個整數(shù),由空格分開,在程序中判斷用戶輸入的整數(shù)是否在此文件中。說出最優(yōu)的方法

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

  • 2000萬個整數(shù),找出第五十大的數(shù)字?

  • 燒一根不均勻的繩,從頭燒到尾總共需要1個小時?,F(xiàn)在有若干條材質(zhì)相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?

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

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

  • 時針走一圈,時針分針重合幾次

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

  • x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完?

(五)插件化、模塊化、組件化、熱修復(fù)、增量更新、Gradle

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

  • 插件化原理分析

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

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

  • 項目組件化的理解

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

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

  • 談?wù)勀銓ndroid設(shè)計模式的理解

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

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

  • 項目中常用的設(shè)計模式

  • 手寫生產(chǎn)者/消費者模式

  • 寫出觀察者模式的代碼

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

  • 用到的一些開源框架,介紹一個看過源碼的,內(nèi)部實現(xiàn)過程。

  • 談?wù)剬xJava的理解

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

  • RxJava的作用,與平時使用的異步操作來比的優(yōu)缺點

  • 說說EventBus作用,實現(xiàn)方式,代替EventBus的方式

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

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

  • 談?wù)剬ava狀態(tài)機(jī)理解

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

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

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

  • 實現(xiàn)一個Json解析器(可以通過正則提高速度)

  • 統(tǒng)計啟動時長,標(biāo)準(zhǔn)

附;移動架構(gòu)項目實戰(zhàn)專題;

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter


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

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

  • ddms 和 traceView

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

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

  • Java多線程引發(fā)的性能問題,怎么解決?

  • 啟動頁白屏及黑屏解決?

  • 啟動太慢怎么解決?

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

  • App啟動崩潰異常捕捉

  • 自定義View注意事項

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

  • Https請求慢的解決辦法(提示:DNS,攜帶數(shù)據(jù),直接訪問IP)

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

  • RecyclerView和ListView的性能對比

  • ListView的優(yōu)化

  • RecycleView優(yōu)化

  • View渲染

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

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

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

附;性能調(diào)優(yōu)專題

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter

(八)NDK、jni、Binder、AIDL、進(jìn)程通信有關(guān)

  • 請介紹一下NDK

  • 什么是NDK庫?

  • jni用過嗎?

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

  • Java如何調(diào)用c、c++語言?

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

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

  • Binder機(jī)制

  • 簡述IPC?

  • 什么是AIDL?

  • AIDL解決了什么問題?

  • AIDL如何使用?

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

  • 多進(jìn)程場景遇見過么?

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

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

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

  • 談?wù)剬M(jìn)程共享和線程安全的認(rèn)識

  • 談?wù)剬Χ噙M(jìn)程開發(fā)的理解以及多進(jìn)程應(yīng)用場景

  • 什么是協(xié)程?

附;NDK模塊專題;

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter

(九)framework層、ROM定制、Ubuntu、Linux之類的問題

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

  • 談?wù)剬vm的理解

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

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

  • Art和Dalvik對比

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

  • 談?wù)勀銓﹄p親委派模型理解

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

  • 類加載機(jī)制

  • 談?wù)剬lassLoader(類加載器)的理解

  • 談?wù)剬討B(tài)加載(OSGI)的理解

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

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

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

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

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

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

  • 簡述Activity啟動全部過程

  • App啟動流程,從點擊桌面開始

  • 邏輯地址與物理地址,為什么使用邏輯地址?

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

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

  • 進(jìn)程?;畹姆绞?/p>

  • 如何保證一個后臺服務(wù)不被殺死?(相同問題:如何保證service在后臺不被kill?)比較省電的方式是什么?

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

四、跨平臺Hybrid 開發(fā)
  • Flutter

  • Html5項目實戰(zhàn)

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

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

  • 前端Vue架構(gòu)

  • 前端樣式開發(fā)

  • Weex內(nèi)置能力

  • Weex原生應(yīng)用

  • Weex擴(kuò)展框架

  • WeexUI架構(gòu)

  • 介紹你做過的哪些項目

  • 都使用過哪些框架、平臺?

  • 都使用過哪些自定義控件?

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

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

  • 最近都讀哪些書?

  • 有沒有什么開源項目?

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

  • 項目中用了哪些開源庫,如何避免因為引入開源庫而導(dǎo)致的安全性和穩(wěn)定性問題

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

附;跨平臺開發(fā)專題;

2019百度,阿里面試題:Java語言+APP開發(fā)+性能優(yōu)化+NDK+Flutter


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI