您的位置:首页 > 职场人生

iOS中常见的面试题

2015-11-23 21:40 274 查看
面试题

1:http / TCP / UDP TCP/ IP

HTTP协议即超文本传输协议对应于应用层协议,主要解决如何包装数据 简单对象访问协议 ,HTTP协议是基于TCP连接的

http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉.

tcp 是一种面向连接的、可靠的、基于字节流的运输通信协议。在收发数据前必须和对方建立可靠的连接

(TCP 客户端与服务端要进行三次握手,为了保证数据的安全性和可靠性)

前提:

服务端处于监听状态,监听是否有客户端连入

1、客户端连接到指定的服务端,确认服务端是否可用

2、服务端可用,客户端与服务端之间建立连接(连接成功后,可以进行数据的通信)

3、客户端长时间处于不活跃的状态,或者断开与服务端的连接时,服务端会收到相应的反馈

数据的传输效率比较低,耗时,耗资源

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送大量数据、对可靠性要求不高的应用环境。

TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据

2: 什么是多线程?解释多线程 NSThread NSOperation GCD ?

多线程:每一个iOS应用程序中都有一个主线程用来更新UI界面、处理用户的触摸事件、解析网络下载的数据,因此不能把一些太耗时的操作(比如网络下载数据)放在主线程中执行,不然会造成主线程堵塞(出现界面卡死,防止界面假死),带来极坏的用户体验。

iOS的解决方案就是将那些耗时的操作放到另 外一个线程中去执行,多线程异步编程是防止主线程堵塞,增加运行效率的最佳方法 1只在主线程刷新访问UI 2如果要防止资源抢夺,得synchronized 加锁保护 3.如果异步操作要保证线程安全等问题 尽量使用GCD

1:NSThread:优点:NSThread比其他两个轻量级

缺点:需要自己管理线程的生命周期,线程同步.加锁,睡眠,以及唤醒等。线程同步对数据的加锁会有一定的系统开销

2:GCD是(Grand Central ispatch)的缩写 ,从系统级别提供的一个易用地多线程类库,具有运行时的特点,能充分利用多核心硬件。GCD的API接口为C语言的函数,函数参数中多数有Block

3: NSOperation是一个抽象类,它封装了线程的细节实现,我们可以通过子类化该对象,加上NSQueue来同面向对象的思维,管理多线程程序。就是一个简单的以任务为导向的多线程模型。目的是为了不懂操作系统,不懂线程的人使用的

3UIView 的drawRect 和layoutSubviews分别如何触发调用,两个的关系是什么,他们在什么场景下使用?

UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。

综上两个方法都是异步执行的,layoutSubviews方便数据计算,drawRect方便视图重绘。

4 详解UIView、 的frame. bounds 和 center 属性

frame:描述当前视图在其父视图中的位置和大小。

bounds:描述当前视图在其自身坐标系统中的位置和大小。

center:描述当前视图的中心点在其父视图中的位置。

5:实现远程消息推送的步骤

1.注册:为应用程序申请消息推送服务。此时你的设备会向APNs服务器发送注册请求。

2:APNs 服务器接受请求,并将deviceToken返给你设备上的应用程序

3:客户端应用程序将deviceToken 发送给后台服务器程序,后台接受并储存 。

4:后台服务器向APNs服务器发送推送消息

5;APNs 服务器将消息发给deviceToken 对应设备上得应用程序

6:swift

1:没有main 函数,跟脚本语言很像

2: swift 中,if中后面的表达式只能是true or faults 不同于oc 中0 or 1 并且后面的()可不写

3:元组 多个相同数据类型或者不同的数据类型 组合在一起,这不同于oc中的数组(相同类型的集合)

4:可选值 (swift 特有的性质)

7:上线流程

1.配置证书

1.1进入https://developer.apple.com 进入 member center

1.2 配置电脑证书 (development开发者证书(真机测试电脑证书))(配置一次)

1.3配置 appID

1.4增加设备

1.5配置手机证书 /描述证书

配置之后以后就不用在配置了

2.双击证书 进行 配置代码工程 真机进行测试

2.1双击 p12证书 密码123456

2.2双击手机证书

证书安装一次就不用安装

1分配上线证书,这里面要针对这个APP分配一个用于上线的appid 和一个描述证书和发布证书 剩下的就是给自己证书设置个名字就可以下载该证书。上线证书就完成了

2 在ITunes 里面填写这个项目的所有信息 在这里每填好一个信息保存下来,

3. 把打包好的项目转换成 ipa格式就可以直接上传了

在给项目 找到icon图标,和启动页 之后

3.真机测试你的项目

3.1写bundle id-> com.1514.xxxx xxxx可以任意写

3.2设置 build Settings 搜索 code sign

选中 手机对应的手机证书 1514-developer

3.3选中真机设备进行测试

SVN与Git

SVN 优点:除包括了 CVS 的大多数特点外,还有一些如:文件⽬录可以方便的 改名、基于数据库的版本库、操作速度提升、权限管理更完善等功能非常好用。

SVN 缺点:代码库不是分布式,⽽而是集中在⼀个地方,所以导致跨国访问的时 候速度很慢,远程开发非常不利。其次由于代码库只有一份,特别是元数据都 存在服务器上,所以当服务器崩溃的时候损失严重。

GIT 优点:是免费、开源、它采用了分布式版本库的方式,不必服务器端软件⽀持,使源代码的发布和交流极其方便。每一个 GIT 克隆都是一个完整的文件库,含有全部历史记录和修订追踪能力。其最⼤特色就是“branch”及“合并”操作 快速、简便。·支持离线⼯工作,GIT 是整个项目范围的原⼦子提交,而且 GIT 中的 每个工作树都包含一个具有完整项目历史的仓库。

GIT 缺点:对 windows 以及中⽂文的⽀支持不是很好

单例:

1单例设计是用来限制一个类只能创建一个对象,那么此对象中的属性可以存储全局共享数据,所有的类都可以访问、设置此单例对象中的属性数据

/*

开发中
一般写单例类 没有必要写标准单例只需要写一个
非标准的函数+ sharedSingleton就够了,因为我们创建/获取单例都是调用函数sharedSingleton

有些时候我项目要求调用alloc
也要创建出单例而且
可能会让单例调用 retain/copy、release autorelease那么这个时候我们就必须要重写
官方的这些方法保证
不管调用什么函数始终程序只有一个对象

*/

//定义静态全局变量
staticSingleton * single =
nil;

+ (Singleton *)sharedSingleton{

//考虑线程安全

@synchronized(self){
if (single ==nil) {
single = [[selfalloc]
init];
}
}
return
single;
}
+ (id)sharedInstance
{

staticdispatch_once_t once =0;//保证其block块在应⽤用中只执⾏行⼀一次
static
id _sharedObject =nil;
dispatch_once(&once, ^{
_sharedObject = [[selfalloc]
init];
});
return _sharedObject;
}

什么是MVC?

MVC是一种架构设计,M表示数据模型,V表示视图、C表示控制器。

1数据模型:负责存储,定义,操作数据

2 视图:用来展示数据给用户,和用户进行操作交互

3控制器是M与V的协调者,控制器获取数据,将数据交给试图去展示

地图:

1.定位 导入库#import<CoreLocation/CoreLocation.h>

iOS8 定位1.在info.plist中添加 Privacy - Location Usage Description ,NSLocationAlwaysUsageDescription

2.在代码中 [_manager requestAlwaysAuthorization];

//开始定位

[gpsManagerstartUpdatingLocation];

2.地图

导入#import<MapKit/MapKit.h>
紧接着创建MKMapView接下设置经纬度 和缩放比例等

二、AFNetworking的用法

Af 它的核心类是AFURLConnectionOperation

AFURLConnectionOperation
这个类是继承于NSOperation,但是这个类是基于 NSURLConnection构建的,其希望既能够将下载任务任务放在一个新的线程之中,又希望能在后台线程接收
Delegate回调。它拥有NSURLConnecttion的一切方法和属性,所以通过他的代理协议,可以进行监控下载的情况,和下载完成的回调,


内存布局:栈段,堆段,数据段,代码段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: