test questions

来源:互联网 发布:微盘源码 编辑:程序博客网 时间:2024/06/06 07:49
  • test questions for ios developer.

  • 1、objective-c中是所有对象间的交互是如何实现的?(深圳皆凯科技有限公司笔试题)

  • 通过代理去进行通讯,或者通过观察者消息模式,Blocks ,appdelegate

  • 2、如何将产品进行多语言发布,开发?

  • Xcode对多语言支持比较好,除了 h m文件之外所有其它东西都可以多语言

  • 3、objective-c中是如何实现线程同步的?

  • Mutexlock,NSCondtion lock,消息传送

  • 4、编写函数_memmove说明如下:实现C语言库函数memmove的功能:将一块缓冲区中的数据移动到另一块缓冲区中。可能有重复。

  • //

  • 5、什么叫数据结构?(面试顺风快递iphone开发)

  • 计算机 = 编程+数据结构

  • 6、编程中,保存数据有哪几种方式?数组、自定义类、文件操作、数据库如:SQLite

  • 文件  plist NSUserDefaults sqlite

  • 7、Sizeof与strlen的区别和联系?

  • 8、什么是抽象类?抽象类有什么作用?能实例化吗?

  • NSOperation 没有完全实现的类叫抽象类, C++,java

  • 抽象类不能实例化, 不能 NSOperation *a =[[NSOperation alloc] init];

  • 9、  用Objective-C写冒泡法.

  • //

  • 10、你对@interface和@property的理解?

  • @interface申明一个类

  • @property就是申明2个函数,getter setter,编译器会自动产生2个函数

  • retain, assign是什么意思

  • 11、Iphone开发中控制类有什么作用?

  • Controller, UIViewController, UINav, UITabBarController

  • UIImagePickerController, UITableViewController

  • UIView和UIViewController的区别 container

  • 12、线程中有哪些函数?写出来。

  •     [NSThread detachNewXXXXX];

  • 13、有没有写过自定义的控件?

  •     自己定义控件有2类,1类比较多的就是类似

  •     RatingView

  •      UIJewels : UIButton

  • {

  • int x,   y;

  •    int  type;

  •     UIImage *image;

  • }

  • UIImageView和UIImage  UILabel和NSString

  •    2. 用CG CoreGraphics  drawRect:

  •      --------

  •      |-------| 每个UIView都有一个drawRect:

  • 14、调用一个类的静态方法需不需要release?

  •        静态方法就是类方法,不需要,类的方法

  • 对象放在autorelease中

  • 15、do-while 与 while-do的区别?

  • 16、写出几个死循环?while(1),for(;;),

  • 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)  

  • #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL  

  • 1。assign和retain,copy的区别

  • assign就是和普通语言的赋值一样

  • retain 在一个对象中保存该对象需要拥有的对象

  • 对该对象进行应用计数+1

  • @property (retain) 为了写程序方便

  • copy主要是赋值

  • 一般 代理的申明都是assign 为什么

  • 原因有2个,

  • 1 根本就没有必要把代理的计数器+1

  • 2. 主要是为了避免引用技术嵌套,递归

  • 2。如何持久保存数据

  • NSUserDefaults, Plist, SQLite3, file

  • 3。网络方面得 比如如何检测联网 http  xml等

  • ASIHTTPRequest  Reacheable.[hm]

  • 原理是ifconfig 是不是有ip地址

  • Reachability

  • 来判断是否有网络3G Wifi

  • 4。类之间得继承关系 比如UIview得父类是哪一个等等?

  • UIResponder,处理触摸,

  • touchBegin, touchEnd, nextResponder

  • 5。异常处理

  •    都是自己判断 错误信息

  • 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)encoding{

  • NSString *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 <MyDelegate> delegate;

  • }

  • // 委托方法

  • @protocol MyDelegate

  • - (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 *)array

  • {

  • int 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++) {

  • tmpArray[i] = [[array objectAtIndex:i] intValue];

  • }

  • //冒泡排序过程

  • for (int i = 0; i < count-1; i++) {

  • for (int j = 0; j < count-1-j; j++) {

  • if (tmpArray[j] > tmpArray[j+1]) {

  • tmp = tmpArray[j];

  • tmpArray[j] = tmpArray[j+1];

  • tmpArray[j+1] = tmp;

  • }

  • }

  • }

  • //最后把把排序后的结果回写到oc对象数组里。

  • NSMutableArray *results = [NSMutableArray array];

  • for (int i = 0; i < count; i++) {

  • [results addObject:[NSNumber numberWithInt:tmpArray[i]]];

  • }

  • //释放临时数组空间

  • free(tmpArray);

  • //返回结果

  • return [NSArray arrayWithArray:results];

  • }

  • @dynamic 意思是由开发人员提供相应的代码:对于只读属性需要提供 setter,对于读写属性需要提供 setter 和 getter。@synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码,以满足属性声明。

  • OC中frame与bounds有什么不同

  • Frame指的是:该view在父view坐标系统中的位置和大小(参照点是父类的坐标系统)

  • Bounds指的是:该view在本身坐标系统中的位置和大小(参照点是本身的坐标系统)

0 0