一、陌陌(2019-07)
1训裆、給person類中有一個(gè)成員變量:NSString *name挤忙;給此成員變量寫setter方法(非arc模式下)
2逊桦、簡(jiǎn)述一下oc的內(nèi)存管理模式(包括alloc、retain卜高、copy弥姻,release,autorelease掺涛,dealloc這些方法的理解)
3庭敦、描述autorelease對(duì)象釋放時(shí)機(jī),簡(jiǎn)述aotoreleasePool的工作機(jī)制
4鸽照、在Object-C中如何判定兩個(gè)對(duì)象完全相同
5螺捐、以下代碼作為一個(gè)UIButton的響應(yīng)方法會(huì)有什么問題?能看到log么
- (void)clickButton {
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"momo run");
});
}
6、在一個(gè)類中retain一個(gè)NSTimer類型的成員變量會(huì)有問題么定血?如果有請(qǐng)簡(jiǎn)述問題產(chǎn)生的根本原因
擴(kuò)展:(按照自己對(duì)Object-C的理解發(fā)散即可)
1赔癌、簡(jiǎn)述C的函數(shù)調(diào)用和Object-C的消息傳遞的機(jī)制的區(qū)別
2、Object-C中的category的實(shí)現(xiàn)原理和runtime有關(guān)么澜沟?如果有關(guān)請(qǐng)解釋一下相關(guān)聯(lián)系
3灾票、是否使用過NSOperationQueue和GCD來管理線程??jī)烧哂惺裁磪^(qū)別茫虽??jī)烧叩膶?shí)現(xiàn)機(jī)制的根本不同之處刊苍?(如果覺得要寫的太多可以寫面談)
4、列舉在iOS開發(fā)中擅長(zhǎng)的模塊和其特點(diǎn)使用時(shí)的注意問題等(例如濒析,音頻錄制和播放正什,mapkit定位等)
5、簡(jiǎn)述自己經(jīng)常使用的第三方庫和其優(yōu)缺點(diǎn)(列舉1号杏,2個(gè)即可)
關(guān)于你婴氮,如果你與一下Tag有關(guān),請(qǐng)打勾
- 有微博
- 經(jīng)常熬夜
- 寫過5篇技術(shù)blog
- 會(huì)翻墻
- 寫過C
- 寫過C++
- 會(huì)給iphone越獄
- 買過很多技術(shù)書籍
- 會(huì)下載很多應(yīng)用
二盾致、京東
1主经、請(qǐng)寫出以下代碼輸出
int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a + 1);
printf("%d, %d", *(a + 1), *(ptr + 1));
2、寫一個(gè)標(biāo)準(zhǔn)宏Max庭惜,并給出以下代碼的輸出
int array[5] = {1, 2, 3, 4, 5};
int *p = &array[0];
int max = Max(*p++, 1);
printf("%d %d", max, *p);
3罩驻、在一個(gè)對(duì)象的方法里, self.name=@"object"; name=@"object"有什么不同?
4护赊、怎樣使用performSelector傳入3個(gè)以上參數(shù)惠遏,其中一個(gè)為結(jié)構(gòu)體?
5百揭、UITableViewCell上有個(gè)UILabel爽哎,顯示NSTimer實(shí)現(xiàn)的秒表時(shí)間,手指滾動(dòng)cell過程中器一,label是否刷新课锌,為什么?
6祈秕、有a渺贤、b、c请毛、d 4個(gè)異步請(qǐng)求志鞍,如何判斷a、b方仿、c固棚、d都完成執(zhí)行统翩?如果需要a、b此洲、c厂汗、d順序執(zhí)行,該如何實(shí)現(xiàn)呜师?
7娶桦、使用block有什么好處?使用NSTimer寫出一個(gè)使用block顯示(在UILabel上)秒表的代碼汁汗。
8衷畦、一個(gè)view已經(jīng)初始化完畢,view上面添加了n個(gè)button(可能使用循環(huán)創(chuàng)建)知牌,除用view的tag之外祈争,還可以采用什么辦法來找到自己想要的button來修改Button的值。
9角寸、tableview在滑動(dòng)時(shí)铛嘱,有時(shí)候會(huì)大量加載本地圖片,這時(shí)候會(huì)很卡袭厂,如何解決加載耗時(shí)過長(zhǎng)導(dǎo)致不流暢的問題?
10球匕、給定一個(gè)如下的字符串(1,(2,3),(4,(5,6)7))括號(hào)內(nèi)的元素可以是數(shù)字纹磺,也可以是括號(hào),請(qǐng)實(shí)現(xiàn)一個(gè)算法清除嵌套的括號(hào)亮曹,比如把上面的表達(dá)式的變成:(1,2,3,4,5,6,7)橄杨,表達(dá)式有誤時(shí)請(qǐng)報(bào)錯(cuò)。
三照卦、優(yōu)酷
1式矫、如何聲明私有變量和私有方法?
2役耕、assign采转、retain、copy分別起什么作用瞬痘?重寫下面的屬性的getter/setter方法
3故慈、如何聲明一個(gè)delegate屬性,為什么框全?
4察绷、autorelease的對(duì)象何時(shí)被釋放
5、這段代碼有問題嗎津辩?如何修改拆撼?
for (int i = 0; i < 10000; ++i) {
NSString *str = @"Abc";
str = [str lowercaseString];
str = [str stringByAppendingString:@"xyz"];
NSLog(@"%@", str);
}
6容劳、UIViewController的viewDidUnload、viewDidLoad和loadView分別什么時(shí)候調(diào)用闸度?UIView的drawRect和layoutSubviews分別起什么作用竭贩?
7、自定義NSOperation筋岛,需要實(shí)現(xiàn)哪些方法娶视?
8、如何擴(kuò)展ObjC里面類的方法睁宰?
9肪获、用代碼實(shí)現(xiàn)一個(gè)單例
10、用代碼實(shí)現(xiàn)一個(gè)冒泡算法
11柒傻、UITableView是如何重用cell的孝赫?
12、如果更高效地顯示列表
13红符、Cocoa中MVC是怎么實(shí)現(xiàn)的青柄?
14、描述KVC预侯、KVO機(jī)制
15致开、使用或了解哪些設(shè)計(jì)模式
四、網(wǎng)易(2016)
一面
1萎馅、簡(jiǎn)單介紹下自己双戳。
2、舉個(gè)其中一個(gè)項(xiàng)目例子糜芳,說一下自己遇到的一些困難及解決方法飒货。
3、用過哪些第三方峭竣?(AFNetworking塘辅,Masonry,MBProgressHUD皆撩,SDWebImage等等)扣墩。
4、說下SDWebImage使用原理毅访?
5沮榜、如果讓你設(shè)計(jì)開發(fā)一個(gè)類似SDWebImage這樣的庫,你該從哪些方面考慮喻粹?可能會(huì)遇到哪些困難的問題蟆融?如何解決?
二面
1守呜、 簡(jiǎn)單的自我介紹型酥。
2山憨、一些項(xiàng)目實(shí)現(xiàn)方法。
3弥喉、 讓自己實(shí)現(xiàn)下拉控件郁竟,如何實(shí)現(xiàn)。
4由境、問你做過的項(xiàng)目技術(shù)難點(diǎn)在哪棚亩,有哪些功能亮點(diǎn)。
5虏杰、問你有沒有做過一些比較復(fù)雜的控件讥蟆。
五、360面試題
轉(zhuǎn)載自:iOS面試:360面試題記錄與總結(jié) - Jabber_YQ
1纺阔、說說oc語言和別的語言的區(qū)別瘸彤。
2、既然你說runtime會(huì)把方法調(diào)用轉(zhuǎn)化成objc_msgSend(receiver, selector)笛钝,那說說消息機(jī)制的流程质况。
3、既然你前面一直有提到方法玻靡,那說說SEL與IMP的差別吧结榄。
4、說一下你對(duì)內(nèi)存管理的理解吧囤捻。
5潭陪、有哪些情況會(huì)出現(xiàn)內(nèi)存泄漏。
6最蕾、前面你有提到可以用_weak來解決block中的循環(huán)引用,還有別的方法嗎老厌。
7瘟则、控制器Apush到B后,有哪些方法可以讓B的數(shù)據(jù)傳遞到A枝秤。
8醋拧、說說KVO的原理吧。
9淀弹、現(xiàn)在在TableViewCell上有一個(gè)UILabel丹壕,UILabel上寫是倒計(jì)時(shí),倒計(jì)時(shí)用NSTimer實(shí)現(xiàn)薇溃,現(xiàn)在滾動(dòng)tableView菌赖,UILabel上的text會(huì)變嗎。
10沐序、frame和bouns的區(qū)別琉用。什么時(shí)候frame和bouns的高寬不相等堕绩。
11、說說進(jìn)程和線程的區(qū)別邑时。
12奴紧、NSOprationQueue 與 GCD 你平時(shí)一般用哪個(gè)。NSOprationQueue 與 GCD 的區(qū)別晶丘。
六黍氮、美團(tuán)一面
1、如何讓一個(gè)label靠左浅浮,一個(gè)label靠右沫浆,然后右邊的label能夠完全顯示
2、算法奇數(shù)排在前面脑题,偶數(shù)排在后面
3件缸、智力題,一個(gè)騎手送餐叔遂,ABCD商店他炊,送給abcd四個(gè)人
4、kvo的實(shí)現(xiàn)原理
5已艰、消息調(diào)用的過程
6痊末、get和post的區(qū)別
7、http有哪些部分
8哩掺、tcp和udp的區(qū)別
9凿叠、七層模型
七、美團(tuán)二面
1嚼吞、講一講響應(yīng)鏈如何通過一個(gè)view查找它所在的viewController盒件,如何擴(kuò)大view的響應(yīng)范圍
2、微信分享大圖如何實(shí)現(xiàn)
3舱禽、從進(jìn)程的角度 進(jìn)程間的通信方式炒刁,并舉例 兩個(gè)進(jìn)程分別指向同一個(gè)地址空間并初始化一個(gè)值,分別輸出是什么 算法誊稚,判斷一個(gè)字符串是否所有的大寫字母都在小寫字母前面 修改podfile文件后翔始,
怎么用git diff顯示出修改后版本和當(dāng)前版本的不同,讓我來設(shè)計(jì) 程序執(zhí)行的過程 如果想要?jiǎng)h除自己的一段代碼里伯,如何刪除(在程序執(zhí)行的過程中刪除) 用過腳本編程嗎 了解前后端嗎 各科成績(jī)城瞎,成績(jī)排名
八、泰康 2019-06
1疾瓮、寫出下面程序的打印日志
dispatch_queue_t quete = dispatch_queue_create("com.taikang.com", DISPATCH_QUEUE_SERIAL);
dispatch_async(quete, ^{
NSLog(@"1------%@", [NSThread currentThread]);
});
dispatch_async(quete, ^{
NSLog(@"2------%@", [NSThread currentThread]);
});
dispatch_sync(quete, ^{
NSLog(@"3------%@", [NSThread currentThread]);
});
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"4------%@", [NSThread currentThread]);
});
NSLog(@"5------%@", [NSThread currentThread]);
2脖镀、深拷貝與淺拷貝的區(qū)別?如何令自己定義的對(duì)象具有拷貝功能狼电?
3认然、如何優(yōu)化APP的啟動(dòng)速度补憾?
4、什么事method swimming? 講講自己的使用場(chǎng)景以及使用的注意事項(xiàng)
5卷员、KVO的工作原理
6盈匾、手寫一個(gè)單例
7、給定一個(gè)字符串毕骡,請(qǐng)你找出其中不含有重復(fù)字符串的最長(zhǎng)子串削饵?
輸入:abcabcbb
輸入:3
解釋:因?yàn)闊o重復(fù)字符串的最長(zhǎng)子串是“abc”,所以其長(zhǎng)度為3
九未巫、iOS高階面試題(2017)
1窿撬、NSCache類當(dāng)中是如何解決時(shí)間復(fù)雜度問題的.請(qǐng)說明其原理.
2、應(yīng)用啟動(dòng)時(shí)是用怎樣加載所有依賴的Mach-O文件的?
3叙凡、什么是冷啟動(dòng),什么是熱啟動(dòng)?
4劈伴、有沒有做過項(xiàng)目的優(yōu)化,請(qǐng)列舉你所知道m(xù)ain()函數(shù)之前耗時(shí)的因素都有哪些,點(diǎn)擊應(yīng)用響應(yīng)時(shí)間多少ms之內(nèi)不會(huì)讓用戶察覺到
5、屬性 可以與set方法和get方法 三者同時(shí)存在嗎,如果不行,請(qǐng)說明原因?
6握爷、Runtime機(jī)制是什么?有沒有寫過方法欺騙?簡(jiǎn)述一下
7跛璧、GCD和NSoperation的區(qū)別之處,請(qǐng)分別說一下特點(diǎn)?
8、Reachability是用來判斷網(wǎng)絡(luò)狀態(tài)的,請(qǐng)簡(jiǎn)述一下其原理?
9新啼、layoutSubviews這個(gè)方法一般在什么情況下調(diào)用的?
10追城、在一個(gè)表內(nèi)有很多cell,每個(gè)cell上有很多個(gè)視圖,如何解決卡頓問題(提示Runloop)。
11燥撞、Objective-C語言中閉包是如何實(shí)現(xiàn)的座柱,閉包中有什么需要注意,閉包運(yùn)行環(huán)境是在堆還是在棧物舒。
十色洞、2018年8月筆試(一)(群友提供)
1、當(dāng)使用 weak修飾的對(duì)象被釋放后冠胯,系統(tǒng)是否直接釋放掉此對(duì)象?其實(shí)現(xiàn)原理是什么? (15分)
2锋玲、聲明可變數(shù)組可以用weak修飾嗎?和用strong修飾有什么區(qū)別? (10 分)
3、反轉(zhuǎn)二叉樹
4涵叮、ViewControllerA push到ViewControllerB,再從B pop回A的生命周期.(15分)
5、UIView和CALayer有什么關(guān)系? (10 分)
6伞插、下面代碼的輸出是什么?(10分)
@implementation Son : Father
- (id)init {
if (self = [super init]) {
NSLog(@"%@", NSStringFromClass([self class]));
NSLog(@"%@", NSStringFromClass([super class]));
}
return self;
@end
7割粮、在項(xiàng)目中,若出現(xiàn)以下的代碼可能會(huì)有什么問題?(10分)
for (int I = 0; i < 1000; i++) {
NSString *num = [NSString stringWithFormat:@"%d", i]; //num是臨時(shí)變量
}
8媚污、內(nèi)存泄漏可能會(huì)出現(xiàn)的幾種原因舀瓢,聊聊你的看法?如果是非OC對(duì)象如何處理?若常用框架出現(xiàn)內(nèi)存泄漏如何處理?(20分)
十一、2018年8月筆試(二)(群友提供)
1耗美、frame和bounds 有什么不同?
2京髓、Objective-C 的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么? Category 是什么?重寫一個(gè)類的方式用繼承好還是分類好?為什么?
3航缀、用@property聲明的NSString / NSArray / NSDictionary經(jīng)常使用copy 關(guān)鍵字,為什么?如果改用strong關(guān)鍵字堰怨,可能造成什么問題?
4芥玉、Category (類別)、Extension (擴(kuò)展)和繼承的區(qū)別备图?
5灿巧、什么時(shí)候用delete, 什么時(shí)候用Notification?
6、如何訪問并修改一個(gè)類的私有屬性?
7揽涮、一個(gè)objc對(duì)象的isa的指針指向什么?有什么作用?
8抠藕、isKindOfClass、isMemberOfClass蒋困、 selector 作用分別是什么盾似?
9、lldb (gdb)常用的控制臺(tái)調(diào)試命令?
10雪标、_objc msgForward 函數(shù)是做什么的零院,直接調(diào)用它將會(huì)發(fā)生什么?
11、什么是TCP / UDP汰聋?
12门粪、用偽代碼寫一個(gè)線程安全的單例模式。
13烹困、HTTP協(xié)議中POST方法和GET方法有那些區(qū)別?
14玄妈、如何高性能的給 UIImageView 加個(gè)圓角?
十二、2019年5月筆試(群友提供)
1髓梅、下面代碼中拟蜻,_address和name有什么不同?什么情況下需要自己寫getter或者setter方法枯饿?
@interface test : NSObject {
NSString *_address
}
@property(nonatomic) NSString *name
@end
2酝锅、什么事ARC?ARC的實(shí)現(xiàn)原理是什么?
3奢方、描述下OC中的NSNotificationCenter的使用搔扁?delegate模式的使用?KVO的使用蟋字?
4稿蹲、UIView的Frame和Bounds的區(qū)別?
5鹊奖、UIView和CALayer的區(qū)別苛聘?
6、如果app比較大,怎樣減少app的大猩杌唱捣?
7、簡(jiǎn)述如何處理UI與耗時(shí)操作的通信网梢,有哪些方式及各自的優(yōu)缺點(diǎn)震缭?
十三、網(wǎng)名“天空中的球”提供
1澎粟、如果讓你實(shí)現(xiàn)屬性的weak蛀序,如何實(shí)現(xiàn)?
2活烙、如果讓你來實(shí)現(xiàn)屬性的atomic徐裸,如何實(shí)現(xiàn)?
3啸盏、KVO為什么要?jiǎng)?chuàng)建一個(gè)子類來實(shí)現(xiàn)重贺?
4、類結(jié)構(gòu)體的組成回懦,isa指針指向什么气笙?(這里應(yīng)該將元類和根元類也說一下)
5、RunLoop有幾種時(shí)間源怯晕?有幾種模式潜圃?
6、方法列表的數(shù)據(jù)結(jié)構(gòu)是什么舟茶?
7谭期、分類是如何實(shí)現(xiàn)的?它為什么會(huì)覆蓋掉原來的方法吧凉?
部分題目轉(zhuǎn)載自:
2017年iOS高階面試題 - 筑夢(mèng)師Winston
京東/優(yōu)酷IOS面試題 - LZM輪回
網(wǎng)易iOS研發(fā)面試題分享
iOS面試筆試題(2018年8月)- 愛恨的潮汐