iOS程序员面试分类模拟21.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

iOS程序员面试分类模拟21

简答题

1.?请谈谈数据库中的事务。

正确答案:

事务是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果(江南博哥)所有操作完成,事务则提交,那么其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

?

2.?SDWebImage框架的框架结构是怎么样的?

正确答案:

SDWebImage框架的3个核心组件。

??1)SDWebImageManager:核心管理器。

??2)SDImageCache:缓存处理组件,主要对下载的图片进行内存缓存和磁盘缓存处理。

??3)SDWebImageDownloader|SDWebImageDownloadOperation:下载处理组件,主要负责在子线程中发送异步网络请求下载图片以及其他相关操作。

?

3.?什么是内存碎片?什么是内碎片?什么是外碎片?

正确答案:

内存碎片是由于多次进行内存分配造成的,当进行内存分配时,内存格式一般为:(用户使用段)(空白段)(用户使用段),当空白段很小的时候可能不能提供给用户足够多的空间,比如夹在中间的空白段的大小为5,而用户需要的内存大小为6,这样会产生很多的间隙造成使用效率的下降,这些很小的空隙叫碎片。

??内碎片是分配给程序的存储空间没有用完,有一部分是程序不使用,但其他程序也没法用的空间。内碎片是处于区域内部或页面内部的存储块,占有这些区域或页面的进程并不使用这个存储块,而在进程占有这块存储块时,系统无法利用它,直到进程释放它,或进程结束时,系统才有可能利用这个存储块。

??外碎片是由于空间太小,小到无法给任何程序分配(不属于任何进程)的存储空间。外碎片是处于任何已分配区域或页面外部的空闲存储块,这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。

??内碎片和外碎片是一对矛盾体,一种特定的内存分配算法,很难同时解决好内碎片和外碎片的问题,只能根据应用特点进行取舍。

?

4.?sprintf、strcpy、memcpy的功能分别是什么?

正确答案:

sprintf是将格式化的数据写入字符串。

??strcpy是字符串复制。

??memcpy是内存的复制。

?

5.?GCD如何实现线程同步?

正确答案:

NSOperation可以通过使用addDependency函数直接设置操作之间的依赖关系来调整操作之间的执行顺序从而实现线程同步,还可以使用setMaxConcurrentOperationcount函数来直接设置并控制最大并发数量,那么在GCD中如何实现呢?

??GCD实现线程同步的方法有以下3种:

??1)组队列(dispatch_group)。

??2)阻塞任务(dispatch_barrier_(a)sync)。

??3)信号量机制(dispatch_semaphore)

??信号量机制主要是通过设置有限的资源数量来控制线程的最大并发数量及阻塞线程实现线程同步等。

??GCD中使用信号量需要用到3个函数:

??1)dispatch_semaphore_create用来创建一个semaphore信号量并设置初始信号量的值。

??2)dispatch_semaphore_signal发送一个信号让信号量增加1(对应PV操作的V操作)。

??3)dispatch_semaphore_wait等待信号使信号量减1(对应PV操作的P操作)。

?

6.?什么是事务?

正确答案:

事务是数据库中一个单独的执行单元(unit),它通常由高级数据库操作语言(例如SQL)或编程语言(例如C++、Java等)书写的用户程序的执行所引起。当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,更改无效。

??例如网上购物,其交易过程至少包括以下几个步骤的操作:

??1)更新客户所购商品的库存信息。

??2)保存客户付款信息。

??3)生成订单并且保存到数据库中。

??4)更新用户相关信息,例如购物数量等。

??在正常的情况下,这些操作都将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果遇到突然掉电或是其他意外情况,导致这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、顾客银行账户余额不足等,都将导致整个交易过程失败。而一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,例如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态,即原有的库存信息没有被更新,用户也没有付

文档评论(0)

江南博哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档