主頁 > 移動端開發 > Android 超全面試總結(面向P7)

Android 超全面試總結(面向P7)

2021-03-04 11:13:01 移動端開發

目錄

      • Java相關
        • 集合
        • 多執行緒
        • JVM
        • 例外相關
        • 注解
        • 反射
        • 資料
        • 其他
          • java中==和equals和hashCode的區別
      • 設計模式
      • Android相關
        • Activity
        • View
        • Handler機制
        • 跨行程通信
        • Gradle
        • Android APK打包流程
        • JetPack
        • JNI
      • 網路
        • TCP和UDP
        • HTTPS
      • 架構
      • 性能優化
      • 演算法
      • 適配
        • Android各個版本API的區別
        • UI適配
      • 其他
        • js相關
      • 別人的整理

Java相關

集合

在這里插入圖片描述
Java集合簡介

Android中的集合資料結構

最通俗易懂搞定HashMap的底層原理

HashMap實作原理

LinkedHashMap就是HashMap+雙向鏈表:圖解LinkedHashMap原理

ConcurrentHashMap就是HashMap+分段鎖:ConcurrentHashMap詳解

多執行緒

執行緒池執行流程:
在這里插入圖片描述
在這里插入圖片描述

執行緒池7大引數:
在這里插入圖片描述
執行緒池分類:
FixedThreadPool:只有核心執行緒并且梳理是固定的,沒有非核心執行緒;
CachedThreadPool:沒有核心執行緒、非核心執行緒是無界的;
SingleThreadExecutor:只有一個核心執行緒;
ScheduledThreadPool:一個能實作定時和周期性任務的執行緒池;

深入理解synchronized底層原理,一篇文章就夠了!

Java并發——Synchronized關鍵字和鎖升級,詳細分析偏向鎖和輕量級鎖的升級

volatile、記憶體屏障、指令重排序、記憶體一致性決議

比較synchronized和volatile,它們倆特性上最大的區別就在于原子性,volatile不具備原子性,

Java中如何優雅正確的終止執行緒

鎖的分類:
在這里插入圖片描述

JVM

深入淺出Java虛擬機課程

Java虛擬機(一)結構原理與運行時資料區域

Java虛擬機(二)物件的創建與OOP-Klass模型

Java虛擬機(三)垃圾標記演算法與Java物件的生命周期

Java虛擬機(四)垃圾收集演算法

Java四種參考決議以及在Android的應用

參考計數 根搜索法
在這里插入圖片描述

在Java中,可以作為GC Roots的物件主要有以下幾種:
①Java堆疊中的參考的物件,
②本地方法堆疊中JNI參考的物件,
③方法區中運行時常量池參考的物件,
④方法區中靜態屬性參考的物件,
⑤運行中的執行緒
⑥由引導類加載器加載的物件
⑦GC控制的物件

雙親委托模式
Android決議ClassLoader(一)Java中的ClassLoader
類加載器查找Class所采用的是雙親委托模式,所謂雙親委托模式就是首先判斷該Class是否已經加載,如果沒有則不是自身去查找而是委托給父加載器進行查找,這樣依次的進行遞回,直到委托到最頂層的Bootstrap ClassLoader,如果Bootstrap ClassLoader找到了該Class,就會直接回傳,如果沒找到,則繼續依次向下查找,如果還沒找到則最后會交由自身去查找,

例外相關

StackOverFlowError 常見原因及解決方法

Java語言按照錯誤嚴重性,從throwale根類衍生出Error和Exception兩大派系

Error(錯誤)
程式在執行程序中所遇到的硬體或作業系統的錯誤,錯誤對程式而言是致命的,將導致程式無法運行,常見的錯誤有記憶體溢位,jvm虛擬機自身的非正常運行,calss檔案沒有主方法,程式本生是不能處理錯誤的,只能依靠外界干預,Error是系統內部的錯誤,由jvm拋出,交給系統來處理,

Exception(例外)
是程式正常運行中,可以預料的意外情況,比如資料庫連接中斷,空指標,陣列下標越界,例外出現可以導致程式非正常終止,也可以預先檢測,被捕獲處理掉,使程式繼續運行,

在這里插入圖片描述

注解

Java注解總結(史上最全,有這一篇就夠了)

反射

Java反射總結(史上最全,有這一篇就夠了)

資料

Java資料總結(最值、存盤、轉換、大數處理)

其他

java中==和equals和hashCode的區別

基本資料型別的 == 比較的值相等;

