iOS工程师需掌握的基础知识

机构:成都华育 时间:2016-01-06 点击:892

  1.列举几种进程的同步机制,并比较其优缺点。你知道面试题。

  答案:原子操作信号量机制自旋锁管程,会合,分布式编制

  2.进程之间通信的途径

  答案:共享存储编制消息传递编制管道:以文件编制为基础

  3.进程死锁的原因

  答案:资源竞争及进程推进秩序作歹

  4.死锁的4个必要条 件

  答案:互斥、请求保持、不可剥夺、环路

  5.死锁的处理

  答案:鸵鸟策略、预防策略、制止策略、检测与解除死锁

  6.堆和栈的区别

  管理方式:对付栈来讲,是由编译器主动管理,无需我们手工控制;对付堆来说,开释劳动由程序员控制,容易产生memory leak。

  申请大小:

  栈:在Windows下栈是向低地址扩展的数据布局,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是编制预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),其他手机开发。如果申请的空间突出栈的糟粕空间时,将提示overflow。因此,能从栈获得的空间较小。

  堆:堆是向高地址扩展的数据布局,是不连续的内存区域。这是由于编制是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机编制中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

  碎片问题:对付堆来讲,频繁的new/势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对付栈来讲,则不会存在这个问题,因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块从栈中间弹出

  分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由编译器进行开释,对于Android开发。无需我们手工完成。

  分配效率:栈是机器编制提供的数据布局,计算机会在底层对栈提供接济:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是C/C++函数库提供的,它的机制是很纷乱的。

  7.什么是键-值键途径是什么

  模型的本质是通过一个简单的键(通常是个字符串)来指定的。 视图和控制器通过键来查找相应的属性值。在一个给定的实体中,同一个属性的所有值具有相同的数据类型。键-值编码技术用于进行这样的查找—它是一种间接访问对象属性的机制。

  键途径是一个由用点作分隔符的键组成的字符串,用于指定一个连接在一起的对象本质序列。第一个键的本质是由先前的本质决定的,接下来每个键的值也是绝对付其前面的本质。键途径使您可以以独立于模型完成的方式指定相关 对象的本质。通过键途径,您可以指定对象图中的一个任意深度的途径,使其指向相关对象的特定属性。

  了解更多软件开发培训学习相关信息,请关注成都计算机培训学校

返回顶部