iOS 面试题
来源:互联网 发布:德运淘宝旗舰店 编辑:程序博客网 时间:2024/06/06 02:42
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
oc的类不可以多重继承,可以实现多个接口,通过多个接口可以实现c++的多重继承;category是类别,类别可以不改变原有代码情况下往里面添加新的方法,只能添加不能删除和修改,如果方法和原有类中的方法相同,则会覆盖原来的方法。
2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?
#import 是oc导入头文件的关键字,只会导入一次,不会重复导入;@class 是告诉编译器声明某个类;#include是c/c++导入头文件的关键字,#import<>是导入系统文件头文件,#import””用来包含用户头文件。
3. 属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
1). readwrite可读可写特性,生成getter方法和setter 2). readonly只读属性,只会生成getter方法 不会生成setter方法 3). assign 是赋值特性,用于基本数据类型 4). retain 表示持有特性,setter方法先保留再赋值,引用计数加1 5). copy 表示赋值特性,setter方法将传入对象复制一份,引用计数加1。6).nonatomic 非原子操作 效率高效 atomic表示多线程安全
5.对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?
6.常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int
7.id 声明的对象有什么特性?
ID 可以指向任何OC对象
8.Objective-C如何对内存管理的,说说你的看法和解决方法?
9. 原子(atomic)跟非原子(non-atomic)属性有什么区别?
11. 内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
谁申请谁释放 关键字 alloc new 生成的对象需要手动释放
12.如何对iOS设备进行性能测试?
静态动态设置
13. Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
14. MVC设计模式是什么? 你还熟悉什么设计模式?
单例模式 只创建一次对象15 浅复制和深复制的区别?
16. 类别的作用?继承和类别在实现中有何区别?
类别的作用可以在不改变原有代码的情况下增加一个新的方法,不能删除和修改,如果方法和原来类方法一致,则会覆盖原来的方法;继承可以增加,修改,删除方法,并且可以增加属性。
17. 类别和类扩展的区别。
18. oc中的协议和java中的接口概念有何不同?
OC中的代理有2层含义,官方定义为 formal和informal protocol。前者和Java接口一样。
19. 什么是KVO和KVC?
20. 代理的作用?
21. oc中可修改和不可以修改类型。
比如NSArray和NSMutableArray。前者在初始化后的内存控件就是固定不可变的,后者可以添加等,可以动态申请新的内存空间。
22. 我们说的oc是动态运行时语言是什么意思?
多态。 主要是将数据类型的确定由编译时,推迟到了运行时。
23. 通知和协议的不同之处?
通知可以一对多,一条消息可以发送多个对象24. 什么是推送消息?
向客户推送消息25. 关于多态性
比如打印机可以打印黑白 彩色 等 子类指针可以赋值给父类
26. 对于单例的理解
27. 说说响应链
28. frame和bounds有什么不同?
29. 方法和选择器有何不同?
30. OC的垃圾回收机制?
OC2.0有Garbage collection,但是iOS平台不提供
31. NSOperation queue?
32. 什么是延迟加载?
33. 是否在一个视图控制器中嵌入两个tableview控制器?
34. 一个tableView是否可以关联两个不同的数据源?你会怎么处理?
我觉得可以设置多个数据源
35. 什么时候使用NSMutableArray,什么时候使用NSArray?
36. 给出委托方法的实例,并且说出UITableVIew的Data Source方法
UITableVIew的Data Source方法有- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
37. 在应用中可以创建多少autorelease对象,是否有限制?
答案:无
38. 如果我们不创建内存池,是否有内存池提供给我们?
答:界面线程维护着自己的内存池,用户自己创建的数据线程,则需要创建该线程的内存池
39. 什么时候需要在程序中创建内存池?
答:用户自己创建的数据线程,则需要创建该线程的内存池
40. 类NSObject的那些方法经常被使用?
其中类方法alloc、class、 description 对象方法init、dealloc、– performSelector:withObject:afterDelay:等经常被使用
41. 什么是简便构造方法?
答:简便构造方法一般由CocoaTouch框架提供,如NSNumber的 + numberWithBool: + numberWithChar: + numberWithDouble: + numberWithFloat: + numberWithInt:
42. 如何使用Xcode设计通用应用?
MVC43. UIView的动画效果有那些?
答:有很多,如 UIViewAnimationOptionCurveEaseInOut UIViewAnimationOptionCurveEaseIn UIViewAnimationOptionCurveEaseOut UIViewAnimationOptionTransitionFlipFromLeft UIViewAnimationOptionTransitionFlipFromRight UIViewAnimationOptionTransitionCurlUpUIViewAnimationOptionTransitionCurlDown
44. 在iPhone应用中如何保存数据?
1).通过web服务,保存在服务器上
2).通过NSCoder固化机制,将对象保存在文件中
3).通过SQlite或CoreData保存在文件数据库中
45. 什么是coredata?
答:coredata是苹果提供一套数据保存框架,其基于SQlite
46. 什么是NSManagedObject模型?
NSManagedObject是NSObject的子类47. 什么是NSManagedobjectContext?
答:NSManagedobjectContext对象负责应用和数据库之间的交互。
48. 什么是谓词?
谓词是NSPredicate 通过给定的逻辑条件完成数据筛选
49. 和coredata一起有哪几种持久化存储机制?
50. 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画?
51. 写出上面代码的Block的定义。
typedef?void(^animations)?(void);
typedef?void(^completion)?(BOOL?finished);
52. 试着使用+ beginAnimations:context:以及上述Block的定义,写出一个可以完成
+?(void)transitionWithView:(UIView?*)view?duration:(NSTimeInterval)duration?options:(UIViewAnimationOptions)options?animations:(void?(^)(void))animations?completion:(void?(^)(BOOL?finished))completion?NS_AVAILABLE_IOS(4_0);
53. 做过的项目是否涉及网络访问功能,使用什么对象完成网络功能?
54. 简单介绍下NSURLConnection类及+ sendSynchronousRequest:returningResponse:error:与– initWithRequest:delegate:两个方法的区别?
答: NSURLConnection主要用于网络访问,其中+ sendSynchronousRequest:returningResponse:error:是同步访问数据,即当前线程会阻塞,并等待request的返回的response,而– initWithRequest:delegate:使用的是异步加载,当其完成网络访问后,会通过delegate回到主线程,并其委托的对象。
55. 多线程是什么
58. block
66. C和obj-c 如何混用
iOS中arc的设置与使用-fobjc-arc或者-fno-objc-arc
67. Objective-C堆和栈的区别?
68. ViewController的didReceiveMemoryWarning怎么被调用:
答:[supper didReceiveMemoryWarning];
71.写一个”标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
75 . static 关键字的作用:
76. 线程与进程的区别和联系?
一个程序就是一个进程 一个进程宝航多个线程
82. cocoa touch框架
83. 自动释放池是什么,如何工作
87. http和scoket通信的区别。
http请求方式是客户端主动发请求,服务器才能响应,一次请求完毕后断开。
scoket 双方 都可以主动发送数据 长链接 一般在游戏开发活着股票开发要求即时性并要求发送数据量较大的情况。
88. TCP和UDP的区别
TCP注重数据安全 而UDP数据传输快一点,但安全性一般89. 你了解svn,cvs等版本控制工具么?
答: 版本控制 svn,cvs 是两种版控制的器,需要配套相关的svn,cvs服务器。
91. 静态链接库
.a文件在不同的工程中如果导入此文件就可以使用里面的类
92. fmmpeg框架
93. fmdb框架
答:数据库框架,对sqllite的数据操作进行了封装,使用着可把精力都放在sql语句上面。
95. 在一个对象的方法里面:self.name= “object”;和 name =”object” 有什么不同吗?
96. 请简要说明viewDidLoad和viewDidUnload何时调用
viewDidLoad 在view 从nib文件初始化时调用,此方法在编程实现view时调用,view控制器默认会注册memory warning notification,当view controller的任何view没有用的时候,viewDidUnload会被调用99. HTTP协议中,POST和GET的区别是什么?
1).GET 方法
GET方法提交数据不安全,数据置于请求行,客户端地址栏可见,POST数据在请求体里面。105. ?实现简单的表格显示需要设置UITableView的什么属性、实现什么协议?
106. ?Cocoa Touch提供了哪几种Core Animation过渡类型?
答: Cocoa Touch 提供了 4 种 Core Animation 过渡类型,分别为:交叉淡化、推挤、显示和覆盖。
107. ?UIView与CLayer有什么区别?
UIView 是所有的界面元素都继承它,CLayer是一个绘图类,用于设置一些绘图效果。
111. ?有哪几种手势通知方法、写清楚方法名?
答:
-(void)touchesBegan:(NSSet*)touchedwithEvent:(UIEvent*)event;
-(void)touchesMoved:(NSSet*)touched withEvent:(UIEvent*)event;
-(void)touchesEnded:(NSSet*)touchedwithEvent:(UIEvent*)event;
-(void)touchesCanceled:(NSSet*)touchedwithEvent:(UIEvent*)event;
114. ?解析XML文件有哪几种方式?
答:以 DOM 方式解析 XML 文件;以 SAX 方式解析 XML 文件;
115. ios 平台怎么做数据的持久化?coredata 和sqlite有无必然联系?coredata是一个关系型数据库吗?
116. ?tableView 的重用机制?
- iOS技术面试题
- ios面试题
- IOS面试题
- ios基础面试题
- IOS 面试题
- iOS开发面试题
- iOS 面试题二
- iOS面试题
- IOS 面试题
- ios 面试题
- IOS面试题详解
- ios面试题
- iOS面试题汇总
- ios基础面试题
- IOS面试题归总
- IOS面试题详解
- IOS面试题详解
- ios面试题
- AndroidStudio打包dalvik.system.PathClassLoader:couldn't find"xxx.so "
- rem的使用
- AD快速敷铜技巧
- Writing a sort comparison function
- 如何将一个新函数加到MATLAB函数库中
- iOS 面试题
- MySQL与Oracle的区别
- JS THIS 深入浅出 JavaScript 中的 this && 理解javascript函数调用和 this ** Javascript 普通函数和构造函数的区别
- iOS-动态库与静态库
- neo4j java 简单调用生成图
- dubbo整合springboot入门案例
- 解析Python类中的方法定义
- HTML全文转化为PDF技术选型研究与流行方法汇总
- build-essential的作用