background image

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
这个对象可能会出现什么问题?