ios開發(fā)現(xiàn)在行情如何?
北上廣深iOS開發(fā)者薪資曝光,想炒老板的務(wù)必收好這份面試題!
作為一名ios開發(fā)者,你可以在XCode中使用Swift編寫應(yīng)用程序。當(dāng)然,你也可以用Object-C,不過現(xiàn)在大部分開發(fā)者都已經(jīng)全面轉(zhuǎn)變?yōu)槭褂肧wift編程了,畢竟這是蘋果官方大力支持的編程語言。那么,作為一名ios開發(fā)人員,大概薪資是多少呢?
如果你加入了王者榮耀的開發(fā)團隊,那可以直接忽略本文了,畢竟你們已經(jīng)走向人生巔峰,如果只是一般公司的iOS開發(fā)者,根據(jù)2017年年初發(fā)布的薪資調(diào)查報告顯示,大部分人的基本薪資在5k以上,包括1年經(jīng)驗都不到的畢業(yè)生。
拿到這些薪資的第一步就是成功通過面試,以下這些是iOS開發(fā)人員面試中的常見問題,你會多少呢?
1、“autorelease” 嵌套, 系統(tǒng)是怎么處理的?
2、解釋如何在Xcode項目中添加框架?
在Xcode項目中添加框架:
從項目導(dǎo)航器的窗口左側(cè)選擇項目文件
在項目設(shè)置中選擇要添加框架的目標(biāo)
選擇“Build Phases”選項卡,然后選擇“Link Binary With Libraries”旁邊的小三角,以查看應(yīng)用程序中的所有框架
要添加框架,請單擊框架列表下方的“+”號
要選擇多個框架,請在選擇框架時按住 command鍵
3、WebView突然彈出廣告或者垃圾信息?是什么原因造成的?如何解決?
WebView突然彈出廣告肯定是H的錯!當(dāng)然可以進行避免,通過WebView的delegate進行URL截取,然后拿關(guān)鍵詞與常出現(xiàn)的廣告注入標(biāo)識庫進行匹配,從而達到攔截的作用。
4、bound和frame有什么區(qū)別?
frame:視圖的frame是矩形的,表示為與其包含的視圖對應(yīng)的位置(X,Y)和大?。▽挾?,高度)
Bound:視圖的Bound也是矩形的,表示為與其自己的坐標(biāo)系(0,0)、相對應(yīng)的位置(X,Y)和大?。▽挾?,高度)
5、ASI和AFNetWorking區(qū)別?核心實現(xiàn)上有什么不同?
ASI是基于底層CSNetworking框架進行開發(fā),注重于網(wǎng)絡(luò)數(shù)據(jù)的緩存,ASI太重,已經(jīng)無人維護。AFNetworking是基于NSURLConnection框架進行開發(fā)的,注重于網(wǎng)絡(luò)數(shù)據(jù)的處理,快速請求的過程,使用很方便。
6、ARC 原理是什么?
ARC (Automatic Reference Counting), 在對象被創(chuàng)建時,ARC會保存一大堆關(guān)于該對象的信息:對象類型,所有的屬性等等,當(dāng)我們不再需要該對象的時候,ARC會幫助我們銷毀該對象。
當(dāng)我們`alloc``init`一個對象實例時,編譯器會在該實例使用完后插入`objc_release`去銷毀該對象。如果我們是在使用properties的時候,該property的getter會被寫成:
```objective-c
- (Test *)test {
return objc_retainAutoreleaseReturnValue(_test);
}
```
可以看到,所有properties都被retain/autorelease了, 當(dāng)引用properties時,編譯器還會將caller改寫為:`objc_retainAutoreleaseReturnValue([self test])`. 這里出現(xiàn)了兩次的retain/autorelease,而編譯器會優(yōu)化的只使用一次。
7、請簡單說明多線程技術(shù)的優(yōu)點和缺點?
8、Xcode中PO命令的用法是什么?
PO命令在調(diào)試期間很有用。在正常情況下,要打印變量的值,必須將鼠標(biāo)指針移到那里,然后選擇打印輸出打印值。使用PO命令,只需在輸出窗口中輸入“PO變量名稱”即可打印數(shù)值,然后按下Enter鍵。
9、Xcode中兩個不同的smart groups是什么?
smart groups大致分為兩類:
簡單過濾smart groups:它基于shell中使用的文件名“globbing”匹配文件
簡單表達smart groups:它使用正則表達式匹配文件
10、解釋如何刪除在Xcode中創(chuàng)建的smart groups?
無法單獨刪除smart groups,因此可以通過以下兩種方式刪除Xcode中的smart groups:
刪除保存在單個項目中的所有smart groups
或刪除項目中可用的所有全局smart groups
11、__block和__weak修飾符的區(qū)別是什么?
12、iOS本地數(shù)據(jù)存儲都有哪幾種方式?iOS如何實現(xiàn)復(fù)雜對象的存儲?
13、在Xcode中打開“Code Snippet Library”的捷徑是什么?
(CMD + OPT + Cntrl + 2)是在Xcode中打開“Code Snippet Library”的捷徑。
14、怎樣實現(xiàn)一個singleton?
15、提到Xcode中可用的構(gòu)建階段有什么?
Xcode中有三個構(gòu)建階段,默認情況下是可用的:
編譯源代碼
鏈接二進制庫
復(fù)制包資源
16、簡述應(yīng)用程序按Home鍵進入后臺時的生命周期,以及從后臺回到前臺時的生命周期?
進入后臺生命周期走:
- (void)applicationWillResignActive:(UIApplication*)application;
- (void)applicationDidEnterBackground:(UIApplication*)application;
回到前臺生命周期走:
- (void)applicationWillEnterForeground:(UIApplication*)application;
- (void)applicationDidBecomActive:(UIApplication*)application;
17、為什么寫代理的屬性都是assign而不是retain?請舉例說明。
防止循環(huán)引用:
18、超出父視圖部分無法響應(yīng)事件的解決方案?
原因:從下往上依次傳遞遇到其中一個無法傳遞,那么便跳過它,傳遞給下一個能傳遞的或者能響應(yīng)的
解決:重寫方法
19、dispatch_group_async的使用?
dispatch_group_async可以實現(xiàn)監(jiān)聽一組任務(wù)是否完成,完成后得到通知執(zhí)行其他的操作。這個方法很有用,比如你執(zhí)行三個下載任務(wù),當(dāng)三個任務(wù)都下載完成后你才通知界面說完成的了。下面是一段例子代碼:
20、描述一個你遇到過的retain cycle例子