【Interview】Android java基礎+數據結構

1、java中==和equals和hashCode的區別

“==”、equals和hashCode有什麼區別

2、int、char、long各佔多少字節數

4、2、8

3、int與integer的區別

int和Integer的區別

4、對java多態的理解

Java中多態的理解
多態可以說是建立在繼承的基礎上的,在多態的向上轉型的情況中,無法調用子類中重載的方法,但是可以調用重寫的方法。
真正概念(仔細理解一下):指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時並不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因爲在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。

5、String、StringBuffer、StringBuilder區別

String的值是不可變的,這就導致每次對String的操作都會生成新的String對象,這樣不僅效率低下,而且大量浪費有限的內存空間。
String:不可變字符序列
StringBuffer:可變字符序列、效率低、線程安全
StringBuilder:可變字符序列、效率高、線程不安全
小結:
(1)如果要操作少量的數據用 String;
(2)多線程操作字符串緩衝區下操作大量數據 StringBuffer;
(3)單線程操作字符串緩衝區下操作大量數據 StringBuilder。
String,StringBuffer與StringBuilder的區別

6、什麼是內部類及其用處

可以將一個類定義在另一個類裏面或者一個方法裏面,這樣的類稱爲內部類。
1.成員內部類
2.局部內部類
3.匿名內部類
4.靜態內部類
Java內部類詳解

7、抽象類和接口區別、抽象類的意義、抽象類與接口的應用場景、抽象類是否可以沒有方法和屬性、接口的意義

抽象類:抽象類不能創建實例,它只能作爲父類被繼承。抽象類是從多個具體類中抽象出來的父類,它具有更高層次的抽象。從多個具有相同特徵的類中抽象出一個抽象類,以這個抽象類作爲其子類的模板,從而避免了子類的隨意性。
繼承是一個 "是不是"的關係,而 接口 實現則是 "有沒有"的關係
深入理解Java的接口和抽象類

8、泛型中extends和super的區別

泛型中 extends 和 super 的區別?

9、父類的靜態方法能否被子類重寫

no,只能繼承,不能重寫

10、進程和線程的區別

11、final,finally,finalize的區別

final、finally與finalize的區別

12、序列化的方式,及兩種序列化的差別

幾種Android數據序列化方案

13、靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?

可以繼承,但是不可以重寫

14、爲什麼要有靜態內部類

https://blog.csdn.net/flyfeifei66/article/details/82686086

15、閉包和局部內部類的區別

16、java-string轉換成integer的方式及原理

java-string轉換成integer的方式及原理

17、簡述下集合

collection接口是集合類的根接口,被繼承的兩個類包括set和list,Set中不能包含重複的元素。List是一個有序的集合,可以包含重複的元素,提供了按索引訪問的方式。
Map是Java.util包中的另一個接口,它和Collection接口沒有關係,是相互獨立的,但是都屬於集合類的一部分。Map包含了key-value對。Map不能包含重複的key,但是可以包含相同的value。
terator所有的集合類,都實現了Iterator接口,這是一個用於遍歷集合中元素的接口,主要包含以下三種方法:
1.hasNext()是否還有下一個元素。
2.next()返回下一個元素。
3.remove()刪除當前元素。

接口 子接口 是否有序 是否允許元素重複
Collection
List ArrayList
LinkedList
Vector
Set AbstractSet
HashSet
TreeSet 是(用二叉排序樹)
Map AbstractMap 使用key-value來映射和存儲數據,key必須唯一,value可以重複
HashMap
TreeMap 是(用二叉排序樹) 使用key-value來映射和存儲數據,key必須唯一,value可以重複

18、一個線程可以開啓多少handle,開啓時應該注意什麼

一個線程可以開啓多個handle,但是一個只會共用一個looper,並且使用過程,應該注意handle的通信要帶上各自的target,以便區分

常用數據結構簡介

1、併發集合

https://blog.csdn.net/yuruixin_china/article/details/82082195

2、集合類以及集合框、數據結構

https://blog.csdn.net/weixin_42280517/article/details/81586001
面試大廠回來,我狠補了一把算法和數據結構

3、List,Set,Map的區別

三大集合:List、Map、Set的區別與聯繫

4、List和Map的實現方式以及存儲方式

Java中常見數據結構:list與map -底層如何實現

5、Java中HashMap的實現原理\數據結構

Java之HashMap源碼解讀

6、ConcurrentHashMap實現原理及源碼分析

ConcurrentHashMap實現原理及源碼分析
高併發編程系列:ConcurrentHashMap的實現原理(JDK1.7和JDK1.8)

7、HashTable實現原理

Java集合-Hashtable實現原理源碼分析

8、HashMap與HashSet的區別

http://www.importnew.com/6931.html

1、HashSet底層是採用HashMap實現的。HashSet 的實現比較簡單,HashSet 的絕大部分方法都是通過調用 HashMap 的方法來實現的,因此 HashSet 和 HashMap 兩個集合在實現本質上是相同的。
2、HashMap的key就是放進HashSet中對象,value是Object類型的。
3、當調用HashSet的add方法時,實際上是向HashMap中增加了一行(key-value對),該行的key就是向HashSet增加的那個對象,該行的value就是一個Object類型的常量

9、Java如何判斷HashSet和HashMap中相同元素

https://f543711700.iteye.com/blog/800929

10、集合Set實現Hash怎麼防止碰撞

https://blog.csdn.net/zeb_perfect/article/details/52574915

11、ArrayList和LinkedList區別及使用場景

https://blog.csdn.net/u012216131/article/details/82500925

12、數組和鏈表

https://blog.csdn.net/m0_37631322/article/details/81777855

13、深拷貝和淺拷貝

http://www.cnblogs.com/xingzc/p/9646923.html

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