说明:答案作为参考。
1,Objective-C的内存管理方式, NSAutoreleasePool的作用
2,写一个retain方式声名属性的setter方法3,Objective-C与C的区别有哪些
4,列出你常用的几个设计模式,列出如何在Objective-C中实现与应用
5,drawRect, lasyoutSubViews的区别
6,列举Cocoa中常用的几种多线程实现,并谈谈多线程安全问题的几种解决方案,什么地方会用到多线程
7,Socket连接相关库,TCP,UDP的连接方法,HTTP的几种常用方式
ios工程师qq再一次电话面试题记录
1. 简述push原理,push的证书和其它的右什么不一样?
第 一阶段:BeejiveIM服务器把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务 的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。
2. viewcontroller的一些方法的说明viewDidLoad, viewWillDisappear, viewWillAppear方法的 顺序和 作用?
viewDidLoad:在视图加载后被调用
viewWillAppear:视图即将可见时调用。默认情况下不执行任何操作
viewDidAppear:视图已完全过渡到屏幕上时调用
viewWillDisappear:视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
viewDidDisappear:视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
先执行viewDidLoad再执行viewWillAppear。
3. frame和 bounds 的 区别 ,bound的大小改变frame 改变吗?
frame:描述当前视图在其父视图中的位置和大小。
bounds:描述当前视图在其自身坐标系统中的位置和大小。
改变。
4. sqlite中插入特殊字符的方法和接收到处理方法。
除’其他的都是在特殊字符前面加“/”,而 ' -> '' 。方法:keyWord = keyWord.replace("/","//");
5。谈谈你对数组和连表认识,还有你是怎么用他们的?
NSArray 用于对象有序集合(数组),初始化一个数组时,经常使用initWithObject 和 initWithObjects。没有s的表示使用一个指针初始化NSArray,初始化后,这个NSArray的实例只有一个数据,所以在调用没有s的函数的时候是不能以nil结束的;但是有s的就不一样了,哪怕只有一个数据,或者没有数据,必须使用一个nil结束。还有一个NSMutableArray可变对象数组,可以进行删除添加排序等一系列操作。
NSSet 用于对象无序集合,同数组相比,集合是一个无序的;不同元素的集合。数组中的元素可以重复,但是集合不同。
NSDictionary用于键值映射,key-value, key-value, ..... 一系列键值对。key(键)在整个dictionary是唯一的,通过key可以查询其对应的一个或多个value(值)。
6。socket编程简述
它是基于TCP/IP协议,Socket就是一个可以连通网络上不同计算机程序之间的管道,把一堆数据从管道的A端扔进去,则会从管道的B端(也许同时还可以从C、D、E、F……端冒出来)。管道的端口由两个因素来唯一确认,即机器的IP地址和程序所使用的端口号。Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也首先创建套接字,然后将该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。如同读出文件中的数据一样。
TCP/IP的socket提供下列三种类型套接字。 流式套接字、数据报式套接字、原始式套接字。
客户端编程步骤:
1:加载套接字库,创建套接字(WSAStartup()/socket()); 2:向服务器发出连接请求(connect()); 3:和服务器端进行通信(send()/recv()); 4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
常用第三方库:1,Asyncsocket库
7。冒泡算法。
- (NSMutableArray *)mySort :( NSMutableArray *) arr
{
int i,j,len;
NSObject *temp;
len=[arr count ];
for (i=len- 1 ;i>= 0 ;i--)
{
for (j= 0 ;j<i- 1 ;j++)
{
if ([[arr objectAtIndex :j] compare:[arr objectAtIndex :j+ 1 ]]> 0 )
{
temp=[arr objectAtIndex :j];
[arr replaceObjectAtIndex :jwithObject :[arr objectAtIndex :j+ 1 ]];
[arr replaceObjectAtIndex :j+ 1withObject :temp];
}
}
}
return arr; }
8。asihttp代码原理,异步请求的原理,异步请求最大数目,为什么只能这么多?
ASIHTTPRequest是一个简易使用的类库,通过包装CFNetwork API 来简化 和服务器端的通讯. 它编写的语言是Objective-C 能够应用于Mac OS X and iPhone 平台的应用程序.
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
这个数量是跟cpu有关的,并发性取决于cpu核数,每个核只能同时处理一个任务.4核cpu理论上可以并发处理4个任务,如果按http来算就是4个请求,但是cpu是抢占式资源,所以一般来说并发量是要根据任务的耗时和cpu的繁忙度来计算4个左右只是个经验值你开10个短耗时的任务和几个长耗时任务的效率是不同的。
9。http请求方式?
通常,HTTP的请求方式有3种,分别是:POST、GET、HEAD。POST和GET方法是用于数据发送的。
POST:它将要发送的数据单独放在一个流中进行发送,而不是附加在URL地址后面,这样做的好处是这些数据不会出现在URL地址中。
GET:它将要发送的数据直接添加在URL后面,如:www.sina.com.cn?username=""&password="",这样的好处是可以直接将数据加在URL后,而不需在用另外的流来发送这些数据,但是缺点也显而易见,它将用户的信息显示出来了。
HEAD:它是请求资源的元数据方法。在具体的应用中,我暂时还没遇到过,也不去对它进行研究,需要是在学习。
10。uiview的圆角属性设置方法。
m_mainImgView.layer.cornerRadius= 6;
m_mainImgView.layer.masksToBounds= YES;
11。 masksToBounds属性的作用。
决定子layer是否被当前layer的边界剪切,默认是NO。
from:http://blog.csdn.net/itianyi/article/details/8857031