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
- test questions
- Test TimeZone Questions
- web test interview questions
- Test yourself: Simple programming questions
- Sample Test Questions on ABAP Programming
- Some questions can test your C ability
- Questions
- Questions
- questions
- Questions
- Questions
- questions
- Questions
- questions
- questions
- questions
- questions
- questions
- HDOJ 3231 Box Relations 拓扑排序
- IE浏览器文档模型 (内核)判断
- 如何编译OpenWrt
- shell eval命令详解【转】
- 确定比赛名次 之拓扑排序
- test questions
- 加快网站访问速度的9大方法
- java
- hdu 3265 线段树扫描线(拆分矩形)
- [Ant][StartWithAnt] 第七章 Ant扩展包ant-contrib的使用
- Linux 学习 1 安装 JDK
- progisp下载时报错Chip Enable Program Error 后续解决
- POJ 1380 Equipment Box(大矩形包含小矩形判定)
- PHP header()函数实现文件下载功能