ios 开发工程师常见面试题汇总
经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便
ios 开发工程师找工作复习之用,本
人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案。
1.Object-c 的类可以多重继承么?可以实现多个接口么?Category 是什么?重写一个类的方式用继承好还是
分类好?为什么?
2.#import 跟#include 又什么区别,@class
呢; #
import<>
跟
#import”"又什么区别?
3.属性 readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
4.id 声明的对象有什么特性?
5.MVC 是什么?有什么特性?为什么在 iPhone 上被广泛运用?
6.对于语句 NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别
时什么类型的对象?
7.什么是安全释放?
8.为什么有些 4.0 独有的 objective-c 函数在 3.1 上运行时会报错.而 4.0 独有的类在 3.1 上分配内存时不
会报错?分配的结果是什么?
9.为什么 4.0 独有的 c 函数在 3.1 的机器上运行不会报错(在没有调用的情况下?)而 4.0 独有的类名在 3.1
的机器上一运行就报错?
10.常见的 object-c
的数据类型有那些, 和
c
的 基本数据类型有什么区别?如:
nsinteger 和 int
11.property 中属性 retain,copy,assgin 的含义分别是什么?有什么区别?将其转换成 get/set 方法怎
么做?有什么注意事项?
12.委托是什么?委托的 property 声明用什么属性?为什么?
13.
…
浅拷贝和深拷贝区别是什么?
14.NSString
和
NSMutableString 有什么区别?
15.自动释放池跟 GC 有什么区别?iPhone 上有 GC 么?[pool release
] 和[
pool drain]有什么区别?
16.
for(int index = 0; index < 20; index ++){
NSString *tempStr = @”tempStr”;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}
这段代码有什么问题
.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环
内好还是循环外好?为什么?
17.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和 property 结合的时
候怎样有效的避免内存泄露?
18.在一个对象释放前.如果他被加到了 notificationCenter 中.不在 notificationcenter 中 remove
这个对象可能会出现什么问题?