[关闭]
@Rookie 2017-07-28T06:30:16.000000Z 字数 3319 阅读 1142

基础面试题4

未分类


1.UITableView中cell的复用是由几个数组实现的

A、1
B、2
C、3
D、3或4

答案:B

2.在线播放视频一般访问服务器中的 类型文件

A、M3U8
B、flv
C、MP4
D、data

答案:A

3.下面说法不正确的是

A、readwrite是可读可写特性: 需要生成getter方法和setter方法
B、readonly是只读特性 只会生成getter方法 不会生成setter方法;不希望属性在类外改变
C、assign是赋值特性,和weak一样,可用weak代替
D、retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;

答案:C

4.在UIKit中,frame和bounds的区别是

A、frame是bounds的别名
B、frame是bounds的继承类
C、frame的参考系是父视图坐标,bounds的参考系是自身的坐标
D、frame的参考系是自身坐标,bounds的参考系是父视图的坐标

答案:C

5.关于OC内存管理方面说法错误的是:

A、OC中的内存管理采用引用计数机制
B、autorelease pool 是OC中一种自动的垃圾回收机制
C、alloc new或copy来创建一个对象,那么你必须调用release或autorelease
D、OC的内存管理机制本质上还是C语言中的手动管理方式,只不过稍加了一些自动方法

答案:B

6.下面对UIView、UIWindow和CALayer理解错误的是:

A、UIView继承于UIResponder
B、UIResponder继承于NSObject,UIView可以响应用户事件
C、UIResponder继承与NSObject,CALayer继承于NSObject,CALayer可以响应事件
D、UIView是用来显示内容的,可以处理用户事件,CALayer是用来绘制内容的,依赖与UIView来进行显示

答案:C

7.关于block的存储域说法错误的是:

A、当block变量定义为属性的时候,必须使用copy修饰,retain无效,即retain和assign会造成野指针问题.
B、当对block进行copy操作的时候,此时block的内存区域为堆区.
C、当不使用block时需要使用Block_Release()进行销毁.
D、以上都是错误的;

答案:D

8.block内部没有使用局部变量的时候,内存存储在什么区域?

A、堆区
B、栈区
C、全局区
D、常量区

答案:C

9.下面说法错误的是:

A、UIScrollView主要的属性contentSize用来控制视图的滚动范围,
B、视图的变化显示主要由contentOffset偏移量来控制。
C、页面间的传值只可以使用属性和代理两种方式
D、UIPageControl一般会和UIScrollView一同使用

答案:C

10.对NSOperationQueue理解不正确的是

A、存放NSOperation的集合类
B、可以设置最大并发数
C、放进去的线程会自动执行
D、用户需要管理放进去的线程执行顺序

答案:D

11.当手指触摸到UIScrollView内容的一瞬间,不会产生下面的动作:

A、拦截触摸事件
B、tracking属性变为YES
C、调用相对应的点击方法
D、执行父类中的方法来实现功能

答案:D

12.3.NSRunLoop的以下描述错误的是()

A.Runloop并不是由系统自动控制的

B.有3类对象可以被run loop监控:sources,timers,observers

C.线程是默认启动run loop的

D.NSTimer可手动添加到新建的NSRunLoop中

  1. C (正确)
  2. - 只有主线程默认启动run loop,子线程等需要手动启动,且在特定的场景下需要启动:需要使用NSTimer等。

13.已知数据元素为(34,76,45,18,26,54,92,65),按照依次插入节点的方法生成一棵二叉排序树,则该树的深度为()

A.7

B.6

C.4

D.5

  1. D(正确)
  2. 根据二叉排序树的性质:
  3. 1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  4. 2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  5. 3)左、右子树也分别为二叉排序树;
  6. 所以根据性质:第一个数34为根节点;
  7. 第二个树:76>34,所以为34的右孩子;
  8. 第三个数45:因为34<45<76,所以4576的左孩子;
  9. 4个数1818<34所以为根节点的左孩子;
  10. 第五个数26:因为18<26<34,所以26在根节点的左子树上且为节点18的右孩子;
  11. 第六个数54:因为54>34,所以在根节点的右子树上,又45<54<76,所以5445的右孩子;
  12. 7个数92:因为92>76>34,所以9276的右孩子;
  13. 8个数65:首先64>34,所以为右子树上的节点,又65<76,所以为76左子树上的节点,又65>54>45,所以为54的右孩子
  14. 14.输入序列是ABC,输出序列变为BCA时,经过的栈操作为()
  15. A.push,push,push,pop,pop,pop
  16. B.push,push,pop,push,pop,pop
  17. C.push,pop,push,push,pop,pop
  18. D.push,push,pop,pop,push,pop

正确答案: B

  1. 15.关于浅复制和深复制的说法,下列说法正确的是()
  2. A.浅层复制:只复制指向对象的指针,而不复制引用对象本身。
  3. B.深层复制:复制引用对象本身。
  4. C.如果是浅复制,若类中存在成员变量指针,修改一个对象一定会影响另外一个对象
  5. D.如果是深拷贝,修改一个对象不会影响到另外一个对象

正确答案: A B C D

  1. 16.声明一个返回值为NSArray,并且带两个字符串对象的BLOCK类型变量:
  2. A.NSArray (*aBlock)(NSString * str,NSString *str2)
  3. B.NSArray ^(*aBlock)(NSString * str,NSString *str2)
  4. C.NSArray (^aBlock)(NSString * str,NSString *str2)
  5. D.NSArray *(^aBlock)(NSString * str,NSString *str2)

答案:(D)
//block用^来修饰

  1. 17.能够匹配 `[a-zA-Z]([a-zA-Z]|\d|_){7,9}` 此正则表达式的字符串是 ()
  2. A.TTON.CO.123
  3. B.TTON_CO
  4. C.TTON_CO123
  5. D.TTON_CO.TTON.CO123

正确答案: C
长度为8-10位的用户密码,以字母开头,包含字母、数字、下划线的组合

  1. 18.iOS中导航设计模式有几种?()
  2. A.平铺导航
  3. B.标签导航
  4. C.树形导航
  5. D.模态视图导航

ABC (正确)
平铺导航( UITabbarController ) 标签导航( UINavigationController ) 树形导航(UIPageViewController)

  1. 19.下面程序段的输出结果是什么:

int a = 10;
NSNumber *b = [[NSNumber alloc] initWithInt:a];
NSLog(@"%d", a+++b);

  1. A.21
  2. B.20
  3. C.30
  4. D.编译错误

答案:(D)
// 输出时类型不匹配,b是一个对象

  1. 20.以下哪一段代码不会抛出异常()
  2. A.NSArray *array=@[123];NSNumber * number=array[3];
  3. B.NSDictionary *dict=@{@"key":nil};
  4. C.NSString *str=nil;NSString *str2=[str substringFromIndex:3];
  5. D.NSString *str=@"hi";NSString *str2=[str substringFromIndex:3];

正确答案: C
A错 因为数组下标越界,下标从0~2有三个元素,下标3已经不在这个范围

B错 因为字典和数组中对于nil有特殊的含义,它表示元素个数的终止标记,不会被保存进字典或数组,要表示空可以使用[NSNull null]对象代替nil

C正确 因为向nil发送的任何消息都不会被响应也不会报错

D错 因为下标越界。
```

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注