转载:25个 iOS 面试题整理(带答案)二

25个 iOS 面试题整理(带答案)二

1.回答person的retainCount值,并解释为什么
Person * per = [[Person alloc] init];
self.person = per;

2.这段代码有什么问题吗:
@implementation Person

  • (void)setAge:(int)newAge {
    self.age = newAge;
    }
    @end

正确写法
{
if(_age){
[_age release];
}
_age = [newAge retain];

}
死循环(扩展:知道如何正确写setter和getter方法)

3.这段代码有什么问题,如何修改
for (int i = 0; i < someLargeNumber; i++) {
NSString *string = @”Abc”;//常量区
string = [string lowercaseString];//新的堆区
string = [string stringByAppendingString:@"xyz"];//新的堆区
NSLog(@“%@”, string);
}
在for循环里添加自动释放池(扩展:常量区的retaincount是怎么个情况)

4.截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出它们。
componentsSeparatedByString
NSString * str = @“20|http://www.baidu.com”;
for(NSString*s in [str componentsSeparatedByString]){
NSLog(@“%@“,s);
}

5.用obj-c写一个冒泡排序
1
2
3
4
5
6
7
8

for
(int i = 0, i < arr.count - 1,i++){

for
(int j = 0,j < arr.count - 1 - i;j++){

int a = [[arr objectAtIndex:j]intValue];

int b=[[arr objectAtIndex:j+1]intValue];

if
(a < b){

[arr replaceObjectAtIndex:j withObject:[NSString stringWithFormat:@“%d”,b]];

[arr replaceObjectAtIndex:j+1 withObject:[NSString stringWithFormat:@“%d”,a];

}}}

6.简述你对UIView、UIWindow和CALayer的理解
http://blog.csdn.net/kuqideyupian/article/details/7731942
http://o0o0o0o.iteye.com/blog/1728599

7.写一个完整的代理,包括声明,实现
注意手写的准确性

8.分析json、xml的区别?json、xml解析方式的底层是如何处理的?
http://www.open-open.com/bbs/view/1324367918671
http://hi.baidu.com/fevelen/item/a25253ab76f766756cd455b6

9.ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?默认的操作是什么?
http://blog.sina.com.cn/s/blog_68661bd80101nn6p.html

10.面向对象的三大特征,并作简单的介绍
封装、继承、多态
多态:父类指针指向子类对象。两种表现形式:重写(父子类之间)和重载(本类中)
OC的多态体现是:重写,没有重载这种表现形式

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

@interface Parent : NSObject
//父类

  • (void)simpleCall;

@end

@interface Child_A : Parent
//子类 Child_A

@end

@implementation Child_A

  • (void)simpleCall

{

NSLog(@
"我是Child_A的simpleCall方法"
);

}

@end

@interface Child_B : Parent
//子类Child_B

@end

  • (void)simpleCall

{

NSLog(@
"我是Child_的simpleCall方法"
);

}

@end

然后,我们就可以看到多态所展示的特性了:
1
2
3
4

Parent * pa=[[Child_A alloc] init];
// 父类指针指向子类Child_A对象

Parent * pb=[[Child_B alloc] init];
//父类指针指向子类Child_B对象

[pa simpleCall];
// 显然是调用Child_A的方法

[pb simpleCall];
// 显然是调用Child_B的方法

在OC中常看见的多态体现:
1
2
3
4
5
6

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *CellWithIdentifier = @
"Cell"
;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellWithIdentifier];

return
cell;

}

(UITableViewCell *)指向cell子类对象

11.重写一个NSString类型的,retain方式声明name属性的setter和getter方法
1
2
3
4
5
6
7
8

-(void)settetName:(NSString *)name{

if
(_name){

[_name release];

}

_name = [name retain];

}

-(NSString *)getterName{

return
[[_name retain]autorelease];

12.简述NotificationCenter、KVC、KVO、Delegate?并说明它们之间的区别?
http://blog.csdn.net/zuoerjin/article/details/7858488
http://blog.sina.com.cn/s/blog_bf9843bf0101j5px.html

13.What is lazy loading?
懒汉模式,只在用到的时候才去初始化。也可以理解成延时加载。我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。一个延时载,避免内存过高,一个异步加载,避免线程堵塞

14.什么是Protocol?什么是代理?写一个委托的interface?委托的property声明用什么属性?为什么?
委托的property声明用什么属性是assign(防止循环引用)

15.分别描述类别(categories)和延展(extensions)是什么?以及两者的区别?继承和类别在实现中有何区别?为什么Category只能为对象添加方法,却不能添加成员变量?
考虑类目比继承的优点
类别是把类的实现方法分散到不同的文件中 也可以给类扩展新方法
延展是给类添加私有方法 只为自己类所见 所使用
继承可以扩展实例变量 而类别不能
类别如果可以添加成员变量 就跟继承没什么两样了 而且在上线的项目更新中 用类别笔继承更能维护项目的稳定性

16.Objective-C有私有方法么?私有变量呢?如多没有的话,有没有什么代替的方法?
oc没有私有方法 但是有私有变量@property 私有方法可以用延展代替

17.#import、#include和@class有什么区别

import 系统文件、自定义文件引用 不用担心重复引用的问题

include 跟#import几乎一样 但是他需要注意不能重复引用

@class 只是告诉系统有这个类 但是如果在实现类中用到这个类 需要重新用#import导入该类头文件

18.谈谈你对MVC的理解?为什么要用MVC?在Cocoa中MVC是怎么实现的?你还熟悉其他的OC设计模式或别的设计模式吗?
mvc - model view controller 避免了view与model 的强耦合 使代码更灵活 更容易维护 可复用 可扩展 oc其他设计模式有Notification 。target;action. singleton delegate

19.如监测系统键盘的弹出
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector( ) name:UIKeyboardWillShowNotification object:nil];
扩展:ios 弹出键盘挡住UITextView的解决方式

20.举出5个以上你所熟悉的ios sdk库有哪些和第三方库有哪些?
AFWorking/WebKit/SQLite/Core Data/Address Book

21.如何将产品进行多语言发布?
http://fengmm521.blog.163.com/blog/static/25091358201291645852889/

22.如何将敏感字变成**
1
2
3
4
5

search = @
"某某某"
;

replace = @“***”;

range = [mstr rangeOfString:search];

[mstr replaceCharactersInRange:range withString:replace];

NSLog(@
"%@"
,mstr);

23.objc中的减号与加号代表什么?
类方法
24.单例目的是什么,并写出一个?
避免重复创建 节省内存空间
1
2
3
4
5
6
7
8

static Model * model;

+(id)singleton{

if
(!model){

@synchronized(self){

model = [[Model alloc]init];

}}

return
model;

}

25.说说响应链
http://www.tuicool.com/articles/6jmUje
从手指触摸屏幕的地方的最上层控件是第一响应者,事件会沿着响应链一直向下传递直到被接受并作出处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,562评论 18 399
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    Jt_Self阅读 734评论 0 4
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,121评论 29 470
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,359评论 0 3
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    small_Sun阅读 450评论 0 4