面试题系列(一)
来源:互联网 发布:最优化理论与方法pdf 编辑:程序博客网 时间:2024/05/17 12:47
1.进程和线程有什么区别,存在什么联系?
进程:
在系统中正在运行的一个应用程序,是系统资源分配的基本单位,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址,一个进程所拥有的数据和变量只属于他自己。
线程:
进程中相对独立的可执行单元,所以也成为轻量线程,是操作系统进行任务调度的基本单元,他与父进程的其他线程共享进程所拥有的全部代码空间和全局变量,但用于独立的堆栈(局部变量对于线程来说是私有的)。线程是进程的一部分,一个没有线程的进程可以看作是单线程,线程有时候被称为轻量进程,也是CPU调度的一个基本单位。
联系:
一个进程至少拥有一个线程—主线程,也可以拥有多个线程,一个线程必须拥有一个父进程,多个进程可以并发执行,一个线程可以创建和撤销另外一个线程,同一个进程的多个线程之间可以并发执行。
区别:
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程造成影响。线程是一个进程中的不同执行路径,线程有自己的堆栈和局部变量,单线程之间没有单独的地址空间,一个线程死掉等于整个进程死掉,所以,多进程的程序比多线程的程序健壮。
2.浅复制和深复制的区别
要实现copy功能,须遵守nscopying协议,并实现协议规定的方法
深拷贝:
a.源对象和副本对象是不同的2个对象
b.源对象引用计数不变,副本对象引用计数加1
c.产生了新的对象
浅复制:
a.源对象和副本对象是统一对象
b.源对象(副本对象)引用计数加1,相当于做一次retain操作
c.没有产生新的对象
3.内存中堆区和栈区的区别
堆区(heap)一般是由程序员分配与释放,若程序员不释放,则会内存溢出。
栈区(stack)由编译器自动分配释放,存放方法的参数值,局部变量的值。
4.属性修饰符
assign:普通赋值,一般常用于基本数据类型
retain:引用计数加1,获得对象的所有权
nonatomic:不加同步,多线程并发访问会提高性能。
strong:强引用;weak:弱引用,在ARC中,使用strong告诉编译器帮助我们自动插入retain,weak是普通赋值,相当于手动管理内存的assign。_unsafe_unretained与weak功能一致。区别在于指向的对象销毁后,weak会将变量置为nil,防止野指针。ARC也存在内存泄漏的可能。
5.自动释放池
是nsautorelease类的一个实例,当向一个对象发送autorelease消息时,该对象会自动入池,待池销毁时,将会向池中所有对象发送一条release消息,释放对象。
6.KVO KVC
KVC(键值编码)是一种简介访问对象实例变量的机制,该机制可以不通过存取方法就可以访问对象的实例变量。
KVO(键值观察)是一种能使得对象获取到其他对象属性变化的通知机制
7.new和init/alloc的区别
基本相同,区别在于alloc分配内存的时候使用了zone,zone在给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升程序处理速度。而且init有很多方法
8.代理delegate和通知、block的使用区别
代理与block一般用于2个对象1对1的通信,代理需要定义协议方法,代理对象实现代理方法,并且需要建立代理关系才可以实现通信。block更加简洁,不需要定义繁琐的协议方法,但是通信事件比较多的话,建议使用代理,通知主要用于1对多的情况下通信,而且通信对象之间不需要建立联系,但是使用通知,代码的可读性差。
- 面试题系列(一)
- 面试题系列一
- 面试题系列 (一) 算法
- 前端面试题系列(一)
- DBA面试题系列一
- IT公司笔试面试题系列(一)
- IT公司笔试面试题系列(一)
- IT公司C++笔试面试题系列(一)
- IT公司笔试面试题系列(一)
- 经典面试题---字符串系列(一)---删除字符串
- 计算机网络面试题 系列一(排名400多还不不错)
- 几道常考的前端面试题(蘑菇街)系列一
- Android面试题详细整理系列(一)
- C/C++经典面试题(系列一)
- 面试题(一)
- 面试题(一)
- 面试题 (一)
- 面试题 (一)
- React Native带你实现scrollable-tab-view(二)
- Linux Shell编程入门
- 题目22-素数求和问题
- 【15】Bootstrap — 输入框组
- ThreadPoolExecutor + Callable + Future Example
- 面试题系列(一)
- (转)ICO泡沫:8万本金赚套房子和宝马 几分钟十几万没了
- 【转载】UCOS临界代码问题以及解决办法
- HDOJ_1002_A + B Problem II
- 跳动的心
- java基础--关于封装、继承、重写与多态
- 量子通信 VS. 信息安全 探讨
- 最近见到的一些2017年的名企校招题
- 音视频相关知识