美團(tuán)
畫(huà)一個(gè)原生和webview混合開(kāi)發(fā)的框架,寫出主要的方法
runtime 怎么把嵌套結(jié)構(gòu)的數(shù)據(jù)賦值給模型程腹,如何優(yōu)化一下
什么是響應(yīng)鏈离唬,它是怎么工作的子眶?
如何訪問(wèn)并修改一個(gè)類的私有屬性吓懈?
iOS Extension 是什么蝙眶?能列舉幾個(gè)常用的 Extension 么搔体?
如何把一個(gè)包含自定義對(duì)象的數(shù)組序列化到磁盤恨樟?
Apple Pay 是什么?它的大概工作流程是怎樣的疚俱?
iOS 的沙盒目錄結(jié)構(gòu)是怎樣的劝术? App Bundle 里面都有什么?
iOS 的簽名機(jī)制大概是怎樣的呆奕?
iOS 7的多任務(wù)添加了哪兩個(gè)新的 API? 各自的使用場(chǎng)景是什么养晋?
Objective-C 的 class 是如何實(shí)現(xiàn)的?Selector 是如何被轉(zhuǎn)化為 C 語(yǔ)言的函數(shù)調(diào)用的梁钾?
UIScrollView 大概是如何實(shí)現(xiàn)的绳泉,它是如何捕捉、響應(yīng)手勢(shì)的姆泻?
Objective-C 如何對(duì)已有的方法零酪,添加自己的功能代碼以實(shí)現(xiàn)類似記錄日志這樣的功能冒嫡?
+load 和 +initialize 的區(qū)別是什么?
如何讓 Category 支持屬性四苇?
NSOperation 相比于 GCD 有哪些優(yōu)勢(shì)孝凌?
strong / weak / unsafe_unretained 的區(qū)別?
如何為 Class 定義一個(gè)對(duì)外只讀對(duì)內(nèi)可讀寫的屬性?
Objective-C 中月腋,meta-class 指的是什么蟀架?
UIView 和 CALayer 之間的關(guān)系?
+[UIView animateWithDuration:animations:completion:] 內(nèi)部大概是如何實(shí)現(xiàn)的榆骚?
什么時(shí)候會(huì)發(fā)生「隱式動(dòng)畫(huà)」辜窑?
如何處理異步的網(wǎng)絡(luò)請(qǐng)求?
frame 和 bounds 的區(qū)別是什么寨躁?
如何把一張大圖縮小為1/4大小的縮略圖穆碎?
一個(gè) App 會(huì)處于哪些狀態(tài)?
Push Notification 是如何工作的职恳?
什么是 Runloop所禀?
Toll-Free Bridging 是什么?什么情況下會(huì)使用放钦?
當(dāng)系統(tǒng)出現(xiàn)內(nèi)存警告時(shí)會(huì)發(fā)生什么色徘?
什么是 Protocol,Delegate 一般是怎么用的操禀?
autorelease 對(duì)象在什么情況下會(huì)被釋放褂策?
UIWebView 有哪些性能問(wèn)題?有沒(méi)有可替代的方案颓屑。
為什么 NotificationCenter 要 removeObserver? 如何實(shí)現(xiàn)自動(dòng) remove?
當(dāng) TableView 的 Cell 改變時(shí)斤寂,如何讓這些改變以動(dòng)畫(huà)的形式呈現(xiàn)?
什么是 Method Swizzle揪惦,什么情況下會(huì)使用遍搞?
1,下面代碼在按鈕點(diǎn)擊后器腋,在ARC下會(huì)發(fā)生什么溪猿,MRC下呢?為什么纫塌?
@property(nonatomic, assign) void(^block)();
- (void)viewDidLoad {
[superviewDidLoad];
int value = 10;
void(^blockC)() = ^{
NSLog(@"just a block === %d", value);
};
NSLog(@"%@", blockC);
_block = blockC;
}
- (IBAction)action:(id)sender {
NSLog(@"%@", _block);
}
2诊县,在ARC環(huán)境下這段代碼為什么不會(huì)崩潰?
@property(nonatomic, weak) void(^block)();
- (void)viewDidLoad {
[super viewDidLoad];
void(^ __weak blockA)() = ^{
NSLog(@"just a block");
};
_block = blockA;
}
- (IBAction)action:(id)sender {
_block();
}
3措左,下面是一個(gè)員工表依痊,manager_id表示對(duì)應(yīng)的boss的ID。通過(guò)一個(gè)SQL找出下表中比boss工資還高的人媳荒。抗悍。。钳枕。
id name salary manager_id
1 Noah 70000 NULL
2 西蘭花 80000 1
3 椰菜花 80000 NULL
4 沒(méi)錢花 80000 3
輸出格式為:
name
西蘭花
4缴渊,寫一個(gè)函數(shù),輸入一個(gè)數(shù)如38鱼炒,拆分 3 + 8 = 11衔沼,1 + 1 = 2,最后2無(wú)法拆分就返回(偽代碼也行)
5昔瞧,通過(guò)runtime添加的“關(guān)聯(lián)對(duì)象”和類的實(shí)例變量有什么區(qū)別指蚁?使用時(shí)要注意什么?
6自晰,用一個(gè)生活中的例子來(lái)說(shuō)說(shuō)同步和異步凝化。
7,線程間通信在OC中有幾種方式酬荞?分別是搓劫?常用那種?
8混巧,使用快速枚舉迭代一個(gè)可變數(shù)組時(shí)需要注意什么問(wèn)題枪向?怎么避免?
9咧党,什么是面向?qū)ο蟮亩鄳B(tài)性秘蛔?
10,UIViewController的presentViewController和UINavigationController的pushViewController方法分別多用于什么交互場(chǎng)景傍衡?
11深员,NSOperation和GCD的區(qū)別是什么?前者多用于什么場(chǎng)景蛙埂?
12辨液,面向接口編程指的是什么?為什么說(shuō)面向?qū)崿F(xiàn)編程是一種錯(cuò)誤的編程方式箱残?
13滔迈,在iOS開(kāi)發(fā)中遇到那些類族(Class Cluster) ?如NSNumber這種被辑。為什么需要這種設(shè)計(jì)方式燎悍?
14,javascript的原型鏈和OC的繼承有什么區(qū)別盼理?
15谈山,Hybrid開(kāi)發(fā)的優(yōu)勢(shì)在哪里?目前有那些框架可以實(shí)現(xiàn)Hybrid開(kāi)發(fā)宏怔?
16奏路,使用了ARC是不是就等于沒(méi)有內(nèi)存泄漏了畴椰?如果不是的話請(qǐng)舉例。
17鸽粉,下面代碼中為什么可以直接用self斜脂?
[UIView animateWithDuration:1 animations:^{
self.view.backgroundColor = [UIColor yellowColor];
}];
下面這段代碼可以用self嗎?為什么触机?
- (void)doSomething {
[BlockClass doSomethingUseBlock:^{
NSLog(@"%@", self);
}];
}
18帚戳,進(jìn)程的內(nèi)存布局是怎樣的?
19儡首,在GCD中片任,那幾種場(chǎng)景會(huì)出現(xiàn)死鎖的現(xiàn)象?怎么避免蔬胯?
20对供,怎么用NSOperation封裝一個(gè)異步請(qǐng)求?這個(gè)Operation需要放到NSOperationQueue里調(diào)度的氛濒。
21犁钟,CoreFoundation和Foundation有什么區(qū)別?
22泼橘,怎么判斷兩個(gè)鏈表是雙交的涝动?
23,怎么判斷一個(gè)鏈表存在環(huán)?
24炬灭,當(dāng)一個(gè)View的bounds原點(diǎn)不為0的時(shí)候會(huì)出現(xiàn)什么情況醋粟?
25,OC的數(shù)組是怎么實(shí)現(xiàn)的重归?和C的數(shù)組區(qū)別在米愿?簡(jiǎn)單說(shuō)一下即可。
26鼻吮,weak和assign有什么區(qū)別育苟?
27,setNeedLayout的作用是什么椎木?
28违柏,什么時(shí)候用NS_OPTIONS,NS_ENUM?
微博算法題
1香椎、64位操作系統(tǒng)漱竖,64位編譯器 sizeof(int) sizeof(char) sizeof(int *) sizeof(char *) 分別是多少
2、64位操作系統(tǒng)畜伐,一個(gè)結(jié)構(gòu) struct aStruct{int a; char b; int c; char d}; 此時(shí) sizeof(struct aStruct) 是多少馍惹? 如果是 struct aStruct{int a; char b; char d; int c};此時(shí) sizeof(struct aStruct) 是多少?
3万矾、全局并發(fā)隊(duì)列和自定義并發(fā)隊(duì)列的區(qū)別悼吱,如果現(xiàn)在有兩種任務(wù)需要并發(fā)處理,其中一種是:任務(wù)單位小良狈,數(shù)量多 另一種是:任務(wù)單位大后添,數(shù)量少 分別應(yīng)該使用哪種隊(duì)列處理?為什么们颜?
4、為了防止循環(huán)引用猎醇,我們都知道使用weak(self); 但是程序中偶爾會(huì)見(jiàn)到strong(self); 這種用法窥突,請(qǐng)問(wèn):strong(self)的應(yīng)用場(chǎng)景是什么?
5硫嘶、為了防止循環(huán)引用阻问,我們都知道使用weak(self),是不是所有的block 如果內(nèi)部需要使用對(duì)象本身沦疾,都需要使用weakself称近?舉例說(shuō)明
6、現(xiàn)有一個(gè)對(duì)象a哮塞,對(duì)象a 強(qiáng)持有了自定義對(duì)象b刨秆、c、d, 是不是可以說(shuō)忆畅,當(dāng)a的dealloc 只要執(zhí)行了 我就可以認(rèn)為內(nèi)存沒(méi)有泄漏了衡未?如果不是的話,請(qǐng)舉出例子讓a對(duì)象完全釋放
7家凯、類方法和對(duì)象方法的區(qū)別何在缓醋?類方法的生存周期? 相對(duì)與對(duì)象方法绊诲,哪類處理適合使用類方法送粱?
8、kvo監(jiān)聽(tīng)是否一定是在主線程完成的掂之?如果不是抗俄,請(qǐng)舉例說(shuō)明
9、某同事開(kāi)啟了一個(gè)NSTimer,但是無(wú)論如何這個(gè)timer都跑不起來(lái)世舰,作為他的老大橄镜,代碼看起來(lái)沒(méi)什么問(wèn)題,以你10年ios的開(kāi)發(fā)經(jīng)驗(yàn)冯乘,第一反應(yīng)是問(wèn)題出在哪洽胶?
10、多線程編程種,死鎖產(chǎn)生的條件是什么姊氓?死鎖是不是只在主線程發(fā)生丐怯?
11、舉出一個(gè)例子翔横,說(shuō)明dispatch_sync 的應(yīng)用場(chǎng)景
12读跷、如何創(chuàng)建一個(gè)常駐線程?
13禾唁、我們知道效览,多線程讀寫,只要有1個(gè)寫荡短,就有可能出現(xiàn)并發(fā)問(wèn)題丐枉,解決方案可以用鎖,但我們又知道鎖的效率不高掘托,并且破壞程序結(jié)構(gòu)瘦锹,加鎖的代碼通常并不易理清邏輯,那么闪盔,還有什么樣的手段能實(shí)現(xiàn)這個(gè)目的弯院?(考慮隊(duì)列) 如何實(shí)現(xiàn)?
14泪掀、基于13題的前提听绳,假如現(xiàn)在有一個(gè)模型,寫操作較少异赫,但是讀操作非常多辫红,如何優(yōu)化13題的模型?(考慮隊(duì)列和dispatch_barrier函數(shù)族)
15祝辣、dispatch_group函數(shù)組的應(yīng)用場(chǎng)景是什么贴妻?假如現(xiàn)在讓你使用信號(hào)量(dispatch_semphore)來(lái)模擬類似的功能,如何實(shí)現(xiàn)蝙斜?
16名惩、原子操作atomic 修飾的變量本身是否可以認(rèn)為是線程安全的? 如果不是孕荠,那什么類型的變量可以認(rèn)為是安全的娩鹉,又有什么樣的變量是不安全的?舉例說(shuō)明即可