[关闭]
@Rookie 2017-07-28T14:29:39.000000Z 字数 3337 阅读 1169

基础面试题2

未分类


1.下列关于自定义cell的步骤叙述错误的是?

A、创建一个类继承于UITableViewCell。
B、实现UITableView的初始化方法
C、确保所有的你想添加的子视图都在自定义Cell的初始化方法中创建
D、在Cell的子视图创建成功后,将子视图设置为属性

答案:B

2.UITableViewController是继承于UIViewController中的一个类,只不过比UIViewController中多了哪个属性?

A、scrollView
B、UIView
C、UIScrollView
D、tabelView

答案:D

3.自定义segue继承自那个类?修改跳转动画要重写哪个方法?

A、UIStoryboardSegue prepare方法
B、UIStoryboardSegue sender方法
C、UIStoryboardSegue identifier方法
D、UIStoryboardSegue perform方法

答案:D

4.GUI的全称是

A、Graphical User Interface
B、Grammer User Interface
C、Graph User Interface
D、Guide User Interface

答案:A

5.segue有三个重要属性分别是

A、controller、view、目标控制器。
B、标识符、view、目标控制器。
C、标识符、源控制器、目标控制器。
D、controller、源控制器、目标控制器。

答案:C

6.storyboard界面间跳转会执行

A、segueForPrepare
B、prepareForStoryBoard
C、segueForStoryboard
D、prepareForSegue

答案:D

7.对于UIScrollView,监控目前滚动的位置的属性是:

A、contentOffSet
B、contentSize
C、contentInset
D、scrollIndicatorInsets

答案:A

8.以下哪个控件不是继承于UIControl

A、UIButton
B、UITextField
C、UISlider
D、UITextView

答案:D

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

A、OC中的内存管理采用引用计数机制
B、autorelease pool 是OC中一种自动的垃圾回收机制
C、alloc
D、new或copy来创建一个对象,那么你必须调用release或autorelease

答案:B

10.下面关于深拷贝与浅拷贝理解正确的是:

A、深拷贝拷贝的是内容,浅拷贝拷贝的是指针
B、深拷贝和浅拷贝最大的区别就是子类对象的地址是否改变。
C、深拷贝是对对象本身复制,但是不对对象的属性进行复制。
D、如果子类对象的地址改变那么就是深拷贝。

答案:A

11.以下关于视图的frame与bounds的理解错误的是:

A、bounds是指这个view在window坐标系的坐标和大小
B、frame指的是这个view在它superview的坐标系的坐标和大小
C、frame和bounds是UIView中的两个属性(property)。
D、bounds是以自身左上角的点为原点的坐标系,frame是以父视图左上角的点为原点的坐标系。

答案:A

12.在MVC框架中,M与C通讯,通常使用什么方式?

A、KVO与通知
B、协议-代理
C、类目
D、属性

答案:A

13.当程序从后台将要重新回到前台的时候,会先执行以下哪个方法:

A、-(void)applicationDidFinishLaunching:(UIApplication*)application{ }
B、- (void)applicationWillEnterForeground:(UIApplication *)application{ }
C、- (void)applicationDidBecomeActive:(UIApplication *)application{ }
D、- (void)applicationWillTerminate:(UIApplication *)application{ }

答案:B

14.以下的代码会出现什么问题:
@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end

A、会造成循环引用
B、会造成死循环
C、会出现内存泄露
D、会出现野指针

答案:B

15.对于UIScrollView,scrollView将开始降速时,执行的方法是:

A、- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;{ }
B、- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;{ }
C、- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;{ }
D、- (void)scrollViewWillBeginDecelerating:

答案:D

16.已知数据元素为(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的右孩子

17.输入序列是ABC,输出序列变为BCA时,经过的栈操作为()
A.push,push,push,pop,pop,pop

B.push,push,pop,push,pop,pop

C.push,pop,push,push,pop,pop

D.push,push,pop,pop,push,pop

  1. 正确答案: B

18.能够匹配 [a-zA-Z]([a-zA-Z]|\d|_){7,9} 此正则表达式的字符串是 ()

A.TTON.CO.123

B.TTON_CO

C.TTON_CO123

D.TTON_CO.TTON.CO123

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

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

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

A.21

B.20

C.30

D.编译错误

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

20.以下哪一段代码不会抛出异常()
A.NSArray *array=@[1,2,3];NSNumber * number=array[3];

B.NSDictionary *dict=@{@"key":nil};

C.NSString *str=nil;NSString *str2=[str substringFromIndex:3];

D.NSString *str=@"hi";NSString *str2=[str substringFromIndex:3];

  1. 正确答案: C
  2. A 因为数组下标越界,下标从0~2有三个元素,下标3已经不在这个范围
  3. B 因为字典和数组中对于nil有特殊的含义,它表示元素个数的终止标记,不会被保存进字典或数组,要表示空可以使用[NSNull null]对象代替nil
  4. C正确 因为向nil发送的任何消息都不会被响应也不会报错
  5. D 因为下标越界。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注