美文网首页selector
iOS 网络和多线程面试题01~[有答案]

iOS 网络和多线程面试题01~[有答案]

作者: 石虎132 | 来源:发表于2017-06-17 20:56 被阅读188次

    //联系人:石虎QQ: 1224614774昵称:嗡嘛呢叭咪哄

    一.选择题(前三题是多选 ,后面为单选题)

    1.以下对堆和栈的描述正确的是(多选ABD)

    A.栈区[stack]由编译器自动分配并释放,一般存放函数的参数值,局部变量

    B.堆区[heap]由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系统回收.

    C.栈的内存大小是由程序员分配,内存地址是从高地址向低地址存(先进后出的原则)

    D.堆是向高地址扩展的数据结构,是不连续的内存区域.

    2.以下对Block的描述正确的是(多选ABCD )

    A.  Block是一种数据类型,可以被当做参数传递

    B.  Block是一个能工作的代码单元,可以在任何需要的时候被执行

    C.  默认情况下,不允许在块代码内部修改外部变量的数值

    D.  用Block传值时要注意循环引用,当Block内引用局部变量时要用__weak修饰此变量来解除循环引用

    3.以下对线程同步、异步、并发、串行以下描述正确的是(ABCD

    A.同步和异步决定了要不要开启新的线程,同步:在当前线程中执行任务,      不具备开启新的线程;

    B.异步:在新的线程中执行任务,具备开启新线程的能力;

    C.并发和串行决定了任务的的执行方式,并发:多个任务并发(同时)执行

    D.串行:一个任务执行完毕后,再执行下一个任务

    4.对以下四种多线程的技术简介错误的是( C)

    A.  pthread是一套通用的多线程API,适用于Unix\Linux\Windows等系统,跨平台\可移植,使用难度大

    B. NSThread 是使用更加面向对象,简单易用,可直接操作线程对象

    C. GCD是基于NSThread的,充分利用设备的多核

    D. NSOperation是基于GCD(底层是GCD)比GCD多了一些更简单实用的功能,使用更加面向对象

    5.对于语句NSString *str =[NSData alloc] init];在编译时和运行时分别是什么类型(  D )

    A.  编译时NSData,运行时NSData

    B.  编译时NSString,运行时NSString

    C.  编译时NSData,运行时NSString

    D.  编译时NSString,运行时NSData

    6.POST对上传的文件大小限制一般为( C )

    A.  512KB  B. 1M C. 2M  D.无限

    7.数组中可以添加以下那种空值(  B )

    A. Nil     是类的空指针类型

    B. NSNull  集合中的空值

    C. nil     是对象的空指针类型

    D. NULL    是其它类型(基本数据类型,C类型指针) 为空值

    8. 下面那个不是本地服务器的主机地址(D   )

    A. 127.0.0.1:每台机器内置的IP地址,指的就是机器本身

    B. localhost:等价于第1种情况的127.0.0.1

    C. 交换机\路由器分配的IP地址:真机测试一定要用这个,且真机和服务器得在同一个局域网内

    D. 255.255.255.0

    9.以下对copy和mutableCopy方法的描述错误的是( B  )

    A. copy或mutableCopy方法可以创建一个对象的副本

    B. copy 需要实现NSCoding协议来创建不可以变的副本

    C. mutableCopy需要先实现NSMutableCopying协议,创建的是可变副本

    D. Copy的目的是建立副本,同时修改原始对象和副本不会互相干扰

    10.请问下列哪个函数是用来播放带震动音效的( D  )

    A、AudioServicesCreateSystemSoundID(CFURLRefinFileURL, SystemSoundID *outSystemSoundID)

    B、AudioServicesDisposeSystemSoundID(SystemSoundIDinSystemSoundID)

    C、AudioServicesPlaySystemSound(SystemSoundIDinSystemSoundID)

    D、AudioServicesPlayAlertSound(SystemSoundIDinSystemSoundID)

    简答题

    1.什么是线程,进程,他们有什么关系,以及多线程的作用?

    答:

    线程:在应用程序当中执行的一段代码片段,每个线程都有自己执行的堆栈控件,

    进程:在系统当中正在运行的应用程序;

    线程与进程的关系:线程是进程的基本的执行单元,一个进程要执行的任务,必须要有线程

    多线程的作用:把耗时的操作放在子线程,避免阻塞主线程更新UI,提高程序执行的效率。

    2.请说明同步请求与异步请求的区别?

    答:

    同步请求:使用者通过单个线程调用服务,该线程发送请求,在服务器运行时发生阻塞,并且等待响应。

    异步请求:使用者通过两个线程调用服务,一个线程发送请求,而另一个单独的线程响应

    3.请说明什么是GET与POST 请求。

    答:GCD的语义是获取指定的URL的资源因为在传输过程中,数据被放在指定的URL中不安全,传输数据量小

    POST的语句是指定的URL的资源添加数据放在数据体中,按照变量和值相对应的方式,传到了action所指向的URL。

    4.优秀的移动应用程序必须具备那些特点?

    答:      移动网络应用:良好的UI +良好的用户体验 +实时更新的数据

    5.发送HTTP请求的方法有几种方式,并简介每种方式的作用?

    答:GET:获取指定的资源

    POST:2M  向指定的资源提交数据处理请求,在RESTful风格用于新增资源

    HEAD:获取指定的资源头部信息

    PUT:替换指定的资源

    DELETE:删除指定的资源

    OPTIONS:允许客户查看服务器的性能

    TRACE:回显服务器收到的请求,主要用于测试或诊断

    CONNECT:预留给能够将连接改为管道方式的代理服务器(HTTP代理实用)

    6.应用程序中有几种不同的内存区域,分别存储什么数据?

    答:(1).栈区[stack]由编译器自动分配并释放,一般存放函数的参数值,局部变量等

    (2).堆区[heap]由程序员分配和释放,如果程序员不释放,程序结束时可能会操作系统回收

    (3)全局区(静态区)[static]全局变量和静态表变量的储存是存放在一起的,初始化的全局变量和静态变量存放在一起的区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放

    (4)文字常量区存放常量字符串,程序结束后由系统释放

    (5)程序代码区存放函数的二进制代码

    7.请说说多线程的优点和缺点?

    答:

    优点:1.能适当提高程序的执行效率

    2.能适当提高资源利用率(CPU,内存利用率)

    缺点:1.开启线程需要一定的内存空间(默认请况下,主线程占1M子线程占用512KB)如果开启大量的线程,会占用大量的内存空间,会减低程序的性能

    2.线程越多,CPU 在调度线程上的开销就越大

    3.程序设计更加的复杂:比如线程之间的通信,多线程的数据共享

    相关文章

      网友评论

      • 夜幕青雨:C。默认情况下,不允许在块代码内部修改外部变量的数值

        D. 用Block传值时要注意循环引用,当Block内引用局部变量时要用__weak修饰此变量来解除循环引用

        这俩个不对呀,block内部可以修改外部变量,比如属性值。block内引用局部变量是不会引起循环引用的,局部变量分配在栈中,不可能引起循环引用吧
      • 石虎132:这些是关于网络编程 里面多线程的测试题 希望能帮到大家,谢谢
        东健FO_OF:如果能带上错误答案的错误原因就更好了:smile:

      本文标题:iOS 网络和多线程面试题01~[有答案]

      本文链接:https://www.haomeiwen.com/subject/waybqxtx.html