下载此文档

(参考)iOS面试题汇总(二).docx


文档分类:通信/电子 | 页数:约23页 举报非法文档有奖
1/23
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/23 下载此文档
文档列表 文档介绍
是同步还是异步? kvo 是同步还是异步? notificatio n 是全进程空间的通知吗? kvo 呢? 是什么?kvo 是什么? 有什么特性? 48. 响应者链是什么? 上进程怎么通信? UNIX 主要支持三种通信方式: 1. 基本通信:主要用来协调进程间的同步和互斥(1) 锁文件通信通信的双方通过查找特定目录下特定类型的文件( 称锁文件) 来完成进程间对临界资源访问时的互斥;例如进程 p1 访问一个临界资源, 首先查看是否有一个特定类型文件, 若有, 则等待一段时间再查找锁文件。(2) 记录锁文件 2. 管道通信:适应大批量的数据传递 3. IPC :适应大批量的数据传递 的间隔周期准吗?为什么?怎样实现一个精准的 timer? w 用到了什么设计模式?还能再 foundatio n 库中找到类似的吗?(答案众多,不知道哪个是对的~~) 模板(Template) 模式,所有 datasource 和 delegate 接口都是模板模式的典型应用, position ,所有的 containerview 都用了这个模式观察者模式 observer ,所有的 UIResponder 都用了这个模式。 52 如果要开发一个类似 eclipse 的软件,支持插件结构。且开放给第三方开发。你会怎样去设计它?(大概思路) 53. main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答: 2,5 *(a+1) 就是 a[1] , *(ptr-1) 就是 a[4], 执行结果是 , &a+1 不是首地址+1 , 系统会认为加一个 a 数组的偏移, 是偏移了一个数组的大小(本例是 5个 int , int *ptr=(int *)(&a+1); 则 ptr 实际是&(a[5]), 也就是 a+5 原因如下: &a 是数组指针,其类型为 int (*)[5]; 而指针加 1 要根据指针类型加上一定的值, 不同类型的指针+1 之后增加的大小不同。a 是长度为 5 的 int 数组指针,所以要加 5*sizeof(int) 所以 ptr 实际是 a[5] ,但是 prt 与(&a+1) 类型是不一样的( 这点很重要) ,所以 prt-1 只会减去 sizeof(int*) , a,&a 的地址是一样的,但意思不一样, a 是数组首地址, 也就是 a[0] 的地址, &a 是对象(数组)首地址, a+1 是数组下一元素的地址,即 a[1],&a+1 是下一个对象的地址,即 a[5]. 54. 以下为 Windows NT 下的 32 位 C++ 程序,请计算 sizeof 的值 voidFunc ( char str[100] ){ sizeof( str ) =? } void *p= malloc( 100 ); sizeof (p)=? 答案:这题很常见了,Func( char str[100] ) 函数中数组名作为函数形参时, 在函数体内, 数组名失去了本身的内涵, 仅仅只是一个指针; 在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作, 可以被修改。 Windows NT 32 位平台下,指针的长度(占用内存的大小)为 4 字节,故 sizeof( str )、 sizeof( p) 都为 4。 55.- ( void ) *getNSString(const NSString *inputString) { inputString =@"This isa main test\n"; return ;} -main(void) {NSString *a=@"Main "; NSString *aString = [NSStringstringWithString:@"%@",getNSString(a)]; NSLog(@"%@\n", aString);} 最后问输出的字符串:NULL,output 在函数返回后,内存已经被释放。 56. 列举几种进程的同步机制,并比较其优缺点。答案: 原子操作信号量机制自旋锁管程,会合,分布式系统进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础进程死锁的原因答案:资源竞争及进程推进顺序非法死锁的 4 个必要条件答案:互斥、请求保持、不可剥夺、环路死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁 57. 堆和栈的区别管理方式: 对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容

(参考)iOS面试题汇总(二) 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数23
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1017848967
  • 文件大小0 KB
  • 时间2016-05-15