Android面試總結

本文來自https://blog.csdn.net/liuxian13183/ ,引用必須註明出處!

經過大大小小的面試,同事說你出一份面試題總結吧,我說好;但一直由於各種原因沒有總結,今天想起,先慢慢總結,給大傢作為參考。這裡面的問題有大公司,也有小公司,不具體指定。大傢看的時候各自定位,不指明具體公司面試內容。

一般情況下,首先會讓你做個自我介紹,畢業時間、學校、專業,工作年限,做安卓的時間簡單說一下,然後說幾個做過的項目,最後揀一個自己最熟悉的項目講下業務流程。接著面試官就會問你一些用過的技術,原則:懂就說,不懂就說沒研究過,忘記就說記不清楚瞭(當然面試前要做好精心準備,不打無準備之仗)。

下面不懂的你必須背下來,既是知識點,又是面試必備。

筆記題:

1、簡要說明下列代碼的運行結果

final int age = 19;

public void changeABC(String abc) {
abc += “def”;
System.out.println(abc);
}

public void changeAge() {
age += 7;
}

public static void main(String[] args) throws InstantiationException,
IllegalAccessException {
FinalSet finalSet = FinalSet.class.newInstance();
String abc =new String();
abc=”abc”;

finalSet.changeABC(abc);
}

這個題是來測試你對final的理解;首先String是個對象,其次它也是個基本數據類型,final值不能再改變,因此age+=7這句是要報錯的;另外String對象被運算時,已經生成新的對象,所以值為abcdef,原來值並不改變,隻是引用指向瞭新的值。

2、代碼見第1題,問代碼執行完,age是否被回收,abc是否被回收?類的執行要經過三個階段,ClassLoader的裝載、鏈接即解析類成可執行文件、初始化即常量和方法體,執行完之後變量和方法體隨著類的存在而存在、消亡而消亡,但所引用的值和對象會被回收。總之age和abc都不會被回收。

面試題:

1、手機中應用的初始內存是多少?限制內存是多少?虛擬機可分配最大內存是多少?

回答,拿出自己root過的手機,打開cmd命令行,adb shell getprop

[dalvik.vm.dexopt-flags]: [m=y]
[dalvik.vm.heapgrowthlimit]: [48m] //進程最大可分配內存
[dalvik.vm.heapsize]: [128m] //虛擬機最大可分配內存
[dalvik.vm.heapstartsize]: [5m] //進程初始分配的內存
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]

2、手機系統的內存是如何進行自我管理的?

詳見:Android統就如何管理自己內存的?

軟件工程:

1、快速原型法,快速給出一個初級版本,然後根據客戶需求開發人員不斷完善原型,直到客戶滿意再完善系統。這種開發方式經常在需求不明確的情況下進行。

2、瀑佈式,明確需求,按部就班的從需求分析、軟件設計、編碼、測試、維護這個流程來走,並且重復這個過程,直到客戶滿意。這種開發方式一種用於一期、二期、三期這樣長期大型項目的開發。

使用NDK的優點

保護代碼

代碼重用。

C運行速度快

可手動分配內存,如視頻

發佈留言