黑马程序员训练营入学考试题
1、Copy和retain的区别
2、什么是多态,为什么要使用多态。
3、下面第一个self指向的是________,第二个self指向的是_________.
#import <Foundation/Foundation.h>
@interface Person : NSObject int _age;
}
+ (void)test1;
+ (void)test2;
- (void)text3;
@end @implementation Person
+ (void)test1
{
NSLog(@"调用了test1方法");
}
+ (void)test2
{
[self test1];
}
- (void)text3
{
NSLog(@"%d",self->_age);
} @end
4、说说对代理协议的理解。
5、利用分类给NSString扩展3个方法(Objective-C)
1> 字符串反转(比如@”123”调用方法后返回@”321”)
2> 计算英文字母的个数(比如@”5435abc54abc3AHJ5”调用方法后返回的是9)
3> 去除字符串两端空格(比如@” 1235 45 ”调用方法后返回@”1235 45”)
6、创建一个NSDictionary对象,随便往里面添加内容,然后通过代码产生可变和不可变副本,这些复制是深复制还是浅复制?(Objective-C)
7、定义2个新类,分别命名为Song/Playlist。Song对象包含歌曲的信息,歌名、艺术家、专辑、歌曲长度;Playlist对象表示一个播放列表,包含播放列表名称和一个歌曲的集合,还应该提供添加和删除歌曲的方法。(Objective-C)
8、现在有一个有序的数组,要求用户输入一个整数放到数组中还保证这个数组是有序的。例如原数组为@[@1,@3,@5,@7,@9]; 插入8之后为@[@1,@3,@5,@7,@8,@9];(Objective-C)
9、设计一个菜单类 *一个添加菜单的对象方法 *一个删除菜单的对象方法 *还有一个打印数组中所有菜单的对象方法 //菜单 @interface CZCarte : NSObject { NSMutableArray * _foods; } /**添加菜*/ (void) addFood:(CZFood *) food; /**删除菜*/ (void) removeFood:(CZFood *) food; /**打印菜单*/ (void) printCarte; @end @implementation CZCarte /**添加菜*/ (void) addFood:(CZFood *) food { [_foods addObject:food]; } /**删除菜*/ - (void) removeFood:(CZFood *) food { [_foods removeObject:food]; } /**打印菜单*/ (void) printCarte { for (CZFood *food in _foods) { NSLog(@"菜名:%@",[food name]); NSLog(@"价格:%f",[food price]); NSLog(@"简介:%@",[food info]); } } @end
10、定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C) 1)不使用@property,手动编写他们的访问器方法(getter和setter),注意内存管理(手动管理内存) 2)增加一个便利构造器(快速构造器) 3)使用NSLog输出学生对象时,输出信息格式为:My Name Is XXX Age Is XXX Score Is XXX 4)对5个学生对象按照成绩—》年龄—》姓名优先级排序(成绩相同按照年龄排序,成绩年龄相同按照姓名排序(5个学生的属性值自己随便设定,姓名不考虑中文,按26个大小字母排序))
|