更新時(shí)間:2018-10-16 08:48:03 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3655次
進(jìn)入一線互聯(lián)網(wǎng)公司是很多程序員的夢(mèng)想,但是很多人好不容易有機(jī)會(huì)面試卻遺憾以失敗告終,大公司的面試題目真的有那么難嗎?有沒有什么共性呢?
最近看了一些大公司Java面試的題目,發(fā)現(xiàn)確實(shí)有不少共性,比方說對(duì)于Java集合類的使用都比較重視,比方說基礎(chǔ)知識(shí)都是必考項(xiàng)目,比方說幾乎都會(huì)有一道測(cè)驗(yàn)品行的題目......小編為大家總結(jié)了技術(shù)層面大公司面試時(shí)的一些共性問題,空閑的時(shí)候就學(xué)起來吧,現(xiàn)在正是跳槽旺季,也是大公司的招聘需求最高的時(shí)候,希望能夠?qū)Υ蠹医酉聛淼拿嬖囉兴鶐椭?/p>
接口:Collection
中所周知,Collection是最基本的集合接口,一個(gè)Collection代表一組Object,也就是Collection的元素(Elements)。有的Collection允許相同的元素但有些卻做不到,同理于一部分能排序有些部分卻不支持。JavaSDK提供的類都是繼承自Collection的“子接口”,例如List和Set,但是不提供直接繼承自Collection的類。
用Iterator模式實(shí)現(xiàn)遍歷集合
Collection有一個(gè)很重要的方法:iterator(),返回一個(gè)Iterator(迭代器),用于遍歷集合的所有元素。Iterator模式能夠把訪問邏輯從不同的集合類中抽象出來,以達(dá)到避免向客戶端暴露集合的內(nèi)部結(jié)構(gòu)的目的。比較典型的用法就是:
Iteratorit=collection.iterator();//獲得一個(gè)迭代器
while(it.hasNext()){
Objectobj=it.next();//得到下一個(gè)元素
}
另外,由Collection接口衍生出來的兩個(gè)接口是List和Set。
List接口
List屬于有序的Collection,通過這個(gè)接口可以精確的控制每個(gè)元素插入的位置。用戶可以通過索引來訪問List中的元素,這就類似于Java的數(shù)組。接下來我們還會(huì)提及set,二者不一樣的地方就在于,List是允許有相同元素的。
除此之外不得不提,List還提供了另外一個(gè)listIterator()方法,返回一個(gè)ListIterator接口,跟標(biāo)準(zhǔn)的Iterator接口相比,ListIterator多了一些add()之類的方法,并且能夠添加、刪除、設(shè)定元素,并且可以向前或者向后遍歷。
另外不得不提的就是,實(shí)現(xiàn)List接口的常用類有LinkedList、ArrayList、Vector、Stack等等。
Set接口
Set是一種不包含重復(fù)的元素的Collection,也就是說任意的兩個(gè)元素e1和e2都有e1.equals(e2)=false,Set最多有一個(gè)null元素。顯然,Set的構(gòu)造函數(shù)是有約束條件的,傳入的Collection參數(shù)不能包含重復(fù)的元素。
另外需要重點(diǎn)強(qiáng)調(diào)的就是:一定要小心操作可變對(duì)象(MutableObject)。如果說一個(gè)Set中的可變?cè)馗淖兞俗陨頎顟B(tài)導(dǎo)致Object.equals(Object)=true可能會(huì)導(dǎo)致某些問題出現(xiàn)。
關(guān)于Java集合類的問題和重要知識(shí)點(diǎn)還有很多,不僅僅是理論上的,還有很多實(shí)際操作中的經(jīng)驗(yàn)問題,這些對(duì)于面試都是十分重要的,由于時(shí)間的限制,小編就先為大家總結(jié)到這里,關(guān)注“動(dòng)力節(jié)點(diǎn)Java學(xué)院”微信公眾號(hào),里面為大家持續(xù)推送Java集合類的問題和知識(shí)點(diǎn),助力面試新工作拿到心儀offer。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)