日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

安卓线程同步面试_Android面试题

發布時間:2024/8/23 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓线程同步面试_Android面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、java的重載和重寫分別是什么含義?

重載:

(1) 方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。

(2) java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。

(3) 重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標準。

public class Dog {

Dog(){

this.bark();

}

void bark(){//bark()方法是重載方法

System.out.println("no barking!");

this.bark("female", 3.4);

}

void bark(String m,double l){//注意:重載的方法的返回值都是一樣的,

System.out.println("a barking dog!");

this.bark(5, "China");

}

void bark(int a,String n){//不能以返回值區分重載方法,而只能以“參數類型”和“類名”來區分

System.out.println("a howling dog");

}

public static void main(String[] args){

Dog dog = new Dog();

dog.bark();

dog.bark("male", "yellow");

dog.bark(5, "China");

}

}

重寫:

(1) 父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類并不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋。

(2)若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。

(3)子類函數的訪問修飾權限不能少于父類的;

概念:即調用對象方法的機制。

動態綁定的內幕:

1、編譯器檢查對象聲明的類型和方法名,從而獲取所有候選方法。試著把上例Base類的test注釋掉,這時再編譯就無法通過。

2、重載決策:編譯器檢查方法調用的參數類型,從上述候選方法選出唯一的那一個(其間會有隱含類型轉化)。

如果編譯器找到多于一個或者沒找到,此時編譯器就會報錯。試著把上例Base類的test(byte b)注釋掉,這時運行結果是1 1。

3、若方法類型為priavte static final ,java采用靜態編譯,編譯器會準確知道該調用哪

個方法。

4、當程序運行并且使用動態綁定來調用一個方法時,那么虛擬機必須調用對象的實際類型相匹配的方法版本。

在例子中,b所指向的實際類型是TestOverriding,所以b.test(0)調用子類的test。

但是,子類并沒有重寫test(byte b),所以b.test((byte)0)調用的是父類的test(byte b)。

如果把父類的(byte b)注釋掉,則通過第二步隱含類型轉化為int,最終調用的是子類的test(int i)。

2、Java關鍵字final和static是怎么使用的?

在Java里static (靜態的),是靜態關鍵字,用來修飾靜態變量、方法、代碼快等。

1、 當static修飾變量的時候,該變量將被JVM直接分配到堆內存上,且所有程序對其的引用都指向同一個地址,不會再進行重新分配內存空間,一般常用于修飾計數器。

2 、用來修飾方法的時候,注意該類中如果調用其他方法,則調用的方法也必須為靜態的,但是變量可以聲明為非靜態或者使用靜態全局變量。好處就是可以直接通過類名進行調用該方法,不用進行類的實例化。

3 、用來修飾代碼塊的時候,在類加載的時候就進行初始化代碼快里的內容,這要比非靜態代碼塊執行更早,一般用于類的初始化操作。

在Java 里 final可以用來修飾變量、方法、類

1 當定義一個final變量時,jvm會將其分配到常量池中,程序不可改變其值;

2 當修飾一個方法時,該方法在子類中將不能被重寫;

3 當修飾一個類時,該類不能被繼承。

補充:

關于static final和final static:

static final和final static沒什么區別,一般static寫在前面。

static final:

static修飾的屬性強調它們只有一個,final修飾的屬性表明是一個常數(創建后不能被修改)。static final修飾的屬性表示一旦給值,就不可修改,并且可以通過類名訪問。

static final也可以修飾方法,表示該方法不能重寫,可以在不new對象的情況下調用

3、java線程池有哪幾種方式?構造函數的5個參數分別是什么意義?

java中的有哪些線程池?

1.new CachedThreadPool創建一個可緩存線程池程

2.new FixedThreadPool 創建一個定長線程池

3.new ScheduledThreadPool 創建一個定長線程池

4.new SingleThreadExecutor 創建一個單線程化的線程池

4、實現java線程有哪幾種方式?請寫出核心代碼

1、繼承Thread類

public class MyThread extends Thread {

public void run(){

}

}

2、實現Runnable接口

public class MyThread1 implements Runnable {

@Override

public void run() {

}

}

5、sleep()和wait()方法有什么區別,簡述一下分別在哪些場景使用這個兩個方法?

調用:

wait():在對象上調用,并且當前線程必須在一個lockObj上同步。

sleep():在Thread上調用,總是當前正在執行的線程。

同步:

wait():如果同步,那么多個線程會一個一個的訪問對象。

sleep():如果同步,多個線程都會等休眠線程蘇醒。

維持鎖:

wait():釋放鎖,讓其他對象機會執行。

sleep():執型超時或者調用interrupt之前保持鎖。

蘇醒條件:

wait():直到由對象調用notify(), notifyAll()

sleep():執型超時或者調用interrupt之前保持鎖。

用途:

sleep():時間同步;

wait():多線程同步。

6、簡述HashMap的用法,存儲結構,hashcode和equal方法在HashMap存儲過程中的作用?

hashmap是按照存儲結構來講是數組(散列桶)與鏈表的組合體

7、Activity有哪幾種啟動模式,分別有什么作用,mainfest如何設置?請詳細說明

Standard模式是Android的默認啟動模式,你不在配置文件中做任何設置,那么這個Activity就是standard模式,這種模式下,Activity可以有多個實例,每次啟動Activity,無論任務棧中是否已經有這個Activity的實例,系統都會創建一個新的Activity實例

singleTop模式的Activity已經位于任務棧的棧頂,再去啟動它時,不會再創建新的實例,如果不位于棧頂,就會創建新的實例

SingleTask模式的Activity在同一個Task內只有一個實例,如果Activity已經位于棧頂,系統不會創建新的Activity實例,和singleTop模式一樣。但Activity已經存在但不位于棧頂時,系統就會把該Activity移到棧頂,并把它上面的activity出棧。

singleInstance模式也是單例的,但和singleTask不同,singleTask只是任務棧內單例,系統里是可以有多個singleTask Activity實例的,而singleInstance Activity在整個系統里只有一個實例,啟動一singleInstanceActivity時,系統會創建一個新的任務棧,并且這個任務棧只有他一個Activity。

修改 android:launchMode=”standard”

8、注冊廣播有幾種方式,這些方式有和優缺點?

例:

現有廣播類CustomBroadcastReceiver,action = “com.baidu.SENDBROADCAST”,請寫出注冊廣播的核心代碼。

9、Android中的幾種動畫,請分別說明

View Animation(視圖動畫)

Drawable Animation(Drawable動畫)

Property Animation(屬性動畫)

10、簡述Handler、Looper、MessageQueue的作用和關系?Hander發送消息有哪幾種方式?Handler 處理消息有哪幾種方式?

11、請寫出你最熟悉的一種設計模式的代碼。

12、在ActivityA 和ActiityB之間如何傳遞一張圖片,假設圖片resId=R.drawable.ic_target。請用代碼表示。

總結

以上是生活随笔為你收集整理的安卓线程同步面试_Android面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。