iOS开发中常遇到的面试题

时间:2016-03-18 23:21:01   收藏:0   阅读:279

转自:http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=404356053&idx=5&sn=0ccb4ffa5bd12986898f57aef66edbce&scene=0#wechat_redirect

2、说说以下元素的特性和作用

 

NSArray、NSSet、NSDictionary与NSMutableArray、NSMutableSet、NSMutableDictionary

 

参考答案:

 

特性:

 

 

作用:

 

 

3、简单描述一下XIB与Storyboards,说一下他们的优缺点。

 

参考答案:笔者倾向于纯代码开发,所以所提供的参考答案可能具有一定的个人感情,不过还是给大家说说笔者的想法。

 

优点:

 

 

缺点:

 

 

4、请把字符串2015-04-10格式化日期转为NSDate类型

 

参考答案:

 

NSString *timeStr = @"2015-04-10";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
formatter.timeZone = [NSTimeZone defaultTimeZone];
NSDate *date = [formatter dateFromString:timeStr];
// 2015-04-09 16:00:00 +0000
NSLog(@"%@", date);

 

5、在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么?

 

参考答案:

 

在iOS中,通常是通常UIWebView来实现,当然在iOS8以后可以使用WKWebView来实现.有以下几种实现方法:

 

通过实现UIWebView的代理方法来拦截,判断scheme是否是约定好的,然后iOS调用本地相关API来实现:

 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

 

在iOS7以后,可以直接通过JavaScripteCore这个库来实现,通过往JS DOM注入对象,而这个对象对应于我们iOS的某个类的实例。更详细请阅读:

 

 

可以通过WebViewJavascriptBridge来实现。具体如何使用,请大家去其它博客搜索吧!

 

优缺点:

 

 

6、请描述一下同步和异步,说说它们之间的区别。

 

参考答案:

 

首先,我们要明确一点,同步和异步都是在线程中使用的。在iOS开发中,比如网络请求数据时,若使用同步请求,则只有请求成功或者请求失败得到响应返回后,才能继续往下走,也就是才能访问其它资源(会阻塞了线程)。网络请求数据异步请求时,不会阻塞线程,在调用请求后,可以继续往下执行,而不用等请求有结果才能继续。

 

区别:

 

 

7、请简单描述一下队列和多线程的使用原理。

 

参考答案:

 

在iOS中队列分为以下几种:

 

 

dispatch_queue_t q = dispatch_queue_create("...", DISPATCH_QUEUE_SERIAL);

 

dispatch_queue_t q = dispatch_queue_create("......", DISPATCH_QUEUE_CONCURRENT);

 

 

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

 

 

dispatch_queue_t q = dispatch_get_main_queue();

 

上面这四种是针对GCD来讲的,串行队列中的任务只能一个个地执行,在前一个没有执行完毕之前,下一个只能等待。并行队列可以并发地执行任务,因此多个任务之间执行的顺序不能确定,当添加一个新的任务时,交由GCD来判断是否要创建新的新的线程。

 

大家可以阅读图片多线程,也许更明了:iOS图解多线程

 

8、描述一下iOS的内存管理,在开发中对于内存的使用和优化包含哪些方面。我们在开发中应该注意哪些问题。

 

参考答案:

 

内存管理准则:谁强引用过,谁就在不再使用时使引用计数减一。

 

对于内存的使用和优化常见的有以下方面:

 

 

9、plist文件是用来做什么的。一般用它来处理一些什么方面的问题。

 

参考答案:

 

plist是iOS系统中特有的文件格式。我们常用的NSUserDefaults偏好设置实质上就是plist文件操作。plist文件是用来持久化存储数据的。

 

我们通常使用它来存储偏好设置,以及那些少量的、数组结构比较复杂的不适合存储数据库的数据。比如,我们要存储全国城市名称和id,那么我们要优先选择plist直接持久化存储,因为更简单。

 

10、iOS中缓存一定量的数据以便下次可以快速执行,那么数据会存储在什么地方,有多少种存储方式?

 

参考答案:

 

 

详情请阅读:iOS常用的持久化存储方式

 

11、请简单写出增、删、改、查的SQL语句。

 

参考答案:

 

数据库的简单操作,还是会的,大学可没白学。

 

 

insert into tb_blogs(name, url) values(‘标哥的技术博客‘,http://www.henishuo.com);

 

 

delete from tb_blogs where blogid = 1;

 

 

 

update tb_blogs set url = ‘www.henishuo.com‘ where blogid = 1;

 

select name, url from tb_blogs where blogid = 1;

 

12、在提交苹果审核时,遇到哪些问题被拒绝,对于被拒绝的问题是如何处理的。

 

参考答案:

 

对于笔者而言,所提交过的app还没有被拒绝过。不过在笔者所维护的几个群里经常有朋友们问到相关被拒绝的解决办法。幸好还懂一点点英文,还能帮助他们翻译翻译苹果反馈的被拒原因及所担的建议。

 

这里只列出几种最常见的被拒原因:

 

原文:http://www.cnblogs.com/layios/p/5293906.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!