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

来源:互联网 发布:mysql和oracle的比较 编辑:程序博客网 时间:2024/06/08 06:43

 //联系人:石虎  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 请求。

答:

GET的语义是获取指定的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.程序设计更加复杂:比如线程之间的通信,多线程的数据共享