原文出处:iOS基础问答面试题连载(一)-附答案

1.简单的描述下类扩展和分类的区别?(说2点)

2.简要的说明UIView的frame和bounds的区别

3.什么是控制器

4.简单的描述控制器的作用

5.简单的描述下storyboard的作用

6.简述程序的启动原理

7.IBOutLet有什么作用

8.IBAction有什么作用

9.IBAction和IBOutLet前缀IB是什么意思

10.简单描述父子控件


11. 解释下引用资源的时候每个选项的含义

12.UILabel如何设置自动换行

13.Character Wrap和Word Wrap的区别

14.contentMode的作用


15.initWithImage:的作用?

16.如何修改一个控件的frame属性?

17.如何抽方法?

18.通过imageNamed:这个方法加载图片有什么特点?

19.开发如何选择UILabel,UIImageView,UIButton


20.什么是自定义控件

21.通过代码如何自定义控件? 并且简单的描述下每一个步骤的理由?

22.什么是模型

23.通过XIB如何自定义控件? 并且简单的描述下每一个步骤的理由?

24.instancetype和id的区别

25. @property的使用策略

26.懒加载的好处?


27.如果是通过xib或者storyboard创建控件,初始化的操作可以在initWithFrame:方法中做吗?

28.通过alloc/init或者alloc/initWithFrame创建控件会不会主动加载xib?

29.用一个属性引用UI控件的时候为什么可以用weak?

30.如何隐藏一个控件?

31.如何用按钮来实现图片上文字下的效果?

自定义按钮,实现
-CGRecttitleRectForContentRect:(CGRect)contentRect
{
    // 返回文字的frame
}
-  (CGRect)imageRectForContentRect:(CGRect)contentRect
{
    // 返回图片的frame
}
- 自定义按钮,实现layoutSubViews方法调整按钮内部子控件的位置和尺寸

32.通过代码如何设置的内边距?

self.btn.contentEdgeInsets = UIEdgeInsetsMake(30, 30, 0, 0);
self.btn.titleEdgeInsets = UIEdgeInsetsMake(0, -30, 0, 0);
self.btn.imageEdgeInsets = UIEdgeInsetsMake(0, -30, 0, 0);

33.如何处理图片拉伸问题?

创建可拉伸的图片对象
bg = [bg resizableImageWithCapInsets:UIEdgeInsetsMake(10,10,10,10) resizingMode:..];//平铺和拉伸
UIImage *bg = ...

34.在xcode中如何配置拉伸图片?

35.KVC的作用?

- Key Value Coding 键值编码,可以修改属性的值,并且可以修改私有的成员比变量;可以取值

36.如何监听scrollView停止滚动?

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

37.定时器一般有什么作用?以及如何使用定时器

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;

可以创建一个自定执行任务的定时器对象

38.scrollView的使用场景

39.UIScrollView无法滚动的原因

40.scrollEnable和userInteractionEnable的区别

41.alwaysBounceVertical alwaysBounceHorizontal的作用

42.如何监听UIScrollView各种行为

43.代理的注意点

44.利用UIScrollView如何实现内容缩放

45.如何监听控件的行为?


46.通过autolayout如何实现UILabel包裹内容?

47.什么是适配?

48.点和像素的区别

49.什么是Autolayout?

50.简单描述下Autolayout的2个核心概念约束和参照

51.Autolayout的警告和错误

52.通过代码添加约束的原则

53.什么是VFL

54.通过约束如何实现动画

[UIView animateWithDuration:1.0 animations:^{
    [添加了约束的view的父控件 layoutIfNeeded];
}];

55.性能优化的具体实现

56.UITableView如何展示数据?

// 多少组数据
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
// 每一组有多少行数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
// 每一行显示什么内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

57.UITableView的有哪几种样式

58.UITableViewController的认识

59.性能优化的思路

60.UITableView的性能优化的实现步骤

/**  每当一个cell要进入视野范围就会调用这个方法 */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.定义一个重用标识
    static NSString *ID = @"tim";
    // 2.去缓存池取可循环利用的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    // 3.缓存池如果没有可循环利用的cell,自己创建
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
        // 建议:所有cell都一样的设置,写在这个大括号中;所有cell不都一样的设置写在外面
        cell.backgroundColor = [UIColor redColor];
    }
    // 4.设置数据
    cell.textLabel.text = [NSString stringWithFormat:@"第%zd行数据",indexPath.row];
    return cell;
}

61.registerClass:的作用

62.通过注册的方法如何实现cell的重用

NSString *ID = @"wine";
- (void)viewDidLoad {
    [super viewDidLoad];
    // 注册ID 这个标识对应的cell类型为UITableViewCell
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.先去缓存池中查找可循环利用的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    // 2.设置数据
    cell.textLabel.text = [NSString stringWithFormat:@"%zd行的数据", indexPath.row];
    return cell;
}

63.如何监听tableView内部cell的点击事件


64.简述`registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString

)identifierregisterClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString )identifier`这2个方法的区别

65.如何计算一段文字的宽度和高度?

66.什么是自定义cell?

67.通过代码自定义cell能在ininWithFrame:方法中添加子控件吗?

68.通过代码自定义cell能在initWithStyle:reuseIdentifier:方法中计算子控件的位置和尺寸吗?

69.通过代码自定义cell,frame和Autolayout2中的方式有什么区别?

70.通过storyboard的方式是如何加载cell

71.字典转模型第三方框架的了解

72.设计框架需要考虑的问题


原文出处:iOS基础问答面试题连载(二)-附答案

1.xcode5和xcode7区别?

2.pch文件原理?

3.UIApplication常见功能?

4.程序完整启动流程?

5.UIWindow是什么?

6.手动创建窗口的步骤?

7.makeKeyAndVisible做了哪些事情?

8.如何从从StoryBoard加载控制器?

9.initWithNibName的加载过程?

10.LoadView 作用以及使用LoadView的注意点?


11.UIPickView是什么控件,基本用法怎样的?

12.KVC底层实现?

13.导航控制器View的结构是怎样的?

14.导航push做了哪些事情?

15.导航pop做了哪些事情?

16.如何设置导航条的内容?

17.导航控制器pop操作有哪些?

18.文本框如何拦截用户输入?

19.如何自定义键盘?

20.导航控制器的作用?


21.自动跳转与手动型跳转区别?

22.什么时候使用代理 ,代理的步骤?


23.ios当中存储方式有哪些?


24.tableView性能优化


原文出处:iOS基础问答面试题连载(三)-附答案

这次的问题是网络多线程相关的哟,面试的时候也是必问的,大家多看看

11月24日修正一处错误:18、19题目一样,答案不一样(其实是两种理解,修改为最优的一种放上来.多谢读者提醒)

1.请简单说明多线程技术的优点和缺点?

2.请简单说明线程和进程,以及他们之间的关系?

3.请简单说明在iOS开发中有哪些多线程的实现方案?

4.请简单说明主线程的作用,以及使用注意点?

5.请简单列出NSThread线程的几种状态,并说明状态转换的逻辑?

新建->就绪 CPU调度当前任务->运行->阻塞->死亡
                            CPU调度其他任务->就绪

6.请简单说明如何简单的解决多线程访问同一块资源造成的线程安全的问题,以及注意点?

7.请简单介绍下什么是原子和非原子属性?

8.请简单介绍下GCD这门技术?

9.请简单介绍GCD中的几种队列?(4种)

10.如果当前有多个任务,这些任务都需要开子线程执行,而多个任务之间有一定的依赖关系,如果使用GCD来实现请试着给出一些解决方案。


11.请简单说明单例模式的特点(作用)?

12.请简单介绍操作队列?

13.如果有多个操作如何来设置依赖关系,如何监听到某个操作执行完毕事件?

14.请简单比较GCD中的全局并发队列和使用dispatch_queue_create函数创建的并发队列异同?

15.请简单说明对图片进行二级缓存的实现思路?

16.请简单对比下GCD和NSOperation两种多线程的实现方案?

17.请按照自己的理解,说一说在进行多线程编程的时候相对于GCD而言,操作队列有哪些优势?

18.请谈一谈,自定义操作的好处?

