ios高级面试题及答案,面试问题及答案

1 , 面试问题及答案你的期望值就是替代她【ios高级面试题及答案,面试问题及答案】
2,整理出一份高级iOS面试题1、NSArray与NSSet的区别?2、NSHashTable与NSMapTable?(注:NSHashTable与NSSet的区别:NSHashTable可以通过option设置元素弱引用/copyin,只有可变类型 。但是添加对象的时候NSHashTable耗费时间是NSSet的两倍 。NSMapTable与NSDictionary的区别:同上)3、 属性关键字assign、retain、weak、copy4、weak属性如何自动置nil的?5、Block的循环引用、内部修改外部变量、三种block6、KVO底层实现原理?手动触发KVO?swift如何实现KVO?7、categroy为什么不能添加属性?怎么实现添加?与Extension的区别?category覆盖原类方法?多个category调用顺序8、load方法和initialize方法的异同 。——主要说一下执行时间,各自用途,没实现子类的方法会不会调用父类的?load initialize 调用时机 app启动后,runtime初始化的时候 第一个方法调用前调用 调用顺序 父类->本类->分类 父类->本类(如果有分类直接调用分类,本类不会调用) 没实现子类的方法会不会调用父类的 否 是 是否沿用父类实现 否 是image9、对 runtime 的理解 。——主要是方法调用时如何查找缓存,如何找到方法,找不到方法时怎么转发,对象的内存布局OC中向对象发送消息时,runtime会根据对象的isa指针找到对象所属的类 , 然后在该类的方法列表和父类的方法列表中寻找方法执行 。如果在最顶层父类中没找到方法执行,就会进行消息转发:Method resoution(实现方法)、fast forwarding(转发给其他对象)、normal forwarding(完整消息转发 。可以转发给多个对象)11、autoreleasepool的原理和使用场景?image12、Autorelase对象什么时候释放?在没有手加Autorelease Pool的情况下,Autorelease对象是在当前的runloop迭代结束时释放的 , 而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop 。13、Runloop与线程的关系?Runloop的mode? Runloop的作用?内部机制?14、iOS中使用的锁、死锁的发生与避免15、NSOperation和GCD的区别16、oc与js交互17、swift相比OC有什么优势?18、struct、Class的区别19、访问控制关键字(public、open、private、filePrivate、internal)20、OC与Swift混编21、map、filter、reduce?map与flapmap的区别?image22、guard与defer23、try、try?与try!24、@autoclosure:把一个表达式自动封装成闭包25、throws与rethrows:throws另一个throws时 , 将前者改为rethrows26、App启动优化策略?main函数执行前后怎么优化27、crash防护?28、内存泄露问题?主要集中在循环引用问题中,如block、NSTime、perform selector引用计数问题 。29、UI卡顿优化?30、架构&设计模式31、数据结构&算法32、计算机基础
3,苹果公司面试题全中国没几个懂的你能答上来吗桌子上有100任意把硬币分成两堆,使其中一堆是10枚,则另一堆是90枚 。然后将第一堆中10枚硬币全部翻面,此时两堆中正面朝上的硬币数量相同 。其实就是取补数 。从大堆中分出10个硬币 。并全部翻面 。即可呵呵哒,我不能看不能花钱请别人帮我看吗?
4 , iOS面试题有哪些iOS 面试题1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?答:不可以 , 可以实现多个接口;category是分类,,一般情况下分类好,用category重写只会影响到分类本身,不影响其他类和原有类的关系 。2.#import 跟#include 又什么区别 #import<> 跟 #import""又什么区别?答:#import 是oc导入头文件的关键字,#include是c/c++导入头文件的关键字,#import会自动导入一次 , 不会重复导入,不会引起交叉编译,@class告诉编译器某个类的声明,当执行是才去查看类的执行文件 , 当两个类文件有循环依赖关系(A引用B,B引用A)时,需要用@class,在interface中引用一个类,就用@class , 它会把这个类作为一个类型来使用,而在实现这个interface的文件中,如果需要引用这个类的实体变量或者方法之类的 , 还是需要import这个在@class中声明的类 。#import<>引用系统文件,它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件. #import"":用户自定义的文件用双引号引用,编译器首先会在用户目录下查找,然后到安装目录中查2.1重复引用(ClassA 与 ClassB同时引用了ClassC,不做重复引用处理的时候在ClassD中同时引用ClassA,ClassB编译会提示对ClassC重复引用的错误.#import解决了这个问题)3.类变量的@protected ,@private,@public,@package声明各有什么含义?答:变量的作用域不同,@protected该类和所有子类中 的方法可以直接访问这样的变量,这是默认的,@private 该类中的方法可以访问这样的变量,子类不可以 。@public除了自己和子类方法外,也可以被其他类或者其他模块中的方法访问@package 4.id 声明的对象有什么特性?答:Id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象5.MVC是什么?有什么特性?为什么在iPhone上被广泛运用?答:是一种设计模式,将代码按照视图,模型控制器的结构来设计6.对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别时什么类型的对象?答:nsstring,nsdata7.什么是安全释放?答:[_instance release],_instance = nil;8.为什么有些4.0独有的objective-c 函数在3.1上运行时会报错.而4.0独有的类在3.1上分配内存时不会报错?分配的结果是什么? 运行时因为 3.1的sdk 里没有对应的函数实现.所以会找不到对应的 @selector 指针. 错误.而分配内存.应该是涉及到类的创建的机制上9.为什么4.0独有的c函数在3.1的机器上运行不会报错(在没有调用的情况下?)而4.0独有的类名在3.1的机器上一运行就报错?10.异常exception 怎么捕获?不同的CPU结构上开销怎样?C中又什么类似的方法?11.property中属性retain,copy,assgin的含义分别是什么?有什么区别?将其转换成get/set方法怎么做?有什么注意事项?- (void)setInstance:(id)instanceif (_instance != instance)[_instance release];_instance = [instance retain];}}copy复制代码- (void)setInstance:(id)instanceif (_instance != instance)[_instance release];_instance = [instance copy];}}assgin复制代码- (void)setInstance:(id)instanceif (_instance != instance)_instance = instance;}}12.委托是什么?委托的property声明用什么属性?为什么?delegate assgin13.浅拷贝和深拷贝区别是什么?答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身 。深层复制:复制引用对象本身 。14.Cocoa中与虚基类的概念么?怎么简洁的实现?没有 delegate15.自动释放池跟GC有什么区别?iPhone上有GC么?[pool release] 和[pool drain]有什么区别?没有GC16.?1234567<span>for(int index = 0; index < 20; index ++)NSString *tempStr = @”tempStr”;NSLog(tempStr);NSNumber *tempNumber = [NSNumber numberWithInt:2];NSLog(tempNumber);}</span>这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?17.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?答:谁申请谁释放 。18.在一个对象释放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove这个对象可能会出现什么问题?19.怎样实现一个 singleton的类.给出思路 。20.什么是序列化或者Acrchiving,可以用来做什么,怎样与copy结合,原理是什么?.21.线程是什么? 有哪些注意事项.?22.在iphone上有两件事情要做,请问是在一个线程里按顺序做效率高还是两个线程里做效率高?为什么?23.runloop是什么?在主线程中的某个函数里调用了异步函数,怎么样block当前线程,且还能响应当前线程的timer事件,touch事件等.24.ios平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?25.阐述一个nil对象从interface bulider产生,到载入程序运行空间 , 最后被释放时所经历的生命周期.26.notification是同步还是异步? kvo是同步还是异步?notification是全进程空间的通知吗?kvo呢?27.kvc是什么?kvo是什么?有什么特性?28.响应者链是什么?29.unix上进程怎么通信?30.timer的间隔周期准吗?为什么?怎样实现一个精准的timer?31.UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?32如果要开发一个类似eclipse的软件,支持插件结构 。且开放给第三方开发 。你会怎样去设计它?(大概思路)33.Objective-C如何对内存管理的,说说你的看法和解决方法?Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池 。34. Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码 , 方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:35.What are KVO and KVC?答案:kvc:键 - 值编码是一种间接访问对象的属性使用字符串来标识属性 , 而不是通过调用存取方法,直接或通过实例变量访问的机制 。很多情况下可以简化程序代码 。kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码 。具体用看到嗯哼用到过的一个地方是对于按钮点击变化状态的的监控 。比如我自定义的一个button[self addObserver:self forKeyPath:@"highlighted" options:0 context:nil]; #pragma mark KVO- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)contextif ([keyPath isEqualToString:@"highlighted"] )[self setNeedsDisplay];} } 对于系统是根据keypath去取的到相应的值发生改变,理论上来说是和kvc机制的道理是一样的 。对于kvc机制如何通过key寻找到value:36.Difference between method and selector?方法和选择器有何不同?答案:selector是一个方法的名字,method是一个组合体 , 包含了名字和实现.5,面试问题及答案要想能面试上,必须努力学习;面试的时候必须心静 。迎小这门行业就是靠嘴皮字吗!你就是老板瞎忽悠 。样他看出你的语言能力/你有实力他还能不应聘你啊 。问:你吃饭了吗?一只蚂蚁从几百万米高的山峰落下来会怎么死?问:请介绍一下你自己 。答:你买入我就等于卖出了你的所有产品6 , 面试问题及答案问题一:“请你自我介绍一下” 思路:1、这是面试的必考题目 。2、介绍内容要与个人简历相一致 。3、表述方式上尽量口语化 。4、要切中要害,不谈无关、无用的内容 。5、条理要清晰 , 层次要分明 。6、事先最好以文字的形式写好背熟 。问题二:“谈谈你的家庭情况” 思路:1、况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因 。2、简单地罗列家庭人口 。3、宜强调温馨和睦的家庭氛围 。4、宜强调父母对自己教育的重视 。5、宜强调各位家庭成员的良好状况 。6、宜强调家庭成员对自己工作的支持 。7、宜强调自己对家庭的责任感 。问题三:“你有什么业余爱好?” 思路:1、业余爱好能在一定程度上反映应聘者的性格、观念、心态,这是招聘单位问该问题的主要原因 。2、最好不要说自己没有业余爱好 。3、不要说自己有那些庸俗的、令人感觉不好的爱好 。4、最好不要说自己仅限于读书、听音乐、上网,否则可能令面试官怀疑应聘者性格孤僻 。5、最好能有一些户外的业余爱好来“点缀”你的形象 。问题四:“你最崇拜谁?” 思路:1、最崇拜的人能在一定程度上反映应聘者的性格、观念、心态,这是面试官问该问题的主要原因 。2、不宜说自己谁都不崇拜 。3、不宜说崇拜自己 。4、不宜说崇拜一个虚幻的、或是不知名的人 。5、不宜说崇拜一个明显具有负面形象的人 。6、所崇拜的人人最好与自己所应聘的工作能“搭”上关系 。7、最好说出自己所崇拜的人的哪些品质、哪些思想感染着自己、鼓舞着自己 。问题五:“你的座右铭是什么?” 思路:1、座右铭能在一定程度上反映应聘者的性格、观念、心态,这是面试官问这个问题的主要原因 。2、不宜说那些易引起不好联想的座右铭 。3、不宜说那些太抽象的座右铭 。4、不宜说太长的座右铭 。5、座右铭最好能反映出自己某种优秀品质 。6、参考答案——“只为成功找方法 , 不为失败找借口”问题六:“谈谈你的缺点” 思路:1、不宜说自己没缺点 。2、不宜把那些明显的优点说成缺点 。3、不宜说出严重影响所应聘工作的缺点 。4、不宜说出令人不放心、不舒服的缺点 。5、可以说出一些对于所应聘工作“无关紧要”的缺点,甚至是一些表面上看是缺点,从工作的角度看却是优点的缺点 。问题七:“谈一谈你的一次失败经历” 思路:1、不宜说自己没有失败的经历 。2、不宜把那些明显的成功说成是失败 。3、不宜说出严重影响所应聘工作的失败经历 , 4、所谈经历的结果应是失败的 。5、宜说明失败之前自己曾信心白倍、尽心尽力 。6、说明仅仅是由于外在客观原因导致失败 。7、失败后自己很快振作起来,以更加饱满的热情面对以后的工作 。问题八:“你为什么选择我们公司?” 思路:1、面试官试图从中了解你求职的动机、愿望以及对此项工作的态度 。2、建议从行业、企业和岗位这三个角度来回答 。3、参考答案——“我十分看好贵公司所在的行业,我认为贵公司十分重视人才 , 而且这项工作很适合我,相信自己一定能做好 。”问题九:“对这项工作,你有哪些可预见的困难?” 思路:1、不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行 。2、可以尝试迂回战术 , 说出应聘者对困难所持有的态度——“工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以克服的 。”问题十:“如果我录用你,你将怎样开展工作” 思路:1、如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法,2、可以尝试采用迂回战术来回答 , 如“首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开展工作 。” 如果可乐两元一罐,两个空罐可以换一罐可乐,给你六元,你最多可以喝几罐

    推荐阅读