記一次 Android 面試

最近老同事給內(nèi)推了鏈家網(wǎng)的 Android 職位,由于時(shí)間倉(cāng)促,加上近半年多一直處于忙碌地開發(fā)狀態(tài)中,還沒能復(fù)習(xí)便接到了電話面試。

雖然大部分問題都答上來了,原理性的問題基本都把大體流程說出來了,但是時(shí)間間隔太久不少具體細(xì)節(jié)記不太清了,描述得不夠詳細(xì),因此并沒能達(dá)到面試官的期望值。

對(duì)于自己的表現(xiàn),基本在自己的預(yù)期中,談不上好,也談不上太差,還算中規(guī)中矩,只是一面都沒過,自己還是挺失落的(自己真的是有點(diǎn)自信過了頭,覺得不復(fù)習(xí)也能輕松過一面 o(╥﹏╥)o )

之前在內(nèi)推的簡(jiǎn)歷前還特意對(duì)一些項(xiàng)目的功能實(shí)現(xiàn)加了些描述,因?yàn)楣δ芷鋵?shí)挺復(fù)雜的,需要結(jié)合很多知識(shí)點(diǎn),并且自己做了最大化的優(yōu)化,遺憾的是面試官竟然沒有問到任何一個(gè)跟項(xiàng)目相關(guān)的問題(這點(diǎn)跟我面試別人的時(shí)候完全不同,我喜歡根據(jù)項(xiàng)目去拓展問題)。

總的來說面試的問題并不是太難,但是需要靜下心來花時(shí)間好好復(fù)習(xí),趁著面試剛過去兩三天,還能記得大部分面試問題,抽了些時(shí)間將電話面試中的問題做了下整理(后續(xù)會(huì)補(bǔ)上答案),方便自己后續(xù)復(fù)習(xí),也希望能幫助到大家。

題目整理

  1. StringBuilder 和 StringBuffer 區(qū)別

StringBuilder 跟 StringBuffer 一樣,都是用來處理可變的字符序列 , 區(qū)別在于 StringBuilder 是線程不安全的 ,而 StringBuffer 是線程安全的
在運(yùn)行效率上,StringBuilder 比 StringBuffer 要高, 因此在不考慮線程安全的情況下,推薦使用 StringBuilder。

  1. String 在 jvm 中的設(shè)計(jì)原理

深入理解Java:String

  1. synchronized Lock 區(qū)別

詳解synchronized與Lock的區(qū)別與使用
深入研究 Java Synchronize 和 Lock 的區(qū)別與用法

  1. java 中 sleep() 跟 wait() 區(qū)別,項(xiàng)目中 Thread sleep 的應(yīng)用場(chǎng)景
  • sleep() 屬于 Thread 類
    線程調(diào)用此方法后,會(huì)休眠一段時(shí)間,休眠期間,會(huì)暫時(shí)釋放cpu,但并不釋放對(duì)象鎖
  • wait() 屬于 Object 類
    釋放占有的對(duì)象鎖,線程進(jìn)入等待池,釋放cpu,而其他正在等待的線程即可搶占此鎖,獲得鎖的線程即可運(yùn)行程序
  1. sychronized 鎖住方法后方法能被中斷嗎?

不能被中斷,Lock 可以被中斷

  1. java 中 final 修飾方法和修飾類的作用

  2. ArrayList 和 LinkedList 區(qū)別

  1. ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
  2. 對(duì)于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于LinkedList,因?yàn)長(zhǎng)inkedList要移動(dòng)指針。
  3. 對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢(shì),因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。
  1. ArrayList 的實(shí)現(xiàn)原理,是否允許數(shù)據(jù)重復(fù)

Java集合---ArrayList的實(shí)現(xiàn)原理

  1. Java 動(dòng)態(tài)代理 Proxy 類的使用

