【移動(dòng)應(yīng)用開發(fā)技術(shù)】2020面試必知:中高級(jí)工程師面試題集整理(題目+答案)_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】2020面試必知:中高級(jí)工程師面試題集整理(題目+答案)_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】2020面試必知:中高級(jí)工程師面試題集整理(題目+答案)_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】2020面試必知:中高級(jí)工程師面試題集整理(題目+答案)_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】2020面試必知:中高級(jí)工程師面試題集整理(題目+答案)

適合中高級(jí)工程師。由于內(nèi)容過多,將會(huì)分為上下兩部分。希望能夠幫到一些朋友,如果幫助到你,希望能夠點(diǎn)個(gè)贊。沒有單獨(dú)分出來,面試題目都是穿插的。因?yàn)橛行┦峦饷嬖囘^程中遇到的,我就又加上去了??傊闩诉@些,基本是沒有問題了。如果是bat那些企業(yè),你還得準(zhǔn)備算法,jvm這些知識(shí)。好了,廢話不多說了。1、java中==和equals和hashCode的區(qū)別基本數(shù)據(jù)類型的==比較的值相等.類的==比較的內(nèi)存的地址,即是否是同一個(gè)對(duì)象,在不覆蓋equals的情況下,同比較內(nèi)存地址,原實(shí)現(xiàn)也為==,如String等重寫了equals方法.hashCode也是Object類的一個(gè)方法。返回一個(gè)離散的int型整數(shù)。在集合類操作中使用,為了提高查詢速度。(HashMap,HashSet等比較是否為同一個(gè))如果兩個(gè)對(duì)象equals,Java運(yùn)行時(shí)環(huán)境會(huì)認(rèn)為他們的hashcode一定相等。如果兩個(gè)對(duì)象不equals,他們的hashcode有可能相等。如果兩個(gè)對(duì)象hashcode相等,他們不一定equals。如果兩個(gè)對(duì)象hashcode不相等,他們一定不equals。2、int與integer的區(qū)別int基本類型integer對(duì)象int的封裝類3、String、StringBuffer、StringBuilder區(qū)別String:字符串常量不適用于經(jīng)常要改變值得情況,每次改變相當(dāng)于生成一個(gè)新的對(duì)象StringBuffer:字符串變量(線程安全)StringBuilder:字符串變量(線程不安全)確保單線程下可用,效率略高于StringBuffer4、什么是內(nèi)部類?內(nèi)部類的作用內(nèi)部類可直接訪問外部類的屬性Java中內(nèi)部類主要分為成員內(nèi)部類、局部內(nèi)部類(嵌套在方法和作用域內(nèi))、匿名內(nèi)部類(沒構(gòu)造方法)、靜態(tài)內(nèi)部類(static修飾的類,不能使用任何外圍類的非static成員變量和方法,不依賴外圍類)5、進(jìn)程和線程的區(qū)別6、final,finally,finalize的區(qū)別final:修飾類、成員變量和成員方法,類不可被繼承,成員變量不可變,成員方法不可重寫finally:與try...catch...共同使用,確保無論是否出現(xiàn)異常都能被調(diào)用到finalize:類的方法,垃圾回收之前會(huì)調(diào)用此方法,子類可以重寫finalize()方法實(shí)現(xiàn)對(duì)資源的回收7、Serializable和Parcelable的區(qū)別SerializableJava序列化接口在硬盤上讀寫讀寫過程中有大量臨時(shí)變量的生成,內(nèi)部執(zhí)行大量的i/o操作,效率很低。ParcelableAndroid序列化接口效率高使用麻煩在內(nèi)存中讀寫(AS有相關(guān)插件一鍵生成所需方法),對(duì)象不能保存到磁盤中8、靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫?以及原因?可繼承不可重寫而是被隱藏如果子類里面定義了靜態(tài)方法和屬性,那么這時(shí)候父類的靜態(tài)方法或?qū)傩苑Q之為"隱藏"。如果你想要調(diào)用父類的靜態(tài)方法和屬性,直接通過父類名.方法或變量名完成。9、成員內(nèi)部類、靜態(tài)內(nèi)部類、局部內(nèi)部類和匿名內(nèi)部類的理解,以及項(xiàng)目中的應(yīng)用10、string轉(zhuǎn)換成integer的方式及原理StringintegerIntrger.parseInt(string);IntegerstringInteger.toString();11、哪些情況下的對(duì)象會(huì)被垃圾回收機(jī)制處理掉?12、靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別,什么場(chǎng)景使用?靜態(tài)代理類:由程序員創(chuàng)建或由特定工具自動(dòng)生成源代碼,再對(duì)其編譯。在程序運(yùn)行前,代理類的.class文件就已經(jīng)存在了。動(dòng)態(tài)代理類:在程序運(yùn)行時(shí),運(yùn)用反射機(jī)制動(dòng)態(tài)創(chuàng)建而成。14、Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?答:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn)重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn).16、說說你對(duì)Java反射的理解17、說說你對(duì)Java注解的理解18、Java中String的了解在源碼中string是用final進(jìn)行修飾,它是不可更改,不可繼承的常量。19、String為什么要設(shè)計(jì)成不可變的?20、Object類的equal和hashCode方法重寫,為什么?21、List,Set,Map的區(qū)別26、ArrayMap和HashMap的對(duì)比1、存儲(chǔ)方式不同HashMap內(nèi)部有一個(gè)HashMapEntry[]對(duì)象,每一個(gè)鍵值對(duì)都存儲(chǔ)在這個(gè)對(duì)象里,當(dāng)使用put方法添加鍵值對(duì)時(shí),就會(huì)new一個(gè)HashMapEntry對(duì)象,2、添加數(shù)據(jù)時(shí)擴(kuò)容時(shí)的處理不一樣,進(jìn)行了new操作,重新創(chuàng)建對(duì)象,開銷很大。ArrayMap用的是copy數(shù)據(jù),所以效率相對(duì)要高。3、ArrayMap提供了數(shù)組收縮的功能,在clear或remove后,會(huì)重新收縮數(shù)組,是否空間4、ArrayMap采用二分法查找;29、HashMap和HashTable的區(qū)別1HashMap不是線程安全的,效率高一點(diǎn)、方法不是Synchronize的要提供外同步,有containsvalue和containsKey方法。hashtable是,線程安全,不允許有null的鍵和值,效率稍低,方法是是Synchronize的。有contains方法方法。Hashtable繼承于Dictionary類30、HashMap與HashSet的區(qū)別31、HashSet與HashMap怎么判斷集合元素重復(fù)?HashSet不能添加重復(fù)的元素,當(dāng)調(diào)用add(Object)方法時(shí)候,首先會(huì)調(diào)用Object的hashCode方法判hashCode是否已經(jīng)存在,如不存在則直接插入元素;如果已存在則調(diào)用Object對(duì)象的equals方法判斷是否返回true,如果為true則說明元素已經(jīng)存在,如為false則插入元素。33、ArrayList和LinkedList的區(qū)別,以及應(yīng)用場(chǎng)景34、數(shù)組和鏈表的區(qū)別35、開啟線程的三種方式?36、線程和進(jìn)程的區(qū)別?線程是進(jìn)程的子集,一個(gè)進(jìn)程可以有很多線程,每條線程并行執(zhí)行不同的任務(wù)。不同的進(jìn)程使用不同的內(nèi)存空間,而所有的線程共享一片相同的內(nèi)存空間。別把它和棧內(nèi)存搞混,每個(gè)線程都擁有單獨(dú)的棧內(nèi)存用來存儲(chǔ)本地?cái)?shù)據(jù)。38、run()和start()方法區(qū)別這個(gè)問題經(jīng)常被問到,但還是能從此區(qū)分出面試者對(duì)Java線程模型的理解程度。start()方法被用來啟動(dòng)新創(chuàng)建的線程,而且start()內(nèi)部調(diào)用了run()方法,這和直接調(diào)用run()方法的效果不一樣。當(dāng)你調(diào)用run()方法的時(shí)候,只會(huì)是在原來的線程中調(diào)用,沒有新的線程啟動(dòng),start()方法才會(huì)啟動(dòng)新線程。39、如何控制某個(gè)方法允許并發(fā)訪問線程的個(gè)數(shù)?semaphore.acquire()請(qǐng)求一個(gè)信號(hào)量,這時(shí)候的信號(hào)量個(gè)數(shù)-1(一旦沒有可使用的信號(hào)量,也即信號(hào)量個(gè)數(shù)變?yōu)樨?fù)數(shù)時(shí),再次請(qǐng)求的時(shí)候就會(huì)阻塞,直到其他線程釋放了信號(hào)量)semaphore.release()釋放一個(gè)信號(hào)量,此時(shí)信號(hào)量個(gè)數(shù)+140、在Java中wait和seelp方法的不同;Java程序中wait和sleep都會(huì)造成某種形式的暫停,它們可以滿足不同的需要。wait()方法用于線程間通信,如果等待條件為真且其它線程被喚醒時(shí)它會(huì)釋放鎖,而sleep()方法僅僅釋放CPU資源或者讓當(dāng)前線程停止執(zhí)行一段時(shí)間,但不會(huì)釋放鎖。41、談?wù)剋ait/notify關(guān)鍵字的理解42、什么導(dǎo)致線程阻塞?線程如何關(guān)閉?43、如何保證線程安全?1.synchronized;2.Object方法中的wait,notify;3.ThreadLocal機(jī)制來實(shí)現(xiàn)的。44、如何實(shí)現(xiàn)線程同步?1、synchronized關(guān)鍵字修改的方法。2、synchronized關(guān)鍵字修飾的語句塊3、使用特殊域變量(volatile)實(shí)現(xiàn)線程同步45、線程間操作ListListlist=Collections.synchronizedList(newArrayList());46、談?wù)剬?duì)Synchronized關(guān)鍵字,類鎖,方法鎖,重入鎖的理解49、synchronized和volatile關(guān)鍵字的區(qū)別51、ReentrantLock、synchronized和volatile比較ava在過去很長一段時(shí)間只能通過synchronized關(guān)鍵字來實(shí)現(xiàn)互斥,它有一些缺點(diǎn)。比如你不能擴(kuò)展鎖之外的方法或者塊邊界,嘗試獲取鎖時(shí)不能中途取消等。Java5通過Lock接口提供了更復(fù)雜的控制來解決這些問題。ReentrantLock類實(shí)現(xiàn)了Lock,它擁有與synchronized相同的并發(fā)性和內(nèi)存語義且它還具有可擴(kuò)展性。53、死鎖的四個(gè)必要條件?56、什么是線程池,如何使用?57、Java中堆和棧有什么不同?為什么把這個(gè)問題歸類在多線程和并發(fā)面試題里?因?yàn)闂J且粔K和線程緊密

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論