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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】2020面試必知:中高級工程師面試題集整理(題目+答案)

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

溫馨提示

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

評論

0/150

提交評論