詳解java動(dòng)態(tài)代理機(jī)制以及使用場(chǎng)景(一)

  1. Java的反射機(jī)制,原理,應(yīng)用場(chǎng)景,getDeclaredField和getField 的 區(qū)別

  2. java 單例設(shè)計(jì)模式,雙重檢測(cè)寫法中兩個(gè)判空的原因

  3. Android 整個(gè)界面布局,父子組件的繪制流程以及單個(gè)子 View 的繪制流程

  4. Android 事件分發(fā)機(jī)制原理相關(guān)代碼,如何處理父子布局的嵌套滾動(dòng)

  5. 自定義 View 中,onMeasure 中 MeasureSpec 的 Spec 有幾種類型, 以及他們的作用,在其值為 EXACTLY 的情況下, 當(dāng)子 View 超過父 View 大小時(shí), 返回的寬高值是什么,是否會(huì)超過父布局

  6. Activity 的啟動(dòng)渲染流程, AMS, ActivityThread 相關(guān)概念

  7. Android 解析 XML 有幾種方式? LayoutInflate 是如何解析 XML 并創(chuàng)建對(duì)象的(面試官是想問這里用的反射的方式創(chuàng)建的對(duì)象)

  8. Android 中代理模式的應(yīng)用場(chǎng)景

  9. Android 中 Binder 的原理機(jī)制, 其中 ServiceManager 傳遞給 Client 的進(jìn)程是否為真實(shí)進(jìn)程

  10. Android 中 Handler 的原理機(jī)制

  11. Android 中 Service 的概念, IntentService 和 Service 區(qū)別,在 IntentService 中是否需要手動(dòng)終止 Service, Service 的使用場(chǎng)景

  12. Android 中跨進(jìn)程通信的方式, 應(yīng)用場(chǎng)景, aidl 相關(guān)概念

  13. Dalvik 和 JVM 的區(qū)別

1.Dalvik指令集是基于寄存器的架構(gòu),執(zhí)行特有的文件格式——dex字節(jié)碼(適合內(nèi)存和處理器速度有限的系統(tǒng))。而JVM是基于棧的。相對(duì)于基于棧的JVM而言,基于寄存器的Dalvik VM實(shí)現(xiàn)雖然犧牲了一些平臺(tái)無關(guān)性,但是它在代碼的執(zhí)行效率上要更勝一籌。
2.每一個(gè)Android 的App是獨(dú)立跑在一個(gè)VM中的。因此一個(gè)App crash只會(huì)影響到自身的VM,不會(huì)影響到其他。Dalvik經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè) Dalvik應(yīng)用作為一個(gè)獨(dú)立的Linux進(jìn)程執(zhí)行。

  1. pathclassloader, dexclassloader 區(qū)別

DexClassLoader和PathClassLoader的區(qū)別

  1. Android 插件化的實(shí)現(xiàn)原理機(jī)制

  2. Android 熱修復(fù)的主流框架對(duì)比及實(shí)現(xiàn)原理

  3. 一個(gè)界面中需要請(qǐng)求多個(gè)接口,所有接口數(shù)據(jù)獲取后再進(jìn)行界面渲染,請(qǐng)問如何來實(shí)現(xiàn)

  4. RxJava 中 merge, zip 的實(shí)現(xiàn)原理

  5. 自定義 View 中如何實(shí)現(xiàn)圓形圖片

  6. 說說你常用的圖片框架以及實(shí)現(xiàn)原理(glide, fresco)

  7. Android 中 65535 問題中 MultiDex 的實(shí)現(xiàn)原理

  8. Android 中內(nèi)存泄漏的常見場(chǎng)景(我回答了項(xiàng)目中遇到的非靜態(tài)內(nèi)部類/匿名內(nèi)部類,Handler,異步操作引用了 Context,面試官多次詢問是否還有其他場(chǎng)景后補(bǔ)充了自定義 View 中 TypeArray 使用后未調(diào)用 recycle()方法也會(huì)泄漏)

  9. Android 中如何開啟新的進(jìn)程,Manifest 中 process 參數(shù)命名加 “:” 什么作用

  10. 如何快速將一個(gè)單向鏈表反序操作

  11. 冒泡排序的實(shí)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容