JAVA面試所問到的基礎Android的相關問題

文字代表述說 發佈 2022-03-08T05:47:16+00:00

前言:我們的 Android 面試問題和答案集合都是關於可以在面試中使用的不同類型的問題,以便僱主測試您的技能和知識。如果應用程式無響應,它是一個向用戶顯示的對話框。

前言:

我們的 Android 面試問題和答案集合都是關於可以在面試中使用的不同類型的問題,以便僱主測試您的技能和知識。

在以下部分中,我們將討論 Android 作業系統的功能、命令行工具、性能和其他主題。

以下是一些與 Android 相關的面試問題及其各自的答案。

A.關於安卓的一般問題

1.什麼是安卓?

Android 是一組用於行動裝置的軟體,其中包括作業系統、中間件和一些關鍵應用程式。該應用程式在它自己的進程和它自己的 Dalvik 虛擬機實例中執行。許多虛擬機由 DVM 設備高效運行。DVM 執行 Java 語言字節碼,然後轉換為 .dex 格式文件。

2.安卓有什麼優勢?

  • 開源
  • 平台無關
  • 高度可定製和多功能
  • 易於安裝和兼容性
  • 高度優化的虛擬機——DVM(Dalvik虛擬機)

3、android是否支持java以外的其他語言?

  • 科特林
  • C/C++
  • Xamarin (C#)
  • 基本的
  • 皇冠 (LUA)
  • PhoneGap / Cardova(CSS3、HTML5 和 JavaScript)
  • 羅德(紅寶石)
  • 樓梯

4. SDK和NDK有什麼區別?

  • NDK是一個工具集,可讓您在 Android 應用程式中嵌入使用本機代碼的組件。這意味著您必須使用 C/C++ 編寫部分代碼才能達到速度。
  • SDK(軟體開發工具包)是一套用於開發Android平台應用程式的開發工具。應用程式使用 java 編寫並在 Dalvik 上運行。這意味著它會比使用 C/C++ 實現的要慢。

5.APK格式是什麼?

APK 文件是壓縮的 AndroidManifest.xml 文件,擴展名為 .apk。它還包括應用程式代碼(.dex 文件)、資源文件和其他壓縮到單個 .apk 文件中的文件。

6. Handler 通常用來做什麼?

使用處理程序有兩個主要原因:

  • 安排在未來某個時間點執行的消息和可運行文件
  • 將要在與您自己的線程不同的線程上執行的操作排入隊列

7. 應用程式可以開機啟動嗎?

在 AndroidManifest.xml 文件中授予權限時是。

8. 什麼是資源?

資源是用戶定義的 XML、位圖或其他文件,注入到應用程式構建過程中,以後可以從代碼中加載。

9. 如何在安卓中翻譯?

Google 翻譯器通過使用 XMPP 傳輸數據,將一種語言的數據翻譯成另一種語言。您可以用英語輸入消息並選擇該國公民可以理解的語言,以便將消息傳達給公民。

10.什麼是AndroidManifest.xml?

每個應用程式項目都必須在項目源集的根目錄中有一個AndroidManifest.xml文件(正是該名稱)。清單文件向 Android 構建工具、Android 作業系統和 Google Play 描述了有關您的應用的基本信息。

11. 什麼是上下文?

上下文是表示各種環境數據的實體(一般意義上的接口,在Java中更像是一個抽象類)。它提供對本地文件、資料庫等的訪問。

B.活動

12. 什麼是活動?

Activity是一個應用程式組件,它作為單個窗口呈現給用戶。

13. 簡述Activity生命周期。

Activity 生命周期中有七種不同的方法:

  • onCreate(),在首次創建活動時調用。
  • 如果活動對用戶可見,則調用 onStart()。
  • onResume(),如果活動開始與用戶交互,則調用。
  • 如果預計活動將很快恢復,則調用 onPause()。
  • 如果活動不再對用戶可見,則調用 onStop()。
  • 如果活動從停止狀態返回,則調用 onRestart()。
  • onDestroy(),如果活動完成運行,則調用。

Android系統調用這些回調來知道狀態是否已經改變。

14.定義監控活動時的三個關鍵循環

  • 整個生命周期——活動從第一次調用 onCreate() 到最後一次調用 onDestroy() 之間開始
  • 可見生命周期——活動在 onStart() 和 onStop() 方法未被調用之前開始。
  • 前台生命周期——活動在調用 onResume() 之後和 onPause() 調用之前開始。

15. 哪些類型的標誌用於在 Android 上運行應用程式?

以下是在 Android 中運行應用程式的兩種類型的標誌:

  • FLAG_ACTIVITY_NEW_TASK – 如果它已經在一個任務中運行,那麼該任務將被帶到前台,否則該活動將創建一個新任務。
  • FLAG_ACTIVITY_SINGLE_TOP – 如果活動當前位於堆棧頂部,則活動將不會啟動。
  • FLAG_ACTIVITY_CLEAR_TOP – 如果活動已經在當前任務中運行,那麼這個活動被帶到堆棧的頂部,並且它上面的所有其他活動都將被關閉,這個意圖將被傳遞到(現在在頂部)舊活動作為新意圖。

16. 區分活動和服務

  • 活動是 GUI,可以由用戶終止。
  • 服務可以在後台獨立運行。

17. 什麼是片段,它與活動有何不同?

片段是活動的可重用部分,可以與單個活動中的其他片段組合。

18. Serializable 和 Parcelable 有什麼區別?

  • Serializable是一個標準的 Java 接口,易於實現,但會導致一些垃圾收集。
  • Parcelable比 Serializable 更快,因為它針對 Android 進行了優化。

C.架構組件

19. 定義 Android 架構

android架構中有4個組件:

  • Linux內核
  • 庫 –(Android 運行時)
  • 安卓框架
  • 安卓應用

20. 定義 Android 應用架構

Android 應用架構具有以下組件:

  • 網絡運營等服務
  • 意圖——在活動或服務之間執行相互通信
  • 資源外部化——例如字符串和圖形
  • 通知信號用戶——燈光、聲音、圖標、通知、對話框等。
  • 內容提供者——他們在應用程式之間共享數據

21. Android 應用程式中的主要組件有哪些?

有四種不同的組件類型:

  • 活動
  • 服務
  • 廣播接收器
  • 內容提供者

D.意圖和意圖過濾器

22. 什麼是意圖?

一個類(Intent),它描述了調用者想要做什麼。調用者會將此意圖發送到 Android 的意圖解析器,後者會為該意圖找到最合適的活動。例如,打開 PDF 文檔是一種意圖,而 Adob​​e Reader 應用程式將是該意圖(類)的完美活動。

23. 隱式意圖和顯式意圖有什麼區別?

有兩種類型的意圖:

  • 隱式意圖調用系統組件並聲明要執行的一般操作。
  • 顯式意圖調用活動類或服務來啟動組件。

24. 意圖過濾器的作用是什麼?

意圖過濾器用於過濾掉組件願意接收的意圖。如果一個組件有任何意圖過濾器,它可以接收隱式和顯式意圖,否則它可以接收顯式意圖。

E.用戶界面和導航

25. 什麼是適配器?

Adapter充當 AdapterView 和該視圖的底層數據之間的橋樑。

26. ListView和RecyclerView的主要區別是什麼?

RecyclerView(ListView的高級靈活版):

  • 簡單的動畫
  • 默認包含 ViewHolder
  • 支持水平、網格和交錯布局

列表視圖:

  • 支持頁眉和頁腳
  • 支持 OnItemClickListner
  • 輕鬆添加分隔線
  • 內置數組適配器

27. 創建自定義Views的流程是怎樣的?

  • 使用您自己的類擴展現有的View類或子類。
  • 覆蓋超類中的一些方法。
  • 使用新的擴展類。

28. 為每一行製作帶有自定義視圖的多項選擇列表需要什麼?

可以通過將 CheckBox android:id 值設置為「@android:id /text1?」來查看多選列表。也就是 Android 用於simple_list_item_multiple_choice中 CheckedTextView 的 ID。

29、android支持哪些對話框?android支持4個對話框:

  • AlertDialog:警報對話框支持 0 到 3 個按鈕和可選元素列表,包括複選框和單選按鈕。在其他對話框中,建議最多的對話框是警告對話框。
  • ProgressDialog:此對話框顯示進度輪或進度條。它是 AlertDialog 的擴展,支持添加按鈕。
  • DatePickerDialog:此對話框用於用戶選擇日期。
  • TimePickerDialog:此對話框用於用戶選擇時間。

30. 什麼是吐司?

Toast在一個小彈出窗口中提供有關操作的簡單反饋。它僅填充消息所需的空間量,並且當前活動保持可見和交互。Toast 會在超時後自動消失。

31 什麼是FrameLayout?

FrameLayout旨在阻止屏幕上的一個區域以顯示單個項目。

F.圖像和圖形

32. 九塊圖像與普通位圖有何不同?

它是一種可調整大小的位圖資源,用作設備上的背景或其他圖像。

33. 九塊圖像與普通位圖圖像有什麼區別?

NinePatch類允許在九個部分中繪製位圖。四個角沒有縮放;圖像的中間在兩個軸上縮放,四個邊緣在一個軸上縮放。

G.後台任務

34. 什麼是服務?

Service是一個在後台運行並獨立運行的 Android 組件。它不提供任何用戶界面。

35. 什麼是廣播接收器?

廣播接收器是接收和處理由Context.sendBroadcast(Intent)發送的廣播意圖的代碼的基類。

36. 什麼是線程池?

一個ThreadPool可以運行一個任務的多個並行實例,因此您應該確保您的代碼是線程安全的。在同步塊中包含多個線程可以訪問的變量。這種方法將防止一個線程在另一個線程寫入變量時讀取該變量。

37. 什麼是 AIDL?

Android 接口定義語言 ( AIDL ),使用進程間通信 (IPC) 處理客戶端和服務之間的接口要求。

38. AIDL 支持哪些數據類型?

AIDL 支持以下數據類型:

  • 字符序列
  • 細繩
  • 列表
  • 地圖
  • Java 原始類型(int、char、boolean…)

39. 如何通過 AIDL 創建有界服務?

  • 創建 .aidl 文件
  • 實現接口
  • 暴露接口

H.App 數據和文件

40. Android 平台上有哪些不同的數據存儲選項?

您的數據存儲選項如下:

  • 內部存儲——在設備文件系統上存儲私有數據。
  • 外部存儲——將公共數據存儲在共享的外部文件系統上。
  • 資料庫 (SQLite) – 將結構化數據存儲在私有資料庫中。
  • Shared Preferences – 將私有原始數據存儲在鍵值對中。

41. 什麼是內容提供者?

內容提供者是 Android 應用程式的主要構建塊之一,為應用程式提供內容。它們封裝數據並通過單個ContentResolver接口將其提供給應用程式。僅當您需要在多個應用程式之間共享數據時才需要內容提供程序。

一、命令行工具

42. 什麼是 AAPT2?

Android 資產打包工具 ( AAPT2 ) 將資源解析、索引和編譯為針對 Android 平台優化的二進位格式。

43. 什麼是亞行?

ADB代表 Android Debug Bridge。是一個命令行工具,允許開發人員執行 shell 命令。它的基本功能是控制與仿真器埠的通信。

J.性能

44. 什麼是 ANR?

ANR代表應用程式無響應。如果應用程式無響應,它是一個向用戶顯示的對話框(通知或彈出窗口)。

45. ANR 何時發生?

當出現以下任一情況時,將為您的應用觸發 ANR:

  • 而您在前台的活動在 5 秒內沒有響應輸入事件。
  • 雖然您的活動不在前台,但在相當長的時間內尚未完成執行。

總結:「不積跬步,無以至千里」,希望未來的你能成為:有夢為馬 隨處可棲!加油,為大家收集了最新的面試資料,有文檔、有攻略、有視頻。有需要的同學可以關注+點讚私信博主免費領取

關鍵字: