qq的iOS面试题目

说明:答案作为参考。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值