OC面试题大全.doc_第1页
OC面试题大全.doc_第2页
OC面试题大全.doc_第3页
OC面试题大全.doc_第4页
OC面试题大全.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、objective-c中是所有对象间的交互是如何实现的?(深圳皆凯科技有限公司笔试题)通过代理去进行通讯,或者通过观察者消息模式,Blocks ,appdelegate2、如何将产品进行多语言发布,开发? Xcode对多语言支持比较好,除了 h m文件之外所有其它东西都可以多语言3、objective-c中是如何实现线程同步的? Mutexlock,NSCondtion lock,消息传送、编写函数_memmove说明如下:实现C语言库函数memmove的功能:将一块缓冲区中的数据移动到另一块缓冲区中。可能有重复。 / 、什么叫数据结构?(面试顺风快递iphone开发) 计算机 = 编程+数据结构、编程中,保存数据有哪几种方式?数组、自定义类、文件操作、数据库如:SQLite文件 plist NSUserDefaults sqlite 、Sizeof与strlen的区别和联系? 、什么是抽象类?抽象类有什么作用?能实例化吗?NSOperation 没有完全实现的类叫抽象类, C+,java抽象类不能实例化, 不能 NSOperation *a =NSOperation alloc init;、 用Objective-C写冒泡法 / 、你对interface和property的理解?interface申明一个类property就是申明2个函数,getter setter,编译器会自动产生2个函数retain, assign是什么意思、Iphone开发中控制类有什么作用?Controller, UIViewController, UINav, UITabBarControllerUIImagePickerController, UITableViewControllerUIView和UIViewController的区别 container、线程中有哪些函数?写出来。 NSThread detachNewXXXXX; 、有没有写过自定义的控件? 自己定义控件有2类,1类比较多的就是类似 RatingView UIJewels : UIButtonint x, y; int type; UIImage *image;UIImageView和UIImage UILabel和NSString 2. 用CG CoreGraphics drawRect: - |-| 每个UIView都有一个drawRect:、调用一个类的静态方法需不需要release? 静态方法就是类方法,不需要,类的方法对象放在autorelease中、do-while 与 while-do的区别?、写出几个死循环?while(1),for(;),用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 1。assign和retain,copy的区别assign就是和普通语言的赋值一样retain 在一个对象中保存该对象需要拥有的对象对该对象进行应用计数+1property (retain) 为了写程序方便copy主要是赋值一般 代理的申明都是assign 为什么原因有2个,1 根本就没有必要把代理的计数器+12. 主要是为了避免引用技术嵌套,递归2。如何持久保存数据NSUserDefaults, Plist, SQLite3, file3。网络方面得 比如如何检测联网 http xml等ASIHTTPRequest Reacheable.hm 原理是ifconfig 是不是有ip地址Reachability来判断是否有网络3G Wifi4。类之间得继承关系 比如UIview得父类是哪一个等等?UIResponder,处理触摸,touchBegin, touchEnd, nextResponder5。异常处理 都是自己判断 错误信息longjmp char *p = malloc(100);if (p = NULL) 在同一个类A中,有方法a和方法b,方法b如何调用方法a? self a;有A、B两个类,B类继承于A类,都实现了方法xx。创建B类实例b,如何让b调用A类? super a;const和Volatile分别代表什么意思?Volatile表示每次都从内存取数据 类型id代表什么意思? 面向对象包含哪些元素? 继承和分类的区别?Catogory Catogory实现起来麻烦一些,但是使用方便NSSet类的作用是什么? 集合 编写一个完整程序,在控制台打印字符串“HelloWorld!” 用递归实现计算n的阶乘。(用objective-c语法实现)obj-c有多重继承么?不是的话有什么替代方法? cocoa 中所有的类都是NSObject 的子类,多继承在这里是用protocol 委托代理来实现的。你不用去考虑繁琐的多继承,虚基类的概念。多态特性在 obj-c 中通过委托来实现。线程与进程的区别和联系? 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。 程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。 自动释放池是什么,如何工作? 当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。 1. ojc-c 是通过一种referring counting(引用计数)的方式来管理内存的, 对象在开始分配内存(alloc)的时候引用计数为一,以后每当碰到有copy,retain的时候引用计数都会加一, 每当碰到release和autorelease的时候引用计数就会减一,如果此对象的计数变为了0, 就会被系统销毁. 2. NSAutoreleasePool 就是用来做引用计数的管理工作的,这个东西一般不用你管的. 3. autorelease和release没什么区别,只是引用计数减一的时机不同而已,autorelease会在对象的使用真正结束的时候才做引用计数减一。什么是KVC和KVO?答:KVC(Key-Value-Coding)内部的实现:一个对象在调用setValue的时候,(1)首先根据方法名找到运行方法的时候所需要的环境参数。(2)他会从自己isa指针结合环境参数,找到具体的方法实现的接口。(3)再直接查找得来的具体的方法实现。KVO(Key-Value-Observing):当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针就会指向一个中间类,而不是真实的类。所以isa指针其实不需要指向实例对象真实的类。所以我们的程序最好不要依赖于isa指针。在调用类的方法的时候,最好要明确对象实例的类名。kvc 就是一种通过字符串去间接操作对象属性的机制。iphone中,自定义协议?Protocol , 看代理 viewController协议在oc中主要用在代理中绑定的概念?代理的概念?对它怎么理解?为了模块之间的松耦合网络编程中协议的概念。NetworkDataDelegate;3个函数理解 didReceive,判断是否实现某个方法,是某个类 respondsToSelector ,performSelector,conformstoProrocol,isKindofClass,isMemberofClass网络库 优点 缺点ASIHTTPRequest 老牌、功能强大、文档丰富 停止更新、新特性少、厚重AFNetWorking github上比较火的项目、有稳定的两个主要负责人、能支持比较新的特性、一直有更新 文档数目一般、有些功能貌似要自己写MKNetworkKit 支持ARC、号称要有 ASIHTTPRequest的功能,AFNetWorking的轻便 文档数目最少、只有作者一个主要负责人1 http 协议,get, post区别get是简单的http协议post是从客户端提交复杂的参数,包括文件2.如何判断一个 http 包结束一般在http请求投有content-length是表示后面数据有多长oc中有 connectionDidFinishLoading表示接受完成当然也可以根据接收多少了3 http 协议如何实现断点下载的使用http Range字段可以把当前传输了多少存在文件中,1.写一个NSString类的实现 +(id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; +(id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encodingNSString *obj;obj = self allocWithZone: NSDefaultMallocZone();obj = obj initWIthCString: nullTerminatedCString encoding: encoding;return AUTORELEASE(obj);2.写一个委托Delegate的interface答: protocol MyDelegate; class MyClass;interface MyClass: NSObject id delegate; / 委托方法 protocolMyDelegate - (void)didJobs:(NSArray *)args; end 3.obj-c有私有方法么?私有变量呢 答:在Objective-C中没有私有方法,只有静态方法和实例方法。但是可以用private修饰私有变量。用 .m文件中使用catogory来实现私有方法。4.obj-c的优缺点 objc优点: 1) Cateogies 2) Posing 3) 动态识别 4) 指标计算 5)弹性讯息传递 6) 不是一个过度复杂的 C 衍生语言 7) Objective-C 与 C+ 可混合编程 缺点: 1)不支援命名空间 2)不支持运算符重载 3) 不支持多重继承 4) 使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。 OC没有多重继承,Java也没有 C+才有OC使用协议来实现多重继承OC 冒泡排序- (NSArray *)bubble_sort:(NSArray *)arrayint tmp;int count = array count;/申请临时数组,以存放本来在oc对象数组里的内容int *tmpArray = (int *)malloc(sizeof(int)*count);if (tmpArray = NULL) printf(malloc error);return nil;/把oc对象数组里的内容暂时存放到临时数组里for (int i = 0; i count; i+) tmpArrayi = array objectAtIndex:i intValue;/冒泡排序过程for (int i = 0; i count-1; i+) for (int j = 0; j tmpArrayj+1) tmp = tmpArrayj;tmpArrayj = tmpArrayj+1;tmpArrayj+1 = tmp;/最后把把排序后的结果回写到oc对象数组里。NSMutableArray *results = NSMutableArray array;for (int i = 0; i count; i+) results addObject:NSNumber numberWithInt:tmpArrayi;/释放临时数组空间free(tmp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论