UIiOSM_iOS

UI基础--笔试题解析(含答案)

2015-12-30  本文已影响3445人  李xiao屁的忧伤

        1、以下对响应链说法错误的是:答案:(A)
        A、当事件发生的时候,响应链首先被发送给第一个响应者  //响应者链——检测触碰视图 :触碰屏幕->硬件检测->UIApplication->window->viewController->view->检测所有子试图->最终确认触碰位置.
        B、事件将沿着响应者链一直向下传递,直到被接受并作出处理
        C、如果整个过程都没有响应这个事件,则该事件最终要由APP Delegate做出处理
        D、一般情况下,在响应链中只要有对象处理事件,事件就会被传递 // 传递给该对象后不再传递.

    2、以下对多线程开发的理解错误的是:答案:(C)
    A、发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好
    B、多线程程序中,一个进程包含2个以上的线程(含2个)
    C、大量的线程降低代码的可读性,但不需要更多的内存空间 // 前半句正确,后半句错,需要更多的内存空间
    D、当多个线程对同一个资源出现争夺的时候要注意线程安全的问题

    3、实现一个生成Student实例对象的便利构造器的正确写法是:答案:(A)
    A、+ (id)studentWithName:(NSString *)newName andAge:(int)newAge
    {
      Student *stu = [[[Student alloc] initWithName:newName andAge:newAge] autorelease];
      return stu;
    }
    B、 - (id)studentWithName:(NSString *)newName andAge:(int)newAge
    {
      Student *stu = [[Student alloc] initWithName:newName andAge:newAge];
      return [stu autorelease];
    }
    C、 - (void)studentWithName:(NSString *)newName andAge:(int)newAge
    {
      Student *stu = [[Student alloc] initWithName:newName andAge:newAge];
      return [stu autorelease];
    }
    D、 + (void)studentWithName:(NSString *)newName andAge:(int)newAge
    {
      Student *stu = [[Student alloc] initWithName:newName andAge:newAge];
      return [stu autorelease];
    }

    4、获取tableview正在window上显示的cell的indexPath方法是:答案:(B)
    A、- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;// 获取cell
    B、- (NSArray *)indexPathsForVisibleRows;
    C、- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;// cell的点击方法
    D、- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath;

    5、下面关于深拷贝与浅拷贝理解正确的是:答案:(A)
    A、深拷贝拷贝的是内容,浅拷贝拷贝的是指针。
    B、深拷贝和浅拷贝最大的区别就是子类对象的地址是否改变。
    C、深拷贝是对对象本身复制,但是不对对象的属性进行复制。
    D、如果子类对象的地址改变那么就是深拷贝。

    6、关于OC内存管理方面说法错误的是:答案:(B)
    A、OC中的内存管理采用引用计数机制 // 内存释放后并不是内存立即被干掉,而是没有对象对它有持有权.
    B、autorelease pool 是OC中一种自动的垃圾回收机制 // 不是自动的回收.
    C、alloc、new或copy来创建一个对象,那么你必须调用release或autorelease
    D、OC的内存管理机制本质上还是C语言中的手动管理方式,只不过稍加了一些自动方法

    7、以下的代码会出现什么问题:
    @implementation Person
    - (void)setAge:(int)newAge {
      self.age = newAge;
    }
    @end答案:(B)
    A、会造成循环引用
    B、会造成死循环 // 该点语法本身是调用set语法,在set中调用set方法赋值,造成死循环.
    C、会出现内存泄露
    D、会出现野指针

    8、对于UIScrollViewController,scrollView将开始降速时,执行的方法是:答案:(D)
    A、- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;{ }// 开始拖拽
    B、- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;{ }// 已经减速完成,静止了
    C、- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;{ }// 结束滚动
    D、- (void)scrollViewWillBeginDecelerating:

    9、以下哪个控件不是继承于UIControl答案:(D)
    A、UIButton
    B、UITextField
    C、UISlider
    D、UITextView // UIScrollView的子类

    10、下面对UIView、UIWindow和CALayer理解错误的是:答案:(C)
    A、UIView继承于UIResponder
    B、UIResponder继承于NSObject,UIView可以响应用户事件。
    C、UIResponder继承与NSObject,CALayer继承于NSObject,CALayer可以响应事件。//CALayer不响应事件,只绘制内容
    D、UIView是用来显示内容的,可以处理用户事件,CALayer是用来绘制内容的,依赖与UIView来进行显示

    11、以下关于视图的frame与bounds的理解错误的是:答案:(A)
    A、bounds是指这个view在window坐标系的坐标和大小 // frame和bounde详解 http://www.jianshu.com/p/c9494fb01678
    B、frame指的是这个view在它superview的坐标系的坐标和大小
    C、frame和bounds是UIView中的两个属性(property)。
    D、一个是以自身左上角的店为原点的坐标系,一个是以屏幕左上角的点为原点的坐标系。

    12、以下哪个方法在当程序将要退出时被调用,且通常在此方法里写一些用来保存数据和一些退出前的清理工作。答案:(B)
    A、- (void)applicationExitsOnSuspend:(UIApplication *)application{ }
    B、- (void)applicationDidEnterBackground:(UIApplication *)application{ } // 程序进入后台要执行的方法,一般保存数据和清理在该方法中,虽然选项C是程序将要退出时被调用,但是数据保存和清理一般不在该方法中.
    C、- (void)applicationWillTerminate:(UIApplication *)application{ }
    D、- (void)applicationDidFinishLaunching:(UIApplication *)application{ }

    13、很多内置类如UITableViewController的delegate属性都是assign而不是retain,这是为了:答案:(D)
    A、防止造成内存泄露
    B、防止出现野指针
    C、防止出现过度释放
    D、防止循环引用

    14、以下不属于ios中实现多线程的方法是:答案:(D)// 还有一种:NSObject 实现异步后台执行
    A、NSThread
    B、NSOperationQueue
    C、Grand Central Dispatch(GCD)
    D、NSURLRequest

    15、对于UISearchBar,要实现实时搜索(即搜索内容实时发生变化时),会执行以下哪个方法:答案:(C)
    A、- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;
    B、- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;
    C、- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ }
    D、- (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar{ } 

    16、以下关于导航栏外观属性对应的解释错误的是:答案:(D)
    A、barStyle bar的样式
    B、translucent bar的透明度
    C、backgroundImage bar的背景图片
    D、barTintColor bar上控件的颜色 // bar本身的前端颜色

    17、当程序从后台将要重新回到前台的时候,会先执行以下哪个方法:答案:(B)
    A、- (void)applicationDidFinishLaunching:(UIApplication*)application{ }// 应用程序加载完毕
    B、- (void)applicationWillEnterForeground:(UIApplication *)application{ } // 将要进入前台
    C、- (void)applicationDidBecomeActive:(UIApplication *)application{ }
    D、 - (void)applicationWillTerminate:(UIApplication *)application{ }

    18、实现一个singleton的类,下面正确的是:答案:(A)
    A、static LOSingleton * shareInstance;
    + ( LOSingleton *)sharedInstance{
     @synchronized(self){
      if (shareInstance == nil) {
       shareInstance = [[self alloc] init];
      }
     }
     return shareInstance;
    }
    
    B、static LOSingleton * shareInstance;
    - ( LOSingleton *)sharedInstance{
     @synchronized(self){
      if (shareInstance == nil) {
       shareInstance = [[self alloc] init];
      }
     }
     return shareInstance;
    }
    
    C、+ (LOSingleton *) sharedInstance
    {
     LOSingleton *sharedInstance = nil ; // 少了static  应该是 static LOSingleton *sharedInstance = nil ;
     static dispatch_once_t onceToken;  
     dispatch_once (& onceToken, ^ {  
      sharedInstance = [[self alloc] init];
     });
     return sharedInstance;
    }
    
    D、- (LOSingleton *) sharedInstance
    {
     static LOSingleton *sharedInstance = nil ;
     static  dispatch_once_t onceToken;  
     dispatch_once (& onceToken, ^ {  
      sharedInstance = [[self alloc] init];
     });
     return sharedInstance;
    }

    19、当应用程序将要进入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了,此时会先执行以下哪个方法:答案:(D)
    A、- (void)applicationDidBecomeActive:(UIApplication *)application{ }
    B、- (void)applicationDidEnterBackground:(UIApplication *)application{ }
    C、- (void)applicationWillTerminate:(UIApplication *)application{ }
    D、- (void)applicationWillResignActive:(UIApplication *)application{ }

    20、应用程序启动顺序正确的是:
    ①在UIApplication代理实例中重写启动方法,设置第一个ViewController
    ②程序入口main函数创建UIApplication实例和UIApplication代理实例
    ③在第一个ViewController中添加控件,实现对应的程序界面。 答案:(B)
    A、①②③
    B、②①③
    C、①③②
    D、③①②

    21、对于UICollectionViewController,实现定义每个元素的margin(边缘 上-左-下-右) 的方法是:答案:(B)
    A、- (CGSize)collectionView:(UICollectionView *)collectionView
     layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {  
     return CGSizeMake();  
    }
    B、- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView
     layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
    {  
     return UIEdgeInsetsMake();  
    }
    C、- (CGSize)collectionView:(UICollectionView *)collectionView
     layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
    {      
     return CGSizeMake();  
    }
    D、- (CGSize)collectionView:(UICollectionView *)collectionView
     layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section
    {  
     return CGSizeMake();  
    }

    22、以下对于UIScrollView的属性,说法错误的是:答案:(D)
    A、bounces 控制控件遇到边框是否反弹
    B、pagingEnabled 控制控件是否整页翻动
    C、scrollEnabled 控制控件是否能滚动
    D、contentInset 滚动范围大小 // contentSize 才是滚动范围大小

    23、对于UIScrollViewController,监控目前滚动的位置的属性是:答案:(A)
    A、contentOffSet // 偏移量
    B、contentSize
    C、contentInset
    D、scrollIndicatorInsets

    24、在MVC框架中,M与C通讯,通常使用什么方式?答案:(A)
    A、KVO与通知
    B、协议-代理 // C 和 V 
    C、类目 
    D、属性

    25、对于UILabel,设置单词折行方式的属性是:答案:(B)
    A、textAlignment // 对齐方式
    B、lineBreakMode 
    C、numberOfLines
    D、sizeToFit // 自适应Size

    26、关于ViewController 的 alloc,loadView, viewDidLoad,viewWillAppear的调用,说法错误的是:答案:(C)
    A、alloc在初始化当前的ViewController时调用
    B、没有正在使用nib视图页面,子类将会创建自己的自定义视图层时调用loadView
    C、视图将要加载完毕时,viewDidLoad被调用
    D、视图即将出现的时候调用viewWillAppear

    27、关于系统自带的UITableViewCell,以下说法正确的是:答案:(D)
    A、Cell基本组成:编辑、内容、辅助
    B、编辑:editView。tableView被编辑时显示
    C、内容:contentView。包含imageView,textField等
    D、accessoryView。显示cell的辅助信息

    28、UITableView重用机制中,会将重用的cell放到哪种类型的集合中。答案:(B)
    A、NSMutableArray
    B、NSMutableSet
    C、NSDictionary
    D、NSMutableDictionary

    1、UISlider、UISwitch、UITextField这些类都继承于UIControl这个类。答案:(T)
    正确
    错误

    2、[textField resignFirstResponder]; 表示让文本输入框成为第一响应者, 弹出键盘进入编辑模式。答案:(F) // 取消第一响应者
    正确
    错误

    3、[self.view popToViewController: animated: YES];表示弹出一个视图控制器,到指定视图控制器上。答案:(F) // 返回(入栈出栈) 并没有弹出
    正确
    错误

    4、numberOfTapsRequired这个方法能获取到的是有几只手指点击。答案:(F)// 轻拍次数
    正确
    错误

    5、[segmentedControl titleForSegmentAtIndex: ]表示指定索引文字的选项。答案:(T)
    正确
    错误

附上一张继承关系图:

继承关系.jpg

MVC:

MVC.jpg
上一篇下一篇

猜你喜欢

热点阅读