19.请简单介绍GCD中的一次性代码?

static dispatch_once_t onceToken;
     dispatch_once(&onceToken, ^{
        NSLog(@"-------");
     });

20.GCD中的dispatch_after是延迟把任务提交到队列还是先提交到队列再延迟执行?


21.请说明NSRunloop和线程的关系?

22.请简单说明NSCache的特点

23.请简单说明runloop中几个类之间的相互关系(runloop & source & timer &observer &mode)

24.请简单介绍下SDWebImage框架?

25.请问SDWebImage框架内部在清理磁盘缓存的时候clearDisk方法和cleanDisk方法有什么区别?

26.请问SDWebImage框架的框架结构是怎么样的?

27.请问SDWebImage框架内部怎么处理内存缓存的?

28.请简单说明NSRunloop的基本作用?

29.什么是runloop?

30.runloop的自动释放池什么时候创建释放?


31.请简单说明使用NSURLConnection发送网络请求的几种方法?

32.请简单说明GET请求和POST个请求有什么区别,如何选择?

33.请简单列出使用NSURLConnection发送一个异步POST网络请求的步骤?

34.请简单说明HTTP通信的过程?

35.请简单说明NSURLSession对比NSURLConnection的优势?

36.请简单列出NSURLSession发送POST请求的步骤?

37.在发送网络请求的时候,如果请求路径中的参数有中文导致发送的网络请求失败,应该如何处理?

[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

38.观察下面的代码,请问completionHandler在主线程还是子线程执行?

[[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    //....
}] resume];

39.请简单介绍下网络响应的状态码?

40.使用NSURLSession发送网络请求的时候,最多可以建立多少个TCP连接?


41.请简单介绍JSON和XML?

42.JSON格式中的true和false,对应OC中的什么数据类型,值为多少?

43.请简单说明什么是序列化和反序列处理,用到了什么方法?

44.请简单说明输出流的使用步骤【应用于文件下载时】和注意点?

45.请简单说明文件句柄(NSFileHandle)的使用步骤【应用于文件下载时】和注意点?

46.请简单介绍下NSURLSessionTask的几个子类?

47.请简单介绍在iOS开发中XML的几种解析方式?

DOM 一次性加载 GDataXML
SAX 一个元素一个元素的解析 NSXMLParser(创建解析器->设置代理->开始解析)

48.如何解决session设置代理之后对代理对象的强引用问题?

49.在XCode中如何配置以MRC的方式来编译处理某个类?

50.在使用NSURLSessionDataTask发送请求下载文件的时候,实现断点下载的技术要点是什么?

NSString *header = [NSString stringWithFormat:@"bytes=%zd-",self.currentSize];
 [request setValue:header forHTTPHeaderField:@"Range"]

51.请简单比较使用NSURLSessionDownloadTask下载文件和使用NSURLSessionDataTask下载文件的优劣?

52.请列出使用NSURLSession发送请求实现文件上传的主要步骤?

53.请列出你认为在进行文件上传时候需要注意的细节(注意点)?

54.请简单说明能够获得文件二进制数据类型(MIMEType)的几种方法?

55.请简单介绍下AFN各个主要版本的情况?

0.1--1.0            "2.0---2.6.3"                    3.0-->3.1.0
 NSURLConnection - (NSURLConnection + NSURLSession) - NSURLSessio
0.1-2.0  NSURLConnection
2.0 -3.0 NSURLSession + NSURLConnection
3.0 + NSURLSession

56.如果服务器返回的数据不是JSON数据,那么在使用AFN发送网络请求的时候会请求失败请问是什么原因产生的?如何解决?

57.在使用NSURLSession进行文件上传的时候,如何监听文件上传的进度,有哪些注意点?

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
         didSendBodyData:(int64_t)bytesSent
         totalBytesSent:(int64_t)totalBytesSent
         totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend

58.请简单说明系统默认提供的NSURLSessionConfiguration三种配置信息?

59.在发送网络请求的时候,如果一个参数(place)需要对应着多个值,那么以下两种请求路径哪种是正确的?

