课程咨询 :400-017-8985

  • 一线互联网公司iOS面试题总结(4)

    发布:西安达内ios培训      来源:西安达内      时间:2015-10-27 11:27

  • 31. NSOperation queue?

    答:存放NSOperation的集合类。

    操作和操作队列,基本可以看成java中的线程和线程池的概念。用于处理ios多线程开发的问题。

    网上部分资料提到一点是,虽然是queue,但是却并不是带有队列的概念,放入的操作并非是按照严格的先进现出。

    这边又有个疑点是,对于队列来说,先进先出的概念是Afunc添加进队列,Bfunc紧跟着也进入队列,Afunc先执行这个是必然的,

    但是Bfunc是等Afunc完全操作完以后,B才开始启动并且执行,因此队列的概念离乱上有点违背了多线程处理这个概念。

    但是转念一想其实可以参考银行的取票和叫号系统。

    因此对于A比B先排队取票但是B率先执行完操作,我们亦然可以感性认为这还是一个队列。

    但是后来看到一票关于这操作队列话题的文章,其中有一句提到

    “因为两个操作提交的时间间隔很近,线程池中的线程,谁先启动是不定的。”

    瞬间觉得这个queue名字有点忽悠人了,还不如pool~

    综合一点,我们知道他可以比较大的用处在于可以帮组多线程编程就好了。

    32. 什么是延迟加载?

    答:懒汉模式,只在用到的时候才去初始化。

    也可以理解成延时加载。

    我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。

    一个延时载,避免内存过高,一个异步加载,避免线程堵塞。

    33. 是否在一个视图控制器中嵌入两个tableview控制器?

    答:一个视图控制只提供了一个View视图,理论上一个tableViewController也不能放吧,

    只能说可以嵌入一个tableview视图。当然,题目本身也有歧义,如果不是我们定性思维认为的UIViewController,而是宏观的表示视图控制者,那我们倒是可以把其看成一个视图控制者,它可以控制多个视图控制器,比如TabbarController那样的感觉。

    34. 一个tableView是否可以关联两个不同的数据源?你会怎么处理?

    答:首先我们从代码来看,数据源如何关联上的,其实是在数据源关联的代理方法里实现的。

    因此我们并不关心如何去关联他,他怎么关联上,方法只是让我返回根据自己的需要去设置如相关的数据源。

    因此,我觉得可以设置多个数据源啊,但是有个问题是,你这是想干嘛呢?想让列表如何显示,不同的数据源分区块显示?

    35. 什么时候使用NSMutableArray,什么时候使用NSArray?

    答:当数组在程序运行时,需要不断变化的,使用NSMutableArray,当数组在初始化后,便不再改变的,使用NSArray。需要指出的是,使用NSArray只表明的是该数组在运行时不发生改变,即不能往NSAarry的数组里新增和删除元素,但不表明其数组內的元素的内容不能发生改变。NSArray是线程安全的,NSMutableArray不是线程安全的,多线程使用到NSMutableArray需要注意。

    36. 给出委托方法的实例,并且说出UITableVIew的Data Source方法

    答:CocoaTouch框架中用到了大量委托,其中UITableViewDelegate就是委托机制的典型应用,是一个典型的使用委托来实现适配器模式,其中UITableViewDelegate协议是目标,tableview是适配器,实现UITableViewDelegate协议,并将自身设置为talbeview的delegate的对象,是被适配器,一般情况下该对象是UITableViewController。

    UITableVIew的Data Source方法有- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

    37. 在应用中可以创建多少autorelease对象,是否有限制?

    答案:无

    38. 如果我们不创建内存池,是否有内存池提供给我们?

    答:界面线程维护着自己的内存池,用户自己创建的数据线程,则需要创建该线程的内存池

    39. 什么时候需要在程序中创建内存池?

    答:用户自己创建的数据线程,则需要创建该线程的内存池

    40. 类NSObject的那些方法经常被使用?

    答:NSObject是Objetive-C的基类,其由NSObject类及一系列协议构成。

    其中类方法alloc、class、 description 对象方法init、dealloc、– performSelector:withObject:afterDelay:等经常被使用

上一篇:一线互联网公司iOS面试题总结(3)

下一篇:一线互联网公司iOS面试题总结(5)

最新开班日期  |  更多

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:05月31

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:05月31

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:05月31

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:05月31

  • 地址:西安市长安北路8号陕西高速大厦15F
  • 课程培训电话:400-017-8985     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2002-2018 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56