類的 == 比較的記憶體的地址,即是否是同一個物件,在不覆寫equals的情況下,同比較記憶體地址,原實作也為 == ,如String等重寫了equals方法;

hashCode也是Object類的一個方法,回傳一個離散的int型整數,在集合類操作中使用,為了提高查詢速度,(HashMap,HashSet等比較是否為同一個)

如果兩個物件equals,Java運行時環境會認為他們的hashcode一定相等;
如果兩個物件不equals,他們的hashcode有可能相等;
如果兩個物件hashcode相等,他們不一定equals;
如果兩個物件hashcode不相等,他們一定不equals;

設計模式

設計模式(一)設計六大原則

GoF提出的設計模式總共有23種,根據目的準則分類分為三大類:

創建型模式,共五種:單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式,
結構型模式,共七種:配接器模式、裝飾模式、代理模式、外觀模式、橋接模式、組合模式、享元模式,
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式,
另外隨著設計模式的發展也涌現出很多新的設計模式:它們分別是規格模式、物件池模式、雇工模式、黑板模式和空物件模式等,

創建型設計模式:

設計模式(二)單例模式的七種寫法

設計模式(三)建造者模式

設計模式(四)簡單工廠模式

設計模式(十)工廠方法模式

設計模式(十三)抽象工廠模式

設計模式(十六)原型模式

結構型模式:

設計模式(六)代理模式

設計模式(七)裝飾模式

設計模式(八)外觀模式

設計模式(十二)享元模式

行為型模式:

設計模式(五)觀察者模式

設計模式(九)模版方法模式

設計模式(十一)策略模式

設計模式(十四)中介者模式

設計模式(十五)狀態模式

Android相關

Activity

深入理解Activity的生命周期

Activity的4種啟動模式

《Android中高級工程師面試指南 — 基礎知識 — Activity》

Activity 啟動流程分析(Android10)

startActivity啟動程序分析

注:Android啟動流程

 1、bootloader啟動內核和init行程;
 2、init行程產生守護行程— daemons;
 3、init行程啟動Zygote行程;
 4、Zygote行程初始化第一個VM, 預加載framework和通用資源;
 5、init行程啟動runtime行程;
 6、Zygote行程范訓出System Server;

startService與bindService 的區別

View

Android View體系(一)視圖坐標系

Android View體系(二)實作View滑動的六種方法

Android View體系(三)屬性影片

Android View體系(四)從原始碼決議Scroller

Android View體系(五)從原始碼決議View的事件分發機制

Android View體系(六)從原始碼決議Activity的構成

Android View體系(七)從原始碼決議View的measure流程

Android View體系(八)從原始碼決議View的layout和draw流程

Android View體系(九)自定義View

Android View體系(十)自定義組合控制元件

Android View體系(十一)自定義ViewGroup

Android View的繪制流程

android事件攔截處理機制詳解

Android事件分發之ACTION_CANCEL機制及作用

如果一個組件沒有接收到DOWN事件,那么一定接收不到MOVE,UP事件;
即時是MOVE和UP事件,在傳遞給子View之前也是可以通過ViewGroup的onInterceptTouchEvent方法攔截的,如果攔截了,那么該事件就會變成Cancel事件傳遞給子view;

Android影片總結

Android中Drawable整體介紹

Android VSYNC (Choreographer)與UI重繪原理分析

requestLayout、invalidate與postInvalidate區別

如果View確定自身不再適合當前區域,比如說它的LayoutParams發生了改變,需要父布局對其進行重新測量、布局、繪制這三個流程,往往使用requestLayout,而invalidate則是重繪當前View,使當前View進行重繪,不會進行測量、布局流程,因此如果View只需要重繪而不需要測量,布局的時候,使用invalidate方法往往比requestLayout方法更高效

Handler機制

Android Handler總結1-定義與用法

Android Handler總結2-子執行緒中的Handler和HandlerThread的使用

Android Handler總結3-原始碼分析

在這里插入圖片描述
在訊息佇列獲取下一個訊息的時候,可能會發生阻塞,主要由兩種情況導致:a、訊息佇列已經沒有訊息了,這個時候nextPollTimeoutMillis置為-1,當前執行緒進入無限睡眠等待,直到其他執行緒有訊息放入,并把它喚醒, b、訊息佇列頭的訊息執行時間大于當前時間,那么該執行緒需要睡眠等待后再執行該訊息,進入阻塞前,就會把mBlocked標志位置為true,
而在MessageQueue入隊的時候,當發現佇列是空的,或者發現入隊的訊息的執行時間比當前處理的訊息執行時間小的時候,就會去判斷是否是阻塞的標志位mBlocked是否為true,如果是true表示當前執行緒處于阻塞狀態,就會去把當前執行緒喚醒,

