原創(chuàng)鏈接
一、Java面試題
java有多重要,對(duì)于做android的我們,不需要多說(shuō)了,let’s go
(1)Java基礎(chǔ)
(1.1)String,Stringbuffer,Stringbuilder 區(qū)別
http://blog.csdn.net/kingzone_2008/article/details/9220691
(1.2)說(shuō)說(shuō)對(duì)java多態(tài)的理解
http://www.itdecent.cn/p/8cfb92ecaabe
http://www.cnblogs.com/hupp/p/4854918.html
此處延伸《動(dòng)態(tài)綁定》:
http://hxraid.iteye.com/blog/428891
(1.3)java虛擬機(jī)和Dalvik虛擬機(jī)的區(qū)別
http://www.itdecent.cn/p/923aebd31b65
(1.4)java中==和equals和hashCode的區(qū)別
http://blog.csdn.net/hla199106/article/details/46907725
(1.5)線(xiàn)程sleep和wait有什么區(qū)別
http://blog.csdn.net/liuzhenwen/article/details/4202967
(1.6)泛型中extends和super的區(qū)別
https://www.zhihu.com/question/20400700
(1.7)閉包和局部?jī)?nèi)部類(lèi)的區(qū)別
http://www.itdecent.cn/p/f55b11a4cec2
http://www.itdecent.cn/p/367b138fe909
(1.8)進(jìn)程和線(xiàn)程的區(qū)別
http://www.itdecent.cn/p/a4fa4edbeb8a
(1.9)string 轉(zhuǎn)換成 integer的方式及原理
http://blog.csdn.net/sinat_20259781/article/details/52024763
(1.10)int、char、long各占多少字節(jié)數(shù)
http://blog.csdn.net/never_cxb/article/details/47204485
(1.11)int與integer的區(qū)別
https://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html
http://www.itdecent.cn/p/08010144d40f
(1.12)final,finally,finalize的區(qū)別
http://www.itdecent.cn/p/59b77edd3319
(1.13)序列化的方式
http://www.itdecent.cn/p/ff770511a097
(1.14)Serializable 和Parcelable 的區(qū)別
http://www.itdecent.cn/p/a60b609ec7e7
(1.15)靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫(xiě)?以及原因?
http://blog.csdn.net/liuconey/article/details/51555362
http://blog.csdn.net/carmelo_z/article/details/67086140
(1.16)靜態(tài)內(nèi)部類(lèi)的設(shè)計(jì)意圖
http://blog.csdn.net/blessed24/article/details/78077134
https://www.cnblogs.com/aademeng/articles/6192954.html
(1.17)成員內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)、局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)的理解,以及項(xiàng)目中的應(yīng)用
http://www.itdecent.cn/p/5c5fa1377c79
http://www.itdecent.cn/p/e385ce41ca5b
(1.18)什么是內(nèi)部類(lèi)??jī)?nèi)部類(lèi)的作用
http://www.itdecent.cn/p/e385ce41ca5b
(1.19)抽象類(lèi)和接口區(qū)別
http://www.itdecent.cn/p/038f0b356e9a
http://www.itdecent.cn/p/612e2d2a8a78
(1.20)抽象類(lèi)的意義
http://blog.csdn.net/wei_zhi/article/details/52736350
(1.21)抽象類(lèi)與接口的應(yīng)用場(chǎng)景
http://blog.csdn.net/xcbeyond/article/details/7667733
(1.22)抽象類(lèi)是否可以沒(méi)有方法和屬性?
當(dāng)然可以。。
(1.23)接口的意義
http://blog.csdn.net/oreo_go/article/details/52102514
PS:(1.19)-(1.23)都是一類(lèi)東西,基本上過(guò)一遍詳細(xì)的文章,都能解決。
(1.24)父類(lèi)的靜態(tài)方法能否被子類(lèi)重寫(xiě)
http://www.itdecent.cn/p/df43f5500ea3
(2)Java深入
(2.1)哪些情況下的對(duì)象會(huì)被垃圾回收機(jī)制處理掉?
http://www.itdecent.cn/p/5261a62e4d29
http://www.itdecent.cn/p/778dd3848196
(2.2)講一下常見(jiàn)編碼方式?
https://www.cnblogs.com/liujinhong/p/5995946.html
(2.3)utf-8編碼中的中文占幾個(gè)字節(jié);int型幾個(gè)字節(jié)?
http://www.itdecent.cn/p/c34d3e5790a4
(2.4)靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別,什么場(chǎng)景使用?
http://www.itdecent.cn/p/2f518a4a4c2b
http://www.itdecent.cn/p/861223789d53
(2.5)Java的異常體系
http://www.itdecent.cn/p/93aa1cf26b97
(2.6)談?wù)勀銓?duì)解析與分派的認(rèn)識(shí)。
這個(gè)已經(jīng)有點(diǎn)深入了,建議從虛擬機(jī)入手,先了解清楚。
http://www.itdecent.cn/p/355ae3bcec41
(2.7)修改對(duì)象A的equals方法的簽名,那么使用HashMap存放這個(gè)對(duì)象實(shí)例的時(shí)候,會(huì)調(diào)用哪個(gè)equals方法?
http://www.itdecent.cn/p/7d3feb156be4
(2.8)Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?
參考(1.2)
(2.9)如何將一個(gè)Java對(duì)象序列化到文件里?
http://blog.csdn.net/it_wangxiangpan/article/details/5781941
(2.10)說(shuō)說(shuō)你對(duì)Java反射的理解
http://www.itdecent.cn/p/6277c1f9f48d
http://www.itdecent.cn/p/1a21a9cb5bea
(2.11)說(shuō)說(shuō)你對(duì)Java注解的理解
http://www.itdecent.cn/p/0b1af95c1335
http://www.itdecent.cn/p/4068da3c8d3d
(2.12)說(shuō)說(shuō)你對(duì)依賴(lài)注入的理解
http://www.itdecent.cn/p/506dcd94d4f9
(2.13)說(shuō)一下泛型原理,并舉例說(shuō)明
http://www.itdecent.cn/p/ddbe1db509da
(2.14)Java中String的了解
http://www.itdecent.cn/p/2f209af80f84
(2.15)String為什么要設(shè)計(jì)成不可變的?
http://www.itdecent.cn/p/16480390a847
http://www.itdecent.cn/p/48b011688edc
(2.16)Object類(lèi)的equal和hashCode方法重寫(xiě),為什么?
http://www.itdecent.cn/p/f9cc84047bd6
(3)數(shù)據(jù)結(jié)構(gòu)
(3.1)常用數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介
http://www.itdecent.cn/p/44a1e5bc077a
(3.2)并發(fā)集合了解哪些?
http://youyu4.iteye.com/blog/2352846
(3.3)列舉java的集合以及集合之間的繼承關(guān)系
http://www.itdecent.cn/p/63e76826e852
(3.4)集合類(lèi)以及集合框架
http://www.itdecent.cn/p/63e76826e852
(3.5)容器類(lèi)介紹以及之間的區(qū)別(容器類(lèi)估計(jì)很多人沒(méi)聽(tīng)這個(gè)詞,Java容器主要可以劃分為4個(gè)部分:List列表、Set集合、Map映射、工具類(lèi)(Iterator迭代器、Enumeration枚舉類(lèi)、Arrays和Collections)
http://www.itdecent.cn/p/c70989bd5f29
(3.6)List,Set,Map的區(qū)別
http://www.itdecent.cn/p/047e33fdefd2
(3.7)List和Map的實(shí)現(xiàn)方式以及存儲(chǔ)方式
http://www.itdecent.cn/p/047e33fdefd2
(3.8)HashMap的實(shí)現(xiàn)原理
http://www.itdecent.cn/p/8b372f3a195d/
(3.9)HashMap數(shù)據(jù)結(jié)構(gòu)?
http://www.itdecent.cn/p/8b372f3a195d/
(3.10)HashMap源碼理解
http://www.itdecent.cn/p/8b372f3a195d/
(3.11)HashMap如何put數(shù)據(jù)(從HashMap源碼角度講解)?
http://www.itdecent.cn/p/8b372f3a195d/
(3.12)HashMap怎么手寫(xiě)實(shí)現(xiàn)?
自己去寫(xiě)哈,幾種遍歷方式。
(3.13)ConcurrentHashMap的實(shí)現(xiàn)原理
http://www.itdecent.cn/p/c0642afe03e0
(3.14)ArrayMap和HashMap的對(duì)比
http://www.itdecent.cn/p/7b9a1b386265
(3.15)HashTable實(shí)現(xiàn)原理
http://www.itdecent.cn/p/dbe7a1ea5928
(3.16)TreeMap具體實(shí)現(xiàn)
http://www.itdecent.cn/p/d9ad7f6d75a0
(3.17)HashMap和HashTable的區(qū)別
http://www.itdecent.cn/p/7456a339e4aa
(3.18)HashMap與HashSet的區(qū)別
http://www.itdecent.cn/p/749e6ce12d98
(3.19)HashSet與HashMap怎么判斷集合元素重復(fù)?
http://f543711700.iteye.com/blog/800929
http://blog.csdn.net/ning109314/article/details/17354839
(3.20)集合Set實(shí)現(xiàn)Hash怎么防止碰撞
http://blog.csdn.net/zeb_perfect/article/details/52574915
http://blog.csdn.net/u010698072/article/details/52802179
(3.21)ArrayList和LinkedList的區(qū)別,以及應(yīng)用場(chǎng)景
https://www.cnblogs.com/soundcode/p/6294174.html
http://www.itdecent.cn/p/e591690afacb
(3.22)數(shù)組和鏈表的區(qū)別
http://www.itdecent.cn/p/26fa29a3d669
(3.23)二叉樹(shù)的深度優(yōu)先遍歷和廣度優(yōu)先遍歷的具體實(shí)現(xiàn)
http://blog.csdn.net/fantasy_lin_/article/details/52751559
這些問(wèn)題要理解清楚,必須要自己去動(dòng)手寫(xiě)寫(xiě)
(3.24)堆的結(jié)構(gòu)
http://blog.csdn.net/l294265421/article/details/50927538
(3.25)堆和樹(shù)的區(qū)別
https://www.zhihu.com/question/36134980/answer/66080662
(3.26)堆和棧在內(nèi)存中的區(qū)別是什么(解答提示:可以從數(shù)據(jù)結(jié)構(gòu)方面以及實(shí)際實(shí)現(xiàn)方面兩個(gè)方面去回答)?
http://www.itdecent.cn/p/947a76e2ddbc
(3.27)什么是深拷貝和淺拷貝
http://blog.csdn.net/u014727260/article/details/55003402
(3.28)手寫(xiě)鏈表逆序代碼
http://blog.csdn.net/u012571415/article/details/46955535
(3.29)講一下對(duì)樹(shù),B+樹(shù)的理解
http://www.itdecent.cn/p/6f68d3c118d6
(3.30)判斷單鏈表成環(huán)與否?
http://blog.csdn.net/njr465167967/article/details/52634352
算法題,去leetcode、lintcode多刷刷題,這些都不是什么問(wèn)題
(3.31)鏈表翻轉(zhuǎn)(即:翻轉(zhuǎn)一個(gè)單項(xiàng)鏈表)
http://blog.csdn.net/guyuealian/article/details/51119499
算法題,去leetcode、lintcode多刷刷題,這些都不是什么問(wèn)題
(3.32)合并多個(gè)單有序鏈表(假設(shè)都是遞增的)
http://www.itdecent.cn/p/a3d5cd6c3ae2
算法題,去leetcode、lintcode多刷刷題,這些都不是什么問(wèn)題
(4)線(xiàn)程、多線(xiàn)程和線(xiàn)程池
關(guān)于多線(xiàn)程請(qǐng)先過(guò)一遍這篇文章:
http://www.itdecent.cn/p/40d4c7aebd66
(4.1)開(kāi)啟線(xiàn)程的三種方式?
http://blog.csdn.net/longshengguoji/article/details/41126119
(4.3)為什么要有線(xiàn)程,而不是僅僅用進(jìn)程?
http://blog.csdn.net/tongxinhaonan/article/details/42558561
(4.4)run()和start()方法區(qū)別
http://blog.csdn.net/dada360778512/article/details/6965790
(4.5)如何控制某個(gè)方法允許并發(fā)訪(fǎng)問(wèn)線(xiàn)程的個(gè)數(shù)?
http://blog.csdn.net/zuoanyinxiang/article/details/50448564
http://blog.csdn.net/anhenzhufeng/article/details/70225415
(4.6)在Java中wait和seelp方法的不同
http://www.itdecent.cn/p/a67ad7ba89a5
(4.7)談?wù)剋ait/notify關(guān)鍵字的理解
http://www.itdecent.cn/p/f3d472c21c0e
(4.8)什么導(dǎo)致線(xiàn)程阻塞?
http://blog.csdn.net/sinat_22013331/article/details/45740641
http://blog.csdn.net/he3527/article/details/77618691
(4.9)線(xiàn)程如何關(guān)閉?
http://www.itdecent.cn/p/536b0df1fd55
(4.10)講一下java中的同步的方法
http://www.itdecent.cn/p/6542c8a96392
(4.11)數(shù)據(jù)一致性如何保證?
https://www.cnblogs.com/jiumao/p/7136631.html
從數(shù)據(jù)庫(kù)下手去了解,道理差不多。重點(diǎn)是同步和線(xiàn)程安全。
(4.12)如何保證線(xiàn)程安全?
http://www.itdecent.cn/p/fe7ed5b50933
http://blog.csdn.net/xiangxianghehe/article/details/51135299
(4.13)如何實(shí)現(xiàn)線(xiàn)程同步?
http://www.itdecent.cn/p/6542c8a96392
(4.14)兩個(gè)進(jìn)程同時(shí)要求寫(xiě)或者讀,能不能實(shí)現(xiàn)?如何防止進(jìn)程的同步?
。。
(4.15)線(xiàn)程間操作List
不知道想問(wèn)啥,并發(fā)操作?
(4.16)Java中對(duì)象的生命周期
http://blog.csdn.net/sodino/article/details/38387049
延伸:如何判斷對(duì)象“無(wú)用”
http://www.itdecent.cn/p/73d8d6c54515
(4.17)Synchronized用法
http://www.itdecent.cn/p/19f861ab749e
(4.18)Synchronize的原理
http://www.itdecent.cn/p/19f861ab749e
(4.19)談?wù)剬?duì)Synchronized關(guān)鍵字,類(lèi)鎖,方法鎖,重入鎖的理解
http://blog.csdn.net/le_le_name/article/details/52348314
http://www.itdecent.cn/p/007bd7029faf
(4.20)static synchronized 方法的多線(xiàn)程訪(fǎng)問(wèn)和作用
http://blog.csdn.net/wangtaomtk/article/details/52318634
(4.21)同一個(gè)類(lèi)里面兩個(gè)synchronized方法,兩個(gè)線(xiàn)程同時(shí)訪(fǎng)問(wèn)的問(wèn)題
http://blog.csdn.net/aiyawalie/article/details/53261823
(4.22)談?wù)剉olatile關(guān)鍵字的用法
http://www.itdecent.cn/p/7798161d7472
(4.23)談?wù)剉olatile關(guān)鍵字的作用
http://www.itdecent.cn/p/7798161d7472
(4.24)volatile的原理
http://www.itdecent.cn/p/7c614ac4dd92
http://ifeve.com/volatile/
(4.25)談?wù)凬IO的理解
這個(gè)作者寫(xiě)了12篇NIO的文章:http://ifeve.com/overview/
http://www.itdecent.cn/p/a33f741fe450
(4.26)Synchronized 和volatile 關(guān)鍵字的區(qū)別
http://blog.csdn.net/suifeng3051/article/details/52611233
https://www.cnblogs.com/tf-Y/p/5266710.html
(4.27)Synchronized與Lock的區(qū)別
http://blog.csdn.net/u012403290/article/details/64910926?locationNum=11&fps=1
http://www.itdecent.cn/p/2344a3e68ca9
(4.28)ReentrantLock 、synchronized和volatile比較
http://heaven-arch.iteye.com/blog/1738212
https://www.cnblogs.com/dennyzhangdd/p/6020566.html
(4.29)ReentrantLock的內(nèi)部實(shí)現(xiàn)
http://blog.csdn.net/yanyan19880509/article/details/52345422
(4.30)lock原理
http://blog.csdn.net/endlu/article/details/51249156
(4.31)死鎖的四個(gè)必要條件?
http://blog.csdn.net/ysdaniel/article/details/6644418
(4.32)怎么避免死鎖?
http://blog.csdn.net/ls5718/article/details/51896159
(4.33)對(duì)象鎖和類(lèi)鎖是否會(huì)互相影響?
http://blog.csdn.net/u013142781/article/details/51697672
http://blog.csdn.net/codeharvest/article/details/70649375
先了解它們是啥,自己動(dòng)手試一下就知道了。
(4.34)什么是線(xiàn)程池,如何使用?
http://www.itdecent.cn/p/210eab345423
(4.35)Java的并發(fā)、多線(xiàn)程、線(xiàn)程模型
并發(fā)模型:http://www.itdecent.cn/p/067702fbf256
http://ifeve.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B/
線(xiàn)程模型:
https://www.cnblogs.com/tian830937/p/5277459.html
(4.36)談?wù)剬?duì)多線(xiàn)程的理解
http://www.itdecent.cn/p/40d4c7aebd66
(4.37)多線(xiàn)程有什么要注意的問(wèn)題?
并發(fā)問(wèn)題,安全問(wèn)題,效率問(wèn)題。
(4.38)談?wù)勀銓?duì)并發(fā)編程的理解并舉例說(shuō)明
http://www.itdecent.cn/p/053943a425c3
http://blog.csdn.net/songxinjianqwe/article/details/72789899?locationNum=15&fps=1
有本書(shū)叫:java并發(fā)編程實(shí)戰(zhàn),買(mǎi)下來(lái)。
(4.39)談?wù)勀銓?duì)多線(xiàn)程同步機(jī)制的理解?
一般問(wèn)你怎么理解,就是說(shuō)要怎么用,用在什么場(chǎng)景。
http://www.itdecent.cn/p/592ef5642513
(4.40)如何保證多線(xiàn)程讀寫(xiě)文件的安全?
換個(gè)說(shuō)法就是你怎么保證多線(xiàn)程安全,怎么樣保證多線(xiàn)程安全做一件事,這件事是啥不重要。。
關(guān)于寫(xiě)文件這里有篇文章:
http://blog.csdn.net/baple/article/details/23857485
(4.41)多線(xiàn)程斷點(diǎn)續(xù)傳原理
http://blog.csdn.net/ghost_Programmer/article/details/51923895
(4.42)斷點(diǎn)續(xù)傳的實(shí)現(xiàn)
http://blog.csdn.net/ghost_Programmer/article/details/51923895
關(guān)于斷點(diǎn)續(xù)傳這個(gè),我自己以前有做過(guò),我建議可以從android的開(kāi)源框架里面直接看源碼,這樣懂的比較快。斷點(diǎn)續(xù)傳的框架有很多。
并發(fā)編程有關(guān)知識(shí)點(diǎn)(這個(gè)是一般Android開(kāi)發(fā)用的少的,所以建議多去看看):
平時(shí)Android開(kāi)發(fā)中對(duì)并發(fā)編程可以做得比較少,Thread這個(gè)類(lèi)經(jīng)常會(huì)用到,但是我們想提升自己的話(huà),一定不能停留在表面,,我們也應(yīng)該去了解一下java的關(guān)于線(xiàn)程相關(guān)的源碼級(jí)別的東西。
學(xué)習(xí)的參考資料如下:
Java 內(nèi)存模型
java線(xiàn)程安全總結(jié)
線(xiàn)程狀態(tài):
一張圖讓你看懂JAVA線(xiàn)程間的狀態(tài)轉(zhuǎn)換
https://my.oschina.net/mingdongcheng/blog/139263
鎖
鎖機(jī)制:synchronized、Lock、Condition http://blog.csdn.net/vking_wang/article/details/9952063
Java 中的鎖
并發(fā)編程:
Java并發(fā)編程:Thread類(lèi)的使用