面试题2(个人心得体会)

面试题(2)

1.SDK

SDK即第三方组件,可以使用经过授权的SDK进行程序开发,常见的有验证码、第三方分享、支付功能、通讯功能,或者第三方地图SDK等

2.Foundation、UIKit、AVFoundation,MapKit、CoreLocation,CALayer

为系统的内置框架,这里说一下iOS程序的4大层,设备层为设备与函数之间的交互,这方面由苹果封装,不需要开发人员处理;数据层,进行相关数据的处理;应用层,核心代码的实现;视图层,展示在屏幕上的层。(个人理解)

3.SQL、CoreData

在进行比较庞大的数据处理的时候,一般采用数据库SQLite的形式,数据库提供增删改查的功能,可以很方便的就进行数据的定位,缺点是编写麻烦。

CoreData本质上也是SQLite,只不过是经过了苹果的封装,在开发中无需进行SQL的任何操作,便可以进行数据库的创建和增删改查

关于SQL的操作指令在个人博客上有记录

4.第三方类库(AFNetWork、SDWebImage、FMDB

AFNetWork是封装了NSURLSession的一个第三方类库,它方便了开发过程中对于网络请求的编写

SDWebImage是关于图片缓存机制的第三方类库,它在库里面封装了许多相关线程的函数,缓存原理简单的说就是先从本地缓存区查看是否存在,不存在则进行异步请求,请求完毕后返回主线程更新UI,同时将缓存图片存入缓存区

FMDB是封装了OC在进行数据库SQL操作的类库,由于在OC中进行数据库的编写是通过C语言的,编写起来比较不便,FMDB的出现大大优化了在进行数据库编写的代码量

5.本地以及网络GitHub

关于gitHub其实就是为了团队协同开发,或者分享自己的代码给更多的程序员。

要使用gitHub需要先创建本地远程仓库(通过终端命令行的方式),然后将工程通过该远程仓库提交到缓冲区、编写更新日志、提交即可。在获取工程的时候同样需要在远程仓库进行操作,从缓冲区获取。详细的在我的个人博客有记录

6.多线程的使用

关于在什么情况下使用哪种多线程方式

首先NSThread,它是经过苹果封装的,完全面向对象的,可以直接操控线程对象,使用很方便,但是它的生命周期需要程序员手动管理,所以比较少用。

GCD,也称闭包。使用的是C语言,操作简单,组合性强,十分的灵活,并且不需要手动管理生命周期,所以使用的比较多。也可以称为block,但是也有缺点,因为其是C编写的,有些时候不如用NSOperation编写好,因为NSOperation已经面向对象化,支持很多在OC中的功能,比如KVO,可以轻松的设置依赖关系

在使用GCD的时候尤其需要注意block的内存管理,防止循环引用

NSOperation,是苹果封装GCD的成果,将其面向对象化,本质上还是基于GCD的,像刚刚说的,因为其已经面向对象化,所以支持很多在OC开发中的功能,在程序中使用能使程序的结构性更好,因为他具有面向对象的特点(封装继承多态)

使用NSOperation的方式有两种:

NSInvocationOperation 和NSBlockOperation;

两者没有本质区别,但如果是使用block形式进行代码组织,使用相对方便些

7.地图功能

要在app中添加地图功能,有两种方式:1.基于原生框架;2.导入第三方SDK。在开发中根据需求来确定使用哪一种。如果需求不高,只是实现基本的地图功能,建议使用原生的,优点是开发灵活,不占内存;如果app中地图功能比较主要,还是使用第三方组件SDK,第三方的优点是功能强大,使用便利,缺点是通过导包的方式会导致程序文件过大。

8.拍照功能

添加拍照功能有两种方式,一种是使用系统自带相机,这种方式使用方便,但是不灵活,如果想要定制相机的话需要在框架下的AVCaptureSession,就可以构造符合需求的相机了。

9.TCP/HTTP网络协议

网络协议,就是两台设备之间要进行通讯必须遵循的规则。

TCP/IP协议分为四个层次,一般我们并不需要了解所有层次的协议,只需要理解其中应用层和传输层的协议就行。就好比送快递,我们要关心的是用什么样式去包装它,这属于应用层,然后选择哪一家的快递,这属于传输层,而至于快递从哪条线路,什么方式送达,这里是网络层和接口层,这些问题不需要我们关心。

在TCP中,什么是socket?

socket又叫套接字,其实就是作为两台设备之间的连接端点,他可以将两台设备的传输连接起来

什么是HTTP?

http又叫超文本协议,属于应用层协议,在开发中比较常见的就是关于URL的。就像很常见的url前缀大都会有个http:

http常见的传输方式有get 和post,两者之间的主要区别在于数据传递上面。

get可以直接请求一个url,并且通过在url后面连接相关参数的方式请求更多的url,但是这种做法有一定的限制,服务器中对于url的长度是有限制的,那么get中url的后缀拼接总会有个限制,一般不超过1KB。这时候如果使用post,post可以将发给服务器的参数全部放在请求体中,理论上请求体是没有限制的(具体得看服务器的处理能力)。

在选择上,如果要传递大量数据,比如文件的上传,只能用post;同时get的安全性比post要差,在安全性能上考虑的话最好还是用post,但如果仅仅是获取数据,建议使用get,因为速度快,如果是进行增删改查,使用post

在OC中发送http请求有两种方式,原生NSURLSession或者第三方框架AFNetWork,同时需要注意的是,9.0之后的iOS已经不支持HTTP,改用更加安全的HTTPS,如果需要在app中进行HTTP请求,需要在info.plist中进行网络适配

10.XML的解析

在OC中一般通过两种方式解析XML格式数据:DOM和SAX

DOM解析的特点是讲整个XML数据艺术型结构存入内存中,这样的优点是可以直接定位指定数据,读取快速,缺点是占内存,而且不能读取大型数据

SAX解析的特点是逐行解析,不占内存,可以解析大型数据,缺点是解析速度慢,效率低,不能解析指定位置数据

11.什么是ARC

ARC是iOS5推出的新功能,简单说就是在代码中自动添加了release,不再需要手动的添加释放方法,简化了开发中的代码量,但是ARC并不是全能的,在开发中还是需要注意内存引用的问题

12.什么是MVC

MVC其实并不是什么新技术,说白了就是一种编程经验,通过将代码分类为 模型、视图、控制器,可以提升对程序的可维护性、可移植性和可复用性。

再详细的来说就是将代码分成数据层、视图层、控制中心,由控制中心作为数据层和视图层的连接枢纽,相关的数据处理在经过数据层处理之后,由控制器将其视图层互动,进行相应的数据变动

13.__block和__week

在block中,如果要修改局部变量,则需要加__block,这里的个人理解是将变量的指针复制了一份,仅仅是复制指针而已;而__week的使用是弱引用,在变量释放的时候,就会nil掉

14.static和const

static,当需要某个对象可以给整个类而非某个对象使用的时候,同时要求此成员变量隐藏在类的内部,对外不可见的时候,就是用static关键字修饰,如单例的创建

const,由他修饰的变量值不可变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值