并發編程 | ThreadLocal 原始碼深入分析

從Handler.postDelayed來看看Android怎么實作處理延時訊息

handler同步屏障

跨行程通信

Android IPC機制(一)開啟多行程

Android IPC機制(二)用Messenger進行行程間通信

Android IPC機制(三)在Android Studio中使用AIDL實作跨行程方法呼叫

Android IPC機制(四)用ContentProvider進行行程間通信

Android IPC機制(五)用Socket實作跨行程聊天程式

Binder原理

Gradle

Android Gradle

Gradle核心思想

Android APK打包流程

Android APK打包流程

JetPack

JNI

Android JNI(一)——NDK與JNI基礎

網路

android網路編程-劉望舒

TCP和UDP

TCP協議是一種面向連接的、可靠的、基于位元組流的傳輸層通信協議,它使用三次握手協議建立連接,并且提供了超時重傳機制,具有很高的穩定性,UDP協議則是是一種無連接的協議,且不對傳送資料包進行可靠性保證,適合于一次傳輸少量資料,UDP傳輸的可靠性由應用層負責,在網路質量令人十分不滿意的環境下,UDP協議資料包丟失會比較嚴重,但是由于UDP的特性:它不屬于連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通資料在傳送時使用UDP較多,

HTTPS

HTTPS加密機制決議與總結

Android中的HTTPS問題

HTTP2.0和HTTP1.0的區別:HTTP1.0、HTTP1.1 和 HTTP2.0 的區別
①降低延遲,針對HTTP高延遲的問題,SPDY優雅的采取了多路復用(multiplexing),多路復用通過多個請求stream共享一個tcp連接的方式,解決了HOL blocking的問題,降低了延遲同時提高了帶寬的利用率,

②請求優先級(request prioritization),多路復用帶來一個新的問題是,在連接共享的基礎之上有可能會導致關鍵請求被阻塞,SPDY允許給每個request設定優先級,這樣重要的請求就會優先得到回應,比如瀏覽器加載首頁,首頁的html內容應該優先展示,之后才是各種靜態資源檔案,腳本檔案等加載,這樣可以保證用戶能第一時間看到網頁內容,

③header壓縮,前面提到HTTP1.x的header很多時候都是重復多余的,選擇合適的壓縮演算法可以減小包的大小和數量,

④基于HTTPS的加密協議傳輸,大大提高了傳輸資料的可靠性,

⑤服務端推送(server push),采用了SPDY的網頁,例如我的網頁有一個sytle.css的請求,在客戶端收到sytle.css資料的同時,服務端會將sytle.js的檔案推送給客戶端,當客戶端再次嘗試獲取sytle.js時就可以直接從快取中獲取到,不用再發請求了,

架構

美團:如何構建Android MVVM 應用框架

性能優化

在這里插入圖片描述
Android-記憶體泄露的場景

演算法

使用Master公式求解遞回演算法的時間復雜度

適配

Android各個版本API的區別

主要記住一些大版本變化:

android3.0 代號Honeycomb, 引入Fragments, ActionBar,屬性影片,硬體加速

android4.0 代號Ice Cream,API14:截圖功能,人臉識別,虛擬按鍵,3D優化驅動

android5.0 代號Lollipop API21:調整桌面圖示及部件透明度等

android6.0 代號M Marshmallow API23,軟體權限管理,安卓支付,指紋支持,App關聯,

android7.0 代號N Preview API24,多視窗支持(不影響Activity生命周期),增加了JIT編譯器,引入了新的應用簽名方案APK Signature Scheme v2(縮短應用安裝時間和更多未授權APK檔案更改保護),嚴格了權限訪問

android8.0 代號O API26,取消靜態廣播注冊,限制后臺行程呼叫手機資源,桌面圖示自適應

android9.0 代號P API27,加強電池管理,系統界面添加了Home虛擬鍵,提供人工智能API,支持免打擾模式

UI適配

Android 螢屏適配:最全面的解決方案

其他

js相關

JavaScript教程

JavaScript語言總結

HTML5的十大新特性

面試題之ES6的新特性(詳細)

Vue開發檔案

別人的整理

Android 復習資料匯總版

Deep into Android

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/265952.html

標籤:其他

上一篇:Android Studio錯誤代碼解決:The emuilator process for AVD Nexus_ 5X_ API_ 30_ x86 was killed.

下一篇:Typora軟體圖片丟失問題

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more