筆試時間 30分鐘
一、Objective-C基礎(chǔ)部分
- Objective-C是一門面向?qū)ο笳Z言,那么面向?qū)ο蟮?要素是什么?
- ARC為什么可以自動管理內(nèi)存?在哪些情況下ARC無效?
- 如何解決UITableView滑動卡頓的問題?
- 自己實現(xiàn)的最有成就感的一個自定義控件是什么,簡單介紹下亮點在哪里?核心實現(xiàn)邏輯是什么?
- 在A頁面中,點擊按鈕跳轉(zhuǎn)到B頁面,B頁面在用戶操作后生成了一些數(shù)據(jù),數(shù)據(jù)要回傳A頁面。回傳數(shù)據(jù)有幾種方案?
- 平時用坐標(biāo)布局還是AutoLayout自動布局,有何優(yōu)劣?
- 數(shù)據(jù)庫表結(jié)構(gòu)升級有哪幾種方案?
- iOS系統(tǒng)中你用過哪幾種持久化存儲方式,講講它們的適用場景。
- 風(fēng)格糾錯。如下所示代碼,有哪幾處風(fēng)格你覺得有問題,請圈出。

風(fēng)格糾錯
二、Swift基礎(chǔ)部分
- String和String?有什么區(qū)別?
- 有以下swift代碼
let str1: String? = "123"
let str2: String! = "456"
let str3 = str1 ?? str2
請問str3是什么類型的? - 現(xiàn)在有一個實體類如下所示,請問如何實現(xiàn)NSCopying協(xié)議。
class UserEntity : NSObject {
private var userName: NSString!
private var headImageURLStr: NSString!
init(userName: NSString, headImageURLStr: NSString) {
super.init()
self.userName = userName
self.headImageURLStr = headImageURLStr
}
override init() {
super.init()
}
func copyWithZone(zone: NSZone) -> AnyObject {
}
}
- guard關(guān)鍵字有何用?if let有何用?if let … where 有何用?
- 列舉switch的case支持的數(shù)據(jù)類型。
- 說說Swift中struct、enum、class分別是什么拷貝類型。
- Swift代碼行末需要以分號結(jié)尾嗎?
- 定義一個Swift閉包。
- 定義一個Swift循環(huán)。
三、進(jìn)階部分
- 使用block時什么情況會發(fā)生循環(huán)引用,如何解決?在調(diào)用諸如UIView的動畫block時,是否需要注意循環(huán)引用?
- 如果在一個viewDidLoad()中,定義了一個定時器
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(handle2SecondTimer:), userInfo: nil, repeats: true)
那么定時器對于ViewController實例的正常銷毀是否會有影響?如果有影響,有何影響、如何解決? - 我們現(xiàn)在做的是社交類應(yīng)用,擁有聊天功能,用戶跟每一個好友之間,如果聊過天都會生成一個會話對象,且需要持久化存儲。那么問題來了,如果有若干個子線程和一個主線程都需要訪問會話對象數(shù)組,應(yīng)如何實現(xiàn)多線程同步?有幾種方法?簡單說說效率如何?