面试题3

来源:互联网 发布:淘宝网卖妇婴用品 编辑:程序博客网 时间:2024/06/10 22:31

23. OC里怎么实现多继承

OC 没有多继承。用协议实现多继承,把协议中的方法在实现的类中重写C++有多继承,多继承其实用好了很方便。C++多继承很容易出现二一性比如:

A { int a;}
B:A,C:A
D : B, C那么int a到底是继承自谁的单继承


24.解释KVCKVO
Key value coding, Key value observer.
Kvc
是路径访问的规范,kvo是观察某个变量的变化过程
KVO 可以观察某个对象的变量变化过程,KVC是满足被观察的编码规范。
KVC/KVO 类似于代理,通知中心。都是一种通讯方法。

25. 什么是单例模式

单例就是在多个对象之间共享数据,类似于全局变量,比如数据库打开一次,多个界面都可以使用

26. NSString *name = @”com”,[name release]会出现什么情况

这个代码不满足 objective-c的内存管理黄金法则。没有alloc

release,



27. 列举所知道的 iOS API

28. 列举所知道的 iOS 的类
29.列举所知道的iOS UI控件
30.解释C++/STL Listmapsetvectorlist =~ array
map =~ dictionary
set =~ nsset
vector =~ array
31. C/C++OC怎么混用

.m -> .mm

32. POST请求的链接参数怎么拼接

POST 参数有2中,一种文件POST一种非文件POST,对于非文件POST格 式 (form-data/x-www-urlencoded) 是name=xxx&id=22&sxx=33
对于文件 POST(multiple/form-data)


33. POSTGET有何区别

 *1、post请求 请求地址和参数分离,比get更加安全   get请求的参数 直接暴漏在外面 不安全
 *2、get请求一般获取服务器的数据(下载数据/提交参数) 不能上传文件,而post两者都可以
 *3、get请求在浏览器中字符串长度最大限制为1024,post 没有限制
 *4、post 上传文件 文件大小不能超过4G
 *5、get请求 NSURLConnetion 请求下来的数据,NSURLConnection 会做一定的数据缓存,post请求,请求下来的数据NSURLConnection不做数据缓存

34. 本地存储方式有哪几种

数据库,nsuserdefauts,file , plist,archieve归档比较小的就放在nsuserdefaults(以文件设计的存放在Libraray)数据库里面适合存放一条一条的记录
file 一般存普通文件,图片,视频,音频等
plist 存放比nsuserdefaults大一些的
归档
nsarchieve 可以存对象

35.解释OC里的id类型
id 是泛型指针,可以指向任何oc类型,
id =~ NSObject *
id
objc_objecttypedef,执行Class对象

36. retaincopyreadonlyreadwrite的区别
retain对计数器+1 copy是创建一个新对象,readonly只产生getter函数,readwrite产生setter, getter函数


37. copy是深拷贝还是浅拷贝
copy 缺省是浅拷贝.但是copy也可以做成深拷贝


38. copymutableCopy区别
copy 是拷贝,mutableCopy是可变拷贝,比如把NSString 通过mutableCopy变 成NSMutableString,NSArray通 过mutableCopy变成NSMutableArray.
NSString -
àNSMutableString, NSArrayàNSMutableArray,

NSDictionaryàNSMutableDictionary, NSData->NSMutableData;

39. 怎么实现对象的本地存储

归档 NSArchieve


40. HTTP协议、Socket协议的区别

 

数据协议格式

编程

HTTP

 

ASI, NSUrlconnection

TCP长连接

UDP

BSD SocketAsyncSocket

IP

  

HTTP 启动一个NSUrlConnectiondidFinish

长连接,长期的和服务器保持连接。目的是为了避免每次都要连接。因为和服务器连接的过程非常复杂。也耗时。所以连接一次。HTTP短连接只要处理完就断掉,下次重新连接 对服务器的负担小.

 长连接对服务器压力很大。

41. 什么是 Push Notification

42. 遍历数组的三种方式有什么区别
for forin iterator

forin 也叫快速循环。为什么他叫快速循环,原因是速度快?为什

么速度快?可以通过优化提前把forin 里面的array数组数组全部

导入到 cpu cache中。因为cache访问速度比内存快至少100

43. NSArray, NSDictionary这些是如何做的?

NSArray 使用链表做的NSDictionary使用 hash表做出来的

44. C++怎么调用C的方法

extern “C” int foo(){ };


45. Blocks语法有什么优点
Blocks 类似于c中回调函数,和代理类似的,类似于java中的listener匿名函数

46. Framebounds有什么区别
Frame 是子视图相对于父视图的坐标系统,x y width height,boundsuiview自己的坐标系统bounds x y=0

47. 什么叫异步下载,怎么实现图片的异步下载48.什么是缓存


49. ScrollView的复用机制
滚动过程中把 scrollview里面的 超出屏幕的view 放在重用队列中,在滚动过程中如果有新的view进来,首先从重用队列中取得view,如果没有就新创建一个。


50. 什么是委托代理模式

委托代理是2个对象之间的一种通讯方式。一方使用协议,代理

另外一方实现协议,类似于回调,blocks等语法。目的是为了软件设计的低耦合


51. 什么是通知中心

通知中心是多对多的平等的通讯模式。主要用在多个对象之间松耦合的通讯模式。对象和对象之间通过通知的名字就可以进行关联通讯。

52.解释关键字staticconstinlinestatic inlinevolatile

static 修饰变量表示静态变量,根据作用域 不同
extern static是相反的。
Static 修饰函数是表示函数在本文件有效

Static inline 联合在一起表示内联函数。类似于宏
Const 修饰变量和变量的内容只读
Volatile 表示每次都从内存中真正的读取。主要是用于嵌入式中,读取硬件。

53.如何实现2个线程 一个线程+1一个线程-1

int sum;
NSLock *sumLock;- (void) demo {

sumLock = [[NSLock alloc] init];
[NSThread detachNewThreadSelector:@selector(thread1:) toTarget:self withObject:nil];[NSThread detachNewThreadSelector:@selector(thread2:) toTarget:self withObject:nil];

}
- (void) thread1:(id)arg {

while (1) {[sumLock lock];

sum++;
[sumLock unlock];

[NSThread sleepForTimeInterval:1];}

}
- (void) thread2:(id)arg {

while (1) {[sumLock lock];

sum--;
[sumLock unlock];
[NSThread sleepForTimeInterval:0.5];

}}

54. OC中有私有方法吗?怎么实现
.m文件中实现Category,只是在.m中方法

55. OC中有私有成员变量吗?

怎么实现.m文件中实现匿名类别Category

56. 成员变量的作用域有哪几种

@public, @protected, @private

57. 数据库能不能存图片,怎么存?
可以存图片, nsdata存,但是我们一般不这样存,我们存路径把图片存在沙盒中。










0 0
原创粉丝点击