- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
iOS工程师面试笔试题
前言:以下iOS工程师面试笔试题,部分来源于网络,笔者在此处收集起来,既是要巩固自我,也希望能够帮助到同样需要的人!参考答案均为笔者所写,其有疑问或者出错之处,请在评论中提出,谢谢!不喜勿喷!
1.#import和#include的区别?
参考答案:
#import是Objective-C导入头文件的语法,可保证不会重复导入。
#include是C/C++导入头文件的语法,如果是Objective-C与C/C++混编码,
对于C/C++类型的文件,还是使用#include来引入,这种写法需要添加防重复导入的语法。
2.@class的作用
参考答案:
@class一般用于头文件中通过前向声明,就可以声明了,但是在.m文件中还是需要使用#import进来的。它的作用只是前向声明。
3.用NSLog函数输出一个浮点类型,结果四舍五入,并保留一位小数
参考答案:
floatmoney=1.011;
NSLog(@%.1f,money);
使用%f来格式化,其中要保留一位小数,因此再用%.1f就是保留一位。
4.property属性的修饰符有什么样的作用
参考答案:
property是属性访问声明,扩号内支持以下几个属性:
getter=getName、setter=setName:设置setter与getter的方法名readwrite、readonly:设置可供访问级别
assign:方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题
retain:其setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序
copy:其setter方法进行copy操作,与retain处理流程一样,先对旧值
release,再copy出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。
nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。
5.self.name=@object和name=@object有什么不同?
参考答案:
self.name=”object”:会调用对象的setName()方法;name=
“object”:会直接把object字符串赋值给当前对象的name属性。
6.viewDidLoad、loadView和viewDidUnload何时调用
参考答案:
viewDidLoad在view加载完成时调用,loadView在controller的view为nil时调用。对于viewDidUnload现在已经不能直接调用了。
7.objective-c中的可变与不可变词典
参考答案:
可变字典就是可以增、删、改操作的字典,对应于NSMutableDictionary类型。
不可变字典就是不能执行增、删、改操作的字典,对应于NSDictionary类型。
8.Objective-C的内存管理
参考答案:
现在内存管理几乎都采用ARC,也就是AutomaticReferenceCounting,意思是自动引用计数。由编译器在编译时自动为添加retain、release等代码。
如果问的MRC,也就是ManualReferenceCounting,意思是手动内存管理。
黄金法则:谁使对象的引用计数+1,不再使用该对象时,谁就应该使该对象的引用计数-1。
9.自动生成getter/setter方法
参考答案:
对于以前的代码,那时还没有property,使用这样的方法来创建:
-(void)setName:(NSString*)aName;
-(NSString*)name;
在后面有了property,直接使用@property(nonatomic,copy)NSString
*name这样的方法来声明,编译器会自动生成getter/setter方法并生成一个_name成员变量。
10.什么是MVC
参考答案:
我相信大部分人在被问到这个问题时,都会回答M就是Model,V就是View,C就是Controller。这都是停留在概念上的回答,明显没有什么工作经验。对于一个对框架和架构有一定的思想的人,回答时会从项目的耦合度、团队开发如
何减少冲突、如何降低团队与团队之间的沟通成本、如何将M、V、C之间按照既定的标准建立沟通的桥梁。
Model用于处理数据,通常来说,Model中会包含多
文档评论(0)