:[http://192.168.31.520:1314/loveyou?place=Beijing&Shanghai](http://120.25.226.186:32812/weather?place=Beijing&Shanghai)
:[http://](http://120.25.226.186:32812/weather?place=Beijing&place=Shanghai)[192.168.31.520:1314](http://120.25.226.186:32812/weather?place=Beijing&Shanghai)/loveyou?place=Beijing&place=Shanghai
第二种请求路径是正确的第一种是错误的后面的shanghai将会被忽略

60.使用AFN进行文件下载相对于NSURLSessionDownloadTask而言有何好处?


61.请简单回答网络安全的原则是什么?

62.请简单介绍下Base64编码?

63.请简单说明单向散列函数的特点?

64.请简单介绍下散列函数的一些应用领域?

65.请简单介绍下对称加密的特点和经典算法?

66.请简单说明ECB和CBC两种分组加密模式?

67.请简单介绍下非对称加密的特点和经典算法?

68.请简单介绍下数字签名这门技术?

69.数字证书和公钥什么关系?

70.请简单说明在安装cocoapods时,使用pod install命令安装框架后的大致过程?


原文出处:iOS基础问答面试题连载(四)-持续更新题目

1.有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成执行?如果需要a、b、c、d顺序执行,该如何实现?
2.关于 HTTP 请求 GET 和 POST 的区别是什么?
3.如何把 NSArray 里的 NSNumber 对象以顺序或反序排序?
4.iOS 开发中数据持久化的几种方式。
5.描述 UITableView的单元格重用机制,以及如何使用。
6.循环引用的产生原因,以及解决方法。
7.NSTimer 使用时注意事项?
8.在某个实例方法中,self.name = _name,name = _name 它们有区别吗,为什么?
9.非递归实现折半查找数组中值为 x 的某个元素(快速查找)。
10.Swift 的枚举、结构体和类有什么区别?
11.最近的ipv6上架的问题 以及了解ipv6是什么
12.instuments用过哪些工具,如何测试核心动画性能
13.对于ffmpeg,opengl的了解
14.如何收集APP异常信息(比如:崩溃、闪退等)
15.说说你对离屏渲染的了解,了解的话说一下你一般是从哪几方面操作的?
16.说说你对KVC和KVO的理解?
17.lldb(gdb)常用的调试命令。
18.当键盘出现的时候,如何让 UITextField 自动上移,说说你的做法。
19.说一下你编程时的命名规范,包括文件命名、类命名、类别名、一般变量名、实体变量命名、方法命名、常量命名。
20.#import 跟#include、@class有什么区别?#import<> 跟 #import”"又什么区别?
21.属性 readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
22.写一个 setter 方法用于完成@property (nonatomic,retain)NSString _name,写一个 setter

方法用于完成@property(nonatomic,copy)NSString _name.

23.对于语句 NSString*obj = [[NSData alloc] init]; ,编译时和运行时obj分别是什么类型?
24.常见的 object-c 的数据类型有那些, 和 C 的基本数据类型有什么区别?
25.Objective-C 如何对内存管理的,说说你的看法和解决方法?
26.内存管理的几条原则时什么?按照默认法则.哪些方法生成的对象需要手动释放?在和 property 结合的时候怎样有效的避免内存泄露?
27.OC 中创建线程的方法是什么?如果指定在主线程中执行代码?如何延时执行代码?
28.Difference between shallow copy and deep copy?
29.What is advantage of categories? What is difference between

implementing a category and inheritance?

30.Difference between categories and extensions?
31.Difference between protocol in objective c and interfaces in java?
32.What are KVO and KVC?
33.What is purpose of delegates?
34.What are mutable and immutable types in Objective C?
35.When we call objective c is runtime language what does it mean?
36.what is difference between NSNotification and protocol?
37.What is push notification?
38.What is Polymorphism?
39.What is Singleton?
40.What is responder chain?
41.Difference between frame and bounds?
42.Difference between method and selector?
43.Is there any garbage collection mechanism in Objective C.?
44.What is NSOperation queue?
45.What is lazy loading?
46.Can we use one tableview with two different datasources? How you will achieve this?
47.id、nil 代表什么?
48.如何对iOS设备进行性能测试?