iOS_Dev

iOS面试题目

2016-03-04  本文已影响377人  miliPolo

1.请简述UIView与CALayer有什么不同。

2.Block什么情况下会保留实体内引用到外部对象,什么时候要用__block或__weak ?

3.NSDictionary类使用了哪些数据结构和算法?

4.类别跟扩展的区别?

1:类别是类的扩展,只可以声明方法,不可以声明变量。并且,类别的方法优先级较高,可覆盖原类方法。

2:类别的方法中,不可以调用super方法。--类别的局限

3:category 方法可能会覆盖于同一个类class 的其它 category 中的方法。但也可能被覆盖,因为不法预知他们的加载优先顺序,出现这种情况通常会在编译时出错。如果在一个开发的SDK中使用了类别, 就最好保证类别名不同于使用者的类别名, 以及类别方法也不同于使用者的类别方法名, 通常通过加前缀来做到。

使用类别:

1。对框架提供类的扩展(没有源码,不能修改)。

2。 不想生成一个新的子类的情况下,比如对 NSArray 的扩展。

3。 方便做项目管理,可以将一份源码在多个地方共享或者做方法版本管理、多人协作开发、用本地版本替换公共版本实现。

某些情况下,我们需要声明一个@property,它对外是只读的(readonly),而对内是可读写的(readwrite),这时,可以通过Extensions实现

4.NSString

4.类方法、实例方法与Runtime特性的联系?

5.block调用时,变量的生命周期有哪几种,分别是什么样的?

6.CALayer的多个Sub layer的数据结构,以及重绘顺序?

7.你有多少种方法为UIImage添加一个圆角

8.CoreAnimation是如何开始和结束显示动画?

9.如何把NSArray里NSNumber对象以顺序或反序排序?

10.如何从Core-Data数据库取数据?

11.Core-Data是线程安全吗,如不是,可以怎样做才可以是线程安全?

12.如何实现asynchronous dispatch block?

13.在ARC里,弱引用和强引用有什么区别?

14.view第一次起动时的生命周期是什么呢?重载(reoload)及移除(remove)时生命周期又是什么?

15.UITableView及UICollectionView有什么区别?

16.动态绑定

17.在ARC的情况下,容易造循环引用的情况有哪些?

18.怎么理解MVVM,在cocoa中MVVM如何实现?

19.给定一个单向链表,求出该链表倒数第m个元素(m>0)

struct Item{

int iValue;

Item *pNext;

};

Item setIttem(Iitem *item,int m);

20.非递归实现折半查找数据元素x

int serach(int a[],int x, int low,int high){

int mid;

if(low>high) return -1;

while(low <= high){

mid = (low +high)/2;

if(x == a[mid]) return mid;

else if(a[mid]

else if (a[mid]>x) high = mid -1;

}

return -1;

}

21.MVC优点不正确的是?

A.低耦合性,B.高重用性和可适用性 C、较低的生命周期成本 D、代码高效率

22.下面哪个方法不属于NSObject和内省(Instrospection)方法?

A、inti, B、isKindOfClass C、responseToselector D、isMemberOfClass

23.OC中线程中描述不正确的是?

A.使用NSThread创建、使用GCD的dispatch

B.直接使用NSOperation,然后将其加NSOperatinQueue;

C.在主线程执行代码,方法时performSelectorOnMainThread

D.如果想延时执行代码可以用performSelector:onThread:withObject:wainUtilDone:

24.

iPhone5分辨率320*568,像素640*1136 @2x

iPhone6分辨率375*667,像素375*1334 @2x

iPhone6 Plus分辨率414*736,像素1242*2208 @3x(注意这个分分辨率下渲染后,图像

等比降低pixel分辨率至1080p(1080*1920)

上一篇下一篇

猜你喜欢

热点阅读