zoukankan      html  css  js  c++  java
  • IOS面试题总结

    iOS面试题:

    一:网络理论知识的理解

    1:Internet物理地址和IP地址转换采用什么协议

    ARP(Address Resolution Protocol)地址解析协议

    2:Internet采用哪种网络协议?该协议的主要层次结构?

    TCP / ip  应用层、传输层、网络层、数据链接层

    二:Object-C、iPhone的面试相关

    1:什么是多态

    多态:不同对象以自己的方式响应相同的消息的能力叫做多态。

    2.你项目中用到什么设计模式

    MVC模式、单例模式、委托模式、观察者模式

    1)MVC模式:

    MVC模式考虑三种对象:模型对象、视图对象、和控制器对象。

    模型对象:代表特别的知识和专业技能,它们负责保有应用程序的数据

    和定义操作数据的逻辑。

    视图对象:知道如何显示应用程序的模型数据

    ,而且可能允许用户对其进行编辑。

    控制器对象:是应用程序的视图对象和模型对象之间的协调者。

    2)单例模式:

    下面这些类都是采用了单例:

    NSApplication、 NSFontManager、 NSDocumentController、

    NSHelpManager、 NSNull,NSProcessInfo、 NSScriptExecutionContext、

    NSUserDefaults

    单例模式的实现:

    +(WatchDog *)luckDog

    {   @synchronized(self){

      

              if(nil==_instance){        

            _instance=[[WatchDog alloc] init]      

                 }

                retrun _instance;

      } 

    }

    3)委托模式:

    把某个对象要做的事情委托给别的对象去做。

    那么别的对象就是这个对象的代理,代替它来打理要做的事。

    反映到程序中,首先要明确一个对象的委托方是哪个对象,

    委托所做的内容是什么。

    委托代理的作用:

    代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他

    类,而不需要获取到那些类的指针。可以减少框架复杂度。
另外一点,

    代理可以理解为java中的回调监听机制的一种类似。

    4)观察者模式:

    一个对象发现变化,立刻通知另外一个对象或多个对象。

    Iphone的 NSNotificationCenter就是使用观察者模式。

    UIApplication *app = [UIApplication sharedApplication];

     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:)                   

    name:UIApplicationWillTerminateNotification   object:app];

    3:数据存储的形式有哪些?

    1)Sqlite

    2)NSString(writetofile) ,NSData(writetofile), NSArray

    (writetofile 必须是string data 等类型 plist文件),  NSDictionary

    (writetofile)这些基本类型都可以直接进行文件存取。

    3)对象序列化可将对象保存在文件里。

    4)Core data 跟对象序列化差不多,只不过提供了可视化创建将被序列化

    的对象的模型。(NSEncodeing)

    5)直接进行io操作。NSInputStream, NSOutputStream 

    4:怎样查看一个对象的引用计数?  retainCount方法

    5:KVO是什么,KVC是什么?有什么特性?

    理解KVC与KVO(键-值-编码与键-值-监看)

    1)、Key-value coding 机制允许通过变量名设置和获取变量值。                   

    [myObject setValue:valueObject forKey:@"myKey"];                   

    [myObject valueForKey:@"myKey"];

     KVC只能处理对象,不能处理int、float等类型; 

     2)Key-value observing    将变量与某个控件绑定,当变量变化时,将

    通知控件进行相应改变。

    6.ASIDownloadCache 设置下载缓存

    它对Get请求的响应数据进行缓存(被缓存的数据必需是成功的200请求):

    [ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];

    当设置缓存策略后,所有的请求都被自动的缓存起来。

    另外,如果仅仅希望某次请求使用缓存操作,也可以这样使用:

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

    [request setDownloadCache:[ASIDownloadCache sharedCache]];

    缓存存储方式

    你可以设置缓存的数据需要保存多长时间,ASIHTTPRequest提供了两种策略:

    a,ASICacheForSessionDurationCacheStoragePolicy,默认策略,基于session的缓存数据存储。当下次运行或[ASIHTTPRequest clearSession]时,缓存将失效。

    b,ASICachePermanentlyCacheStoragePolicy,把缓存数据永久保存在本地,

    如:

    ASIHTTPRequest *request = [ ASIHTTPRequest requestWithURL:url ];

    [ request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy ];

  • 相关阅读:
    计算日期之差
    大数相加
    NY-字符串替换
    HDU1004之总是wa的细节问题
    指针在字符串简单应用
    mybatis~SQL映射
    java实现递归(1)
    apk、图片下载工具(1)
    签到规则工具(1)
    短信发送工具(2)
  • 原文地址:https://www.cnblogs.com/wq-gril/p/4253791.html
Copyright © 2011-2022 走看看