Android 基礎知識面試

1、簡述十個常用的linux 命令

mkdir 創建文件夾
rm -r 刪除 文件 及文件夾
mv 移動
cp 拷貝
cat 拷貝文件
tail 查看文件尾部
more 分頁查看文件
ls 列出文件清單
reboot 重啓
date 顯示日期
cal 顯示日曆
ps 查看系統進程
ifconfig 查看網絡配置
vim 編輯文本

2、說出幾個Android 工程目錄

src 源文件
gen 生成的 R 文件就在次
android.jar 以來的 Android sdk
assets 資源文件
bin 生成的字節碼 apk 在此
libs 依賴的jar 和so
res 資源文件
drawable
layout
menu
values
AndroidManifest.xml
project.properties

3、什麼是 Anr 以及如何避免?

在 Android 上,如果你的應用程序有一段時間響應不夠靈敏,系統會向用戶顯示一個對話框,這個對話框稱作應 用程序無響應(ANR:Application Not Responding)對話框。用戶可以選擇讓程序繼續運行,但是,他們在使用你 的應用程序時,並不希望每次都要處理這個對話框。因此,在程序裏對響應性能的設計很重要,這樣,系統不會顯示 ANR 給用戶。 不同的組件發生 ANR 的時間不一樣,主線程(Activity、Service)是 5 秒,BroadCastReceiver 是 10 秒。
解決方案:
將所有耗時操作,比如訪問網絡,Socket 通信,查詢大量 SQL 語句,複雜邏輯計算等都放在子線程中去,然後 通過 handler.sendMessage、runonUITread、AsyncTask 等方式更新 UI。無論如何都要確保用戶界面操作的流暢度。 如果耗時操作需要讓用戶等待,那麼可以在界面上顯示進度條。

4、android 的優點和不足

  1. 優點

(1)、開放性,開源,免費,可定製
(2)、掙脫運營商束縛
(3)、豐富的硬件選擇
(4)、不受任何限制的開發商
(5)、無縫結合的 Google 應用

2) 缺點:
(1)、安全問題、隱私問題
(2)、同質化嚴重
(3)、運營商對 Android 手機仍然有影響
(4)、山寨化嚴重
(5)、過分依賴開發商,缺乏標準配置

5、如何判斷 是否含有 SD 卡?

通過如下方法: Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 如果返回 true 就是有 sdcard,如果返回 false 則沒有。

6、dvm 的進程和 Linux 的進程, 應用程序的進程是否爲同一個概念?

dvm 指 dalvik 的虛擬機。每一個 Android 應用程序都擁有一個獨立的 Dalvik 虛擬機實例,應用程序都在它自己的 進程中運行。而每一個 dvm 都是在 Linux 中的一個進程,所以說可以近似認爲是同一個概念。

7、什麼是 android DVM?

dvm 指 dalvik 的虛擬機,Dalvik 是 Google 公司自己設計用於 Android 平臺的 Java 虛擬機,每一個 Dalvik 應用作 爲一個獨立的 Linux 進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉

8、Dalvik 和 Java 虛擬機的區別 ?

1) Dalvik 主要是完成對象生命週期管理,堆棧管理,線程管理,安全和異常管理,以及垃圾回收等等重要功能。
2):Dalvik 負責進程隔離和線程管理,每一個 Android 應用在底層都會對應一個獨立的 Dalvik 虛擬機實例,其代 碼在虛擬機的解釋下得以執行。
3)不同於 Java 虛擬機運行 java 字節碼,Dalvik 虛擬機運行的是其專有的文件格式 Dex。
4)dex 文件格式可以減少整體文件尺寸,提高 I/O 操作的類查找速度。
5)odex 是爲了在運行過程中進一步提高性能,對 dex。
6):所有的 Android 應用的線程都對應一個 Linux 線程,虛擬機因而可以更多的依賴操作系統的線程調度和管理 機制。
7):有一個特殊的虛擬機進程 Zygote,他是虛擬機實例的孵化器。它在系統啓動的時候就會產生,它會完成虛擬 機的初始化,庫的加載,預製類庫和初始化的操作。如果系統需要一個新的虛擬機實例,它會迅速複製自身,以最快 的數據提供給系統。對於一些只讀的系統庫,所有虛擬機實例都和 Zygote 共享一塊內存區域。

9、Android 程序與 Java 程序的區別?

Android 程序用 android sdk 開發,java 程序用 java sdk 開發。
Android SDK 引用了大部分的 Java SDK,少數部分被 Android SDK 拋棄,比如說界面部分,java.awt swing package 除了 java.awt.font 被引用外,其他都被拋棄,在 Android 平臺開發中不能使用。android sdk 添加工具 jar httpclient , pull opengl。

10、啓動應用後,改變系統語言,應用的語言會改變麼?

這個一般是不會的,一般需要重啓應用才能改變應用語言。但是對應應用來說如果做了國際化處理則支持如果沒 有處理那系統語言再更改也是無用的。

待續····

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章