面試分三部分,純考記憶回顧問題。問題不全望參考,答案我會(huì)一一給出。以此時(shí)刻警惕自己,注意基礎(chǔ)基礎(chǔ)。
一、App開發(fā)基本知識(shí)
1、介紹自己項(xiàng)目,并列舉解決的重大問題,介紹所采用的奇淫技巧。
2、OC或者安卓的內(nèi)存管理機(jī)制,原理介紹一遍。
3、開發(fā)中什么情況下回遇到循環(huán)引用或者內(nèi)存泄漏,如何解決。
4、容器類,可變和不可變要注意的事項(xiàng)。
5、MVC、MVVM、MVP的區(qū)別,并詳細(xì)介紹MVVM,當(dāng)前哪個(gè)框架便于MVVM開發(fā),并介紹其原理。
6、介紹代碼塊,并解釋代碼塊的原理,當(dāng)引入外部變量后的區(qū)別。
7、介紹消息機(jī)制。
8、App怎么做內(nèi)存優(yōu)化,性能測(cè)試,卡頓怎么處理,瘦包怎么處理。
二、基礎(chǔ)知識(shí)
9、Socket中UDP和TCP、http的區(qū)別,并介紹TCP三次握手,Socket開發(fā)當(dāng)遇到丟包,粘包怎么處理。
10、進(jìn)程和線程的區(qū)別。
11、串行和并行,并發(fā)區(qū)別。
12、同步和異步的區(qū)別和原理。
13、堆和棧的區(qū)別,各自的物理地址是怎么變化,高地址與低地址的。哪些數(shù)據(jù)放在堆,哪些數(shù)據(jù)放在棧,棧與堆內(nèi)存是否有大小限制。
14、堆和棧區(qū)域由誰去管理。
15、解釋線程鎖,哪幾種方式。
16、介紹項(xiàng)目中使用過哪些多線程,當(dāng)必須要等待前面多個(gè)函數(shù)執(zhí)行完之后采取執(zhí)行其他方式,有幾種方式去處理。
17、對(duì)于鏈表是否還記得,并介紹下單鏈表和雙鏈表。
18、介紹自己熟悉的幾種算法。
19、介紹下函數(shù)式編程和響應(yīng)式編程的原理,以及其好處。是否采用過上述方式開發(fā)過項(xiàng)目。
三、UI知識(shí)
20、是否自定義過UI控件,并描述下實(shí)現(xiàn)方式。
21、UI操作一般是在主線程實(shí)現(xiàn),還可以通過什么方式讓UI操作在非主線程中操作并效果和主線程類似。
22、事件傳遞和事件相應(yīng)機(jī)制,通過什么函數(shù)來處理。
23、UI適配這塊是怎么處理的,框架實(shí)現(xiàn)原理基于什么
24、App啟動(dòng)過程,并介紹下。
25、繪制UI時(shí),可采用哪些方式來。