iOS面试题总结(一)

一、OC的理解以及特性
OC是一门面向对象的语言,具有面向对象语言的特性,例如:封装,继承,多态。它具有静态语言的特性(如C++),又有动态语言的效率。
Objective-C具有的动态特性表现在:动态类型、动态绑定、动态加载。之所以叫做动态,是因为必须到了运行时(runtime)才会做一些事情。
1、动态类型:即运行时再决定对象的类型。
2、动态绑定:基于动态类型,在某个实例对象被确定后,其类型才会被确定下来,该对象的属性和响应的消息也被完全确定。
3、动态加载:根据需求加载所需要的资源进行加载,例如根据不同的机型进行适配。
二、简述对内存管理的理解
OC内存管理遵循8字方针:谁创建,谁释放。谁引用,谁管理。
OC通过引用计数来进行内存管理。当创建和引用一个对象的时候,需要向它发送alloc、copy、retain消息,这时这个对象的引用计数会+1,当释放一个对象的时候发送release消息或者autorelease消息,引用计数会-1,当对象的引用计数为0时,该对象所在内存空间会被释放掉。iOS 5.0 苹果公司推出了自动管理机制(ARC),不需要调用retain、release、autorelease,基于编译时的特性,使用ARC会在适当的位置插入release和autorelease。
三、如何理解MVC设计模式
MVC是一种架构模式,M表示的是数据模式Model,V表示的是视图View,C表示的是控制器Controller。
Model负责存储、定义、操作数据。
View用来展示数据给用户,与用户进行操作交互。
Controller是Model与View的协调者,Controller把Model中的数据拿过来给View。
其中,Controller可以直接与Model和View进行通信,但是Model和View不能直接进行通信。Controller和View之间的通信可以使用代理协议,Controller和Model之间的童心可以使用notification和KVO。
四、iOS中数据持久化方式有哪几种?都有什么特点?
数据存储的核心都是写文件。主要有四种:属性列表,对象序列化、数据库、CoreData。
属性列表、对象序列化适合小数据量存储和查询操作;
SQLite、CoreData适合大量数据存储和查询操作。
plist文件写入:只有NSString、NSArray、NSDictory、NSData可以writeFile,存储的依旧是plist文件。plist文件可以存储的类型是大概有7种,分别为:array,dictory,string,bool,data,date,number。
对象序列化:对象序列化是通过序列化的形式,将键值关系存储到本地,转化成二进制流。实现NSCoding歇息必须实现的两种方法。编码(对象的序列化):把不能存储到plist文件中的数据,转化成二进制的数据(NSData),可以存储到本地。解码:把二进制数据转化成本来的类型。
SQLite3:大量的有规律的数据使用数据库。这里有个第三方可以了解一下FMDB。
CoreData:苹果公司提供的一套框架,用来解决与对象生命周期管理、对象关系图管理和处久化等等问题,它是面相对象的API,通过管理对象进行增、删、改、查操作的。
五、线程和进程分别是什么?程序中为什么要使用多线程?
一个程序至少要有进程,一个进程至少要有一个线程。
进程:资源分配的最小独立单位,也是系统进行资源分别和调度的一个独立单位。
线程:进程下的一个分支,是进程的一个实体是CPU调度和分配的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源。
多线程编程的主要目的是防止主线程堵塞,增加运行效率
六、定时器和线程的区别
定时器:可以执行多次,默认是在主线程中;
线程:只能执行一次。
七、http协议的特点,关于http请求GET和POST的区别,什么是https协议
http协议是超文本传输协议,是一个短链接,是客户端主动发送请求,服务器做出响应之后,连接断开。http是一个属于应用层的面相对象的协议。
http协议主要包含两种报文:请求报文和响应报文。
请求报文主要是由请求行、请求头部、空行和请求数据4个部分组成。
响应报文主要由状态行、消息报头和响应正文3部分组成。
GET请求和POST请求的区别:get请求,参数在地址后面拼接,用?进行连接,各参数直接使用&连接,不适合传输大量数据,同时也不安全。post请求:参数在请求数据区放着,相对get请求更安全,并且数据大小没有限制(实际上web服务器会规定请求的数据大小)。
八、对NSUserDefaults的理解
NSUserDefaults是系统提供的一种存储数据的方式,主要用于保存少量的数据。默认存储到沙盒的Library下Preferences文件夹中。
把数据存储之后需要使用[[NSUserDefaults standardUserDefaults] synchronize],将数据同步到文件夹中。
九、类别的作用
1、给系统原有的类添加方法,不能扩展属性,如果类别中的方法的名字和系统原有的方法名字一样时,在调用的时候类别中的方法优先级更高。
2、分散类的实现:

+ (instancetype)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;

原本是属于NSIndexPath的方法,但是因为这个方法经常在使用UITableView的时候调用、跟UITableView的关系密切。所以把这个方法以类别的形式、声明在了UITableView.h中。
3、声明私有方法。某一个方法只实现,不声明,相当于是一个私有方法。
类别中不能够声明变量。类别不可以直接添加属性。
十、Apple设备中的尺寸和编程尺寸

设备分辨率屏幕尺寸倍数
iPhone 2GS320*4803.5英寸1X
iPhone 3G320*4803.5英寸1X
iPhone 3GS320*4803.5英寸1X
iPhone 4320*4803.5英寸2X
iPhone 4S320*4803.5英寸2X
iPhone 5320*5684英寸2X
iPhone 5S/C320*5684英寸2X
iPhone 6/6s375*6674.7英寸2X
iPhone 6plus/6s plus414*7365.5英寸3X
IPod Touch 1G320*4803.5英寸1X
IPod Touch 2G320*4803.5英寸1X
IPod Touch 3G320*4803.5英寸1X
IPod Touch 4G320*4803.5英寸1X
IPod Touch 5G320*5684.0英寸2X
IPad1024*7689.7英寸1X
IPad mini1024*7687.9英寸1X
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是 AVFoundation? AVFoundation是苹果公司提供的一个多媒体处理框架,它能够处理音频、视频、文本和图像等媒体类型,还能够实现录制、编辑、播放等多种操作。 2. AVFoundation的优点是什么? AVFoundation有以下几个优点: - 它可以在多个平台上使用,包括iOS、macOS和tvOS等。 - 它提供了灵活的API,可以对多种媒体类型进行处理。 - 它支持硬件加速,能够提高处理速度和性能。 - 它支持多种格式的媒体文件,包括MP3、AAC、H.264和MPEG-4等。 3. 如何使用AVFoundation实现音频录制? 在使用AVFoundation实现音频录制时,需要执行以下步骤: - 创建一个AVAudioSession对象,用于管理音频会话。 - 创建一个AVAudioRecorder对象,用于录制音频。 - 配置录音参数,例如音频格式、采样率、通道数、音频质量等。 - 调用AVAudioRecorder的record方法开始录音。 - 调用AVAudioRecorder的stop方法停止录音。 4. AVFoundation中的AVPlayerLayer是什么? AVPlayerLayer是一个CALayer子类,用于在iOS和macOS应用程序中显示视频内容。它可以显示一个AVPlayer对象的输出,并且支持全屏播放、画中画、视频内容缩放等功能。 5. 如何使用AVFoundation实现视频播放? 在使用AVFoundation实现视频播放时,需要执行以下步骤: - 创建一个AVPlayer对象,用于播放视频。 - 创建一个AVPlayerLayer对象,用于显示视频内容。 - 将AVPlayerLayer对象添加到视图层次结构中。 - 创建一个AVPlayerItem对象,用于管理视频资源。 - 调用AVPlayer的replaceCurrentItemWithPlayerItem方法将AVPlayerItem与AVPlayer关联。 - 调用AVPlayer的play方法开始播放视频。 6. 如何在AVFoundation中实现视频编辑? 在AVFoundation中实现视频编辑通常需要使用AVAsset、AVAssetTrack、AVComposition、AVMutableComposition等类。以下是实现视频编辑的大致步骤: - 创建一个AVAsset对象,用于表示视频资源。 - 创建一个AVMutableComposition对象,用于管理视频资源。 - 使用AVAssetTrack获取视频的音频和视频轨道。 - 使用AVMutableCompositionTrack将音频和视频轨道添加到AVMutableComposition中。 - 使用AVAssetExportSession导出编辑后的视频。 7. AVFoundation中的AVCaptureSession是什么? AVCaptureSession是用于管理视频和音频输入的会话对象。它可以管理多个输入设备(例如摄像头、麦克风等)并且可以将它们合并到单个输出中。使用AVCaptureSession可以方便地实现视频录制、视频流传输、实时视频分析等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值