高分网 > 答案大全 > 考试答案 > 其它考试试题及答案 >

ios面试题及答案

时间: 炎婷2 其它考试试题及答案

  iOS面试试题及参考答案

  2、 线程和进程的区别和联系?

  进程和线程都是由操作系统所体会的程序运行的基本单元,系统会利用该基本单元实现系统对应用的并发性。线程和进程的主要差别在于它们是不同的操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所有多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

  3、 属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?

  1) Readwrite是可读可写特性,需要生成getter方法和setter方法时

  2) Readonly是只读写特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变

  3) Assign是赋值特性,setter方法将传入参数赋值给实例变量,仅设置变量时

  4) Retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1

  5) Copy表示赋值特性,setter方法将传入对象赋值一份,需要完全一份新的变量时

  6) Nonatomic非原子操作,决定编译器生成的setter,getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic

  4、 object-c中创建线程的方法是什么,如果在主线程中执行代码,方法是什么,如果想延时执行代码,方法又是什么?

  线程创建有三种方法:使用nsthread创建、使用gcd的dispatch创建、使用子类化的nsoperation创建,然后将其加入nsoperationqueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone

  5、 类别的作用,继承和类别在实现中有何区别?

  Category可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改;并且如果类别和原来类中的方法产生冲突,类别将覆盖原来的方法,因此类别具有更高的优先级;将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,向对象添加非正式协议。继承可以增加,修改或者删除方法,并且可以增加属性

  6、 什么是KVC、KVO?

  Kvc:键值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,直接或通过实例变量访问的机制

  Kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码

  7、 在iphone应用中如何保存数据?

  1) 通过web服务,保存在服务器上

  2) 通过nscoder固化机制,将对象保存在文件中

  3) 通过sqlite或者coredata保存在文件数据库中

  8、 在项目中什么时候选择使用gcd,什么时候选择nsoperation?

  项目中使用nsoperation的优点是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好,子类化nsoperation的设计思路,是具有面向对象的优点,使得实现是多线程支持,而接口简单,建议在复杂的项目中使用;而gcd的优点是它本身简单,易用,对于不复杂的多线程操作,会节省代码量,而block参数的使用,会使代码更为易懂,建议在简单项目中使用

  9、 iOS性能优化(初级)

  1) 用ARC管理内存

  2) 在正确的地方使用reuseidentifier

  3) 尽可能使view透明

  4) 避免庞大的xib

  5) 不要block主线程

  6) 在imageviews中调整图片大小

  7) 选择正确的collection

  8) 打开zip压缩

  10、 简单描述下客户端的缓存机制?

  1) 缓存可以分为:内存数据缓存、数据库缓存、文件缓存

  2) 每次想要获取数据的时侯

  1> 先检查内存中有无缓存

  2> 在检查本地有无缓存

  3> 最终发送网络请求

  4> 讲服务器返回的网络数据进行缓存(内存、数据库、文件),以便下次读取

  11、 iOS控制器view的生命周期

  1> init函数——初始化

  2> awakefromnib——在loadview之前的工作放在这里

  3> viewdidload——一个viewcontroller一个生命周期内这个函数只会调用一次

  4> viewwillappear——view将要出现,每次view消失再出现都会调用

  5> viewwilllayoutsubviews——简要对子视图进行布局 6> Viewdidlayoutsubviews——完成对子视图进行布局 7> viewdidappear——视图将要出现在屏幕上

  8> viewwilldisappear——view将要消失

  9> viewdiddisappear——view已经消失

  看了“ios面试题及答案”的还看了:

1.软件测试常见面试题及答案

2.管理人员面试题及答案

3.关于事业单位常见的面试题及答案

4.面试问题及答案

5.ios面试技巧

52696