iO开发工程师面试题--高级

来源:互联网 发布:java中的单例模式 编辑:程序博客网 时间:2024/05/21 10:54

高级iOS开发工程师面试题

CALayer与UIView的区别

最大区别是 图层(CALayer)不会直接渲染到屏幕上。

UIView是iOS系统中界面元素的基础,所有的界面元素都集成自它。它本身完全是由CoreAnimation来实现的。

真正的绘图部分,是由一个CALayer类来管理的。

一个UIView上可以有n个CALayer,每个layer显示一种东西,增强UIView的显示。

这道题本人论文中曾经写过。

GCD

GCD是Apple开发的一个多核编程的较新的解决方法。

GCD是一个替代注入NSThread等技术的很高效和强大的技术,完全可以处理如数据锁定和资源泄露等复杂的异步编程问题。

扩展:进程与线程,GCD的使用,操作队列。异步队列,异步与同步与实现。

TCP与UDP

  • TCP(传输控制协议),提供面向连接的、可靠的、点到点的通信。
  • UDP(用户数据报协议),提供非连接的不可靠的店到多点的通信。

用TCP还是UDP,看程序注重哪一方面,可靠还是快速。

socket连接与http连接

  • http连接:短连接,即客户端向服务器端发送一次请求,服务器端响应后,连接即会中断。
  • socket连接:socket连接就是所谓的长连接。理论上客户端和服务器端建立起连接后不会主动断掉。

扩展:各自怎么实现,工作原理是什么。

TCP三次握手

顺序和原理
第一次握手:客户端发送SYN包(syn=j)到服务器,同时进入SYN_SEND状态,等待服务器确认。

第二次握手:服务器接收syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器端进入ESTABLISHED状态,完成第三次握手。

iOS中对象之间有哪些通信方式?

代理、block、通知、KVO

扩展:
代理如何实现,注意什么
block如何避免循环引用,在ARC和MRC下如何防止循环引用。
通知如何实现。
kvo和kvc的知识。

http协议的特点,GET请求与POST请求,https呢?

http协议是短连接,都是客户端主动发送请求,服务器做出响应。服务器响应之后,连接断开。
Get请求没有请求体。Post请求含有请求体
https协议:安全超文本传输协议。基于HTTP开发,用在客户计算机和服务器之间交换数据。它使用安全套戒子层(SSL)进行信息交换,简单来说是http的安全版。

扩展:如何实现网络获取数据,1系统自带,2第三方,如AFNetworking

xml和json数据解析

xml数据解析有两种解析方式:DOM解析与SAX解析。
- DOM解析必须完成DOM树的构造,在处理规模较大的xml文档时很耗内存,占用资源较多。
- SAX是用时间驱动模型,解析XML文档时没遇到一个开始或者结束标签、属性或者一条指令,程序就产生一个时间来进行相应的处理。SAX相对应DOM来说,更适合操作大的XML文档。

json数据解析:第三方的JSONKit和iOS自带的json解析类,常用系统自带的,效率较高。

tableview的复用,设计模式

使用,特点
单例,组合设计模式
UIButton的设计模式等

数据存数

偏好设置实现
plist文件
sqlite数据库如何存储数据。
Core Data的相关知识,从创建到存储。

断点续传是如何实现的?

原理、内容

Core开头的内容,

比如CoreAnimation和CoreGraphics,分别使用CA和CG做过些什么动画或者图像上的内容。
动画和绘图

NSOperationQueue、GCD

算法 数据结构(important)、操作系统、网络知识

算法:如冒泡算法,二分法
数据结构中链表、二叉树,一个算法的时间复杂度和空间复杂度等

0 0
原创粉丝点击