活到老学到老:iOS开发中的基础知识(一)
2016-02-27 21:17
387 查看
本文参考 标哥的博客:宝库iOS开发笔试题 进行学习整理。与其说是看面试题,不如说是对自己知识的巩固。工欲善其事必先利其器,基础知识不牢固可能会导致编程中的一些注意不到的问题。总之一句话:活到老,学到老。
1.数组中的元素去重问题。
2.NSArray、NSSet、NSDictionary与NSMutableArray、NSMutableSet、NSMutableDictionary 的特性和作用
3.日期格式化的问题
4.在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么?
(1)HTML5 页面更新的时候不需要重新发布,只需要更新服务器的页面就可以了。
(2)HTML5 页面嵌套在 WKWebView 里面 使用,原生App可以和HTML5里面的元素互相调用
(3)HTML5 页面显示不如App流畅。
5.描述一下iOS的内存管理,在开发中对于内存的使用和优化包含哪些方面。我们在开发中应该注意哪些问题。
6.plist文件是用来做什么的。一般用它来处理一些什么方面的问题。
Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,比如保存一些死数据,城市,商品类别之类的东西。不需要经常从服务器更新。
7.请简单写出增、删、改、查的SQL语句。
对于经常做CURD的我,这个就比较简单了。 就是 select ,insert,update,delete 几个关键字,当然SQL还有很多更加复杂的操作。
(1)SELECT * FROM TABLE_NAME WHERE EXPRESSION
(2)INSERT INTO TABLE_NAME (FIELD1,FIELD2,FIELD3) VALUES (VALUE1,VALUE2,VALUE3)
(3)UPDATE TABLE_NAME SET FIELD1=VALUE1,FIELD2=VALUE2 WHERE EXPRESSION
(4)DELETE FROM TABLE_NAME WHERE EXPRESSION
8.请写出UIViewController的完整生命周期
sub loadView
sub viewDidLoad
main viewWillDisappear
sub viewWillAppear
sub viewDidAppear
main viewDidDisappear
sub viewWillDisappear
main viewWillAppear
main viewDidAppear
sub viewDidDisappear
sub dealloc
9.请写出有多少有方法给UIImageView添加圆角?
10.请描述事件响应者链的工作原理
11.如何避免使用block时发生循环引用
常用的方法有将self改为弱引用 __weak typeof(self) *weakSelf = self;或者添加 __unsafe_unretained修饰。 然后在block里面使用weakSelf 。
还有如果要在block里面改外边的值,需要加__block 修饰 或者将变量设置为static
12.请比较GCD与NSOperation的异同
13.请写出NSTimer使用时的注意事项(两项即可)
NSTimer在UITableViewCell中使用是,需要将timer加到runLoop中。
同一个timer在重复使用之前必需invalidate, 否则会造成之前的timer无法停掉,两个timer同时存在。导致的现象就是timer同时更新两次。
14.说说Core Animation是如何开始和结束动画的
15.iOS中缓存一定量的数据以便下次可以快速执行,那么数据会存储在什么地方,有多少种存储方式?
偏好设置 NSUserDefaults
plist文件
Core Data
SqlLite
归档
1.数组中的元素去重问题。
//重复元素 NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"1",@"2",@"3",nil]; NSMutableArray *marray = [NSMutableArray arrayWithCapacity:array.count]; //比较笨的方法 遍历循环 [array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (![marray containsObject:obj]) { [marray addObject:obj]; } }]; NSLog(@"%@",marray); //通过 KVC 的这个 distinctUnionOfObjects.self 去重,不过顺序会乱 // array = [array valueForKeyPath:@"@distinctUnionOfObjects.self"]; // NSLog(@"%@",array); // // //没有顺序,通过dictionary去重 // NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:array.count]; // [array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // [dict setValue:obj forKey:obj]; // }]; // NSArray *newArray = dict.allValues; // NSLog(@"%@",newArray); // //排序 // newArray = [newArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { // NSString *item1 = obj1; // NSString *item2 = obj2; // return [item1 compare:item2 options:NSLiteralSearch]; // }]; // NSLog(@"%@",newArray); // // //利用NSSet 无顺序 // NSSet *set = [NSSet setWithArray:array]; // NSArray *newArray = [set allObjects]; // NSLog(@"%@",newArray); // // // //利用NSOrderSet,直接排序了 // NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithArray:array]; // NSArray *newArray = orderSet.array; // NSLog(@"%@",newArray);
2.NSArray、NSSet、NSDictionary与NSMutableArray、NSMutableSet、NSMutableDictionary 的特性和作用
3.日期格式化的问题
NSDate *date = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //设置date格式 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *strDate = [formatter stringFromDate:date]; //NSDate *date1 = [formatter dateFromString:strDate]; NSLog(@"%@",strDate);
4.在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么?
(1)HTML5 页面更新的时候不需要重新发布,只需要更新服务器的页面就可以了。
(2)HTML5 页面嵌套在 WKWebView 里面 使用,原生App可以和HTML5里面的元素互相调用
(3)HTML5 页面显示不如App流畅。
5.描述一下iOS的内存管理,在开发中对于内存的使用和优化包含哪些方面。我们在开发中应该注意哪些问题。
6.plist文件是用来做什么的。一般用它来处理一些什么方面的问题。
Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,比如保存一些死数据,城市,商品类别之类的东西。不需要经常从服务器更新。
7.请简单写出增、删、改、查的SQL语句。
对于经常做CURD的我,这个就比较简单了。 就是 select ,insert,update,delete 几个关键字,当然SQL还有很多更加复杂的操作。
(1)SELECT * FROM TABLE_NAME WHERE EXPRESSION
(2)INSERT INTO TABLE_NAME (FIELD1,FIELD2,FIELD3) VALUES (VALUE1,VALUE2,VALUE3)
(3)UPDATE TABLE_NAME SET FIELD1=VALUE1,FIELD2=VALUE2 WHERE EXPRESSION
(4)DELETE FROM TABLE_NAME WHERE EXPRESSION
8.请写出UIViewController的完整生命周期
sub loadView
sub viewDidLoad
main viewWillDisappear
sub viewWillAppear
sub viewDidAppear
main viewDidDisappear
sub viewWillDisappear
main viewWillAppear
main viewDidAppear
sub viewDidDisappear
sub dealloc
9.请写出有多少有方法给UIImageView添加圆角?
10.请描述事件响应者链的工作原理
11.如何避免使用block时发生循环引用
常用的方法有将self改为弱引用 __weak typeof(self) *weakSelf = self;或者添加 __unsafe_unretained修饰。 然后在block里面使用weakSelf 。
还有如果要在block里面改外边的值,需要加__block 修饰 或者将变量设置为static
12.请比较GCD与NSOperation的异同
13.请写出NSTimer使用时的注意事项(两项即可)
NSTimer在UITableViewCell中使用是,需要将timer加到runLoop中。
countDownTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(countDown:) userInfo:nil repeats:YES]; NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop]; [currentRunLoop addTimer:countDownTimer forMode:NSRunLoopCommonModes];
同一个timer在重复使用之前必需invalidate, 否则会造成之前的timer无法停掉,两个timer同时存在。导致的现象就是timer同时更新两次。
14.说说Core Animation是如何开始和结束动画的
15.iOS中缓存一定量的数据以便下次可以快速执行,那么数据会存储在什么地方,有多少种存储方式?
偏好设置 NSUserDefaults
plist文件
Core Data
SqlLite
归档
相关文章推荐
- Top 100 Best Blogs for iOS Developers
- 手机号码中间带星号
- iOS的3D Touch学习
- 点击推送消息跳转处理(iOS)
- iOS 8以上的设置的跳转
- iOS菜鸟-使用MapKit和CoreLocation实现简单的导航画线
- 如何设计一个 iOS 控件?(iOS 控件完全解析)
- ios9.0适配
- 记Booking.com iOS开发岗位线上笔试
- 自己在GitHub上收集的IOS资料
- iOS 中捕获程序崩溃日志
- iOS 图片转NSData
- iOS图标抖动效果
- iOS 隐藏键盘的几种常见方法
- iOS截屏方法
- iOS 开发的一些网址
- iOS禁止默认拉伸现象
- iOS中多线程原理与RunLoop一点介绍
- ios开发必备第三方库
- iOS 异步图片加载优化与常用开源库分析