//联系人:石虎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.程序设计更加的复杂:比如线程之间的通信,多线程的数据共享