- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面试题目1讲述
1.Objective-C有多重继承吗?不是的话有什么代替方法?
答:cocoa?中所有的类都是NSObject?的子类,多继承在这里是用protocol?委托代理?来实现的 。你不用去考虑繁琐的多继承?,虚基类的概念.多态特性?在?obj-c?中通过委托来实现.
2.简述#import跟#include的区别,@class呢?
答:@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要 使用#import而#import比起#include的好处就是不会引起重复包含
3.关键字volatile有什么含义?并给出三个不同的例子
答:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:???并行设备的硬件寄存器(如:状态寄存器)
??一个中断服务子程序中会访问到的非自动变量(Non-automatic?variables)???多线程应用中被几个任务共享的变量? a
???一个参数既可以是const还可以是volatile吗
??一个指针可以是volatile?吗?解释为什么。?
下面是答案:
??是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
??是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
?4.简述线程与进程的区别和联系
答:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。?进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
5.?简述readwrite,readonly,assign,retain,copy,nonatomic属性的作用
答案:@property是?一个属性访问声明,扩号内支持以下几个属性:
getter=getterName,setter=setterName,设置setter与?getter的方法名
readwrite,readonly,设置可供访问级别
assign,setter方法直接赋值,不进行?任何retain操作,为了解决原类型与循环引用问题
retain,setter方法对参数进行release旧值再retain新值,所有?实现都是这个顺序(CC上有相关资料)
copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再?Copy出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。
nonatomic,非原子性访问,不加同步,?多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例级(我是这么理解的...)。
6.写出以下代码的执行结果:
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],执行结果是2,5。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].
7.写一个委托的interface
答案:
@protocol?MyDelegate;
@interface?MyClass:?NSObjec
您可能关注的文档
- 面向对象程序设计第一章讲述.ppt
- 面对工业4.0,中国企业该做什么?讲述.ppt
- 面对影响孩子人生的大考讲述.ppt
- 面对挫折不用怕讲述.ppt
- 面向对象的与设计大作业文档讲述.doc
- 面对经济全球化李讲述.pptx
- 面对烟草危害,我们能够做什么讲述.ppt
- 信号与系统分析-1精要.ppt
- 项目安全生产策划书详解.doc
- 面对面顾问式销售2讲述.ppt
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)