面试题iOS面试题iOS扩展

iOS面试进阶篇(二)

2019-03-13  本文已影响67人  路飞_Luck
目录
  • UITableViewCell相关试题
  • 多线程相关试题
  • 进程与线程相关试题
  • 网络相关试题
    • TCP与UDP
    • TCP连接的三次握手
    • Scoket连接
    • ASIHttpRequest、AFNetWorking之间的区别
  • APNS推送机制
1.UITableViewCell上有个UILabel,显示NSTimer实现的秒表时间,手指滚动cell过程中,label是否刷新,为什么?

这是否刷新取决于timer加入到Run Loop中的Mode是什么。Mode主要是用来指定事件在运行循环中的优先级的,分为:

苹果公开提供的Mode有两个:

2.对于单元格重用的理解

当屏幕上滑出屏幕时,系统会把这个单元格添加到重用队列中,等待被重用,当有新单元从屏幕外滑入屏幕内时,从重用队列中找看有没有可以重用的单元格,若有,就直接用,没有就重新创建一个。

3.解决cell重用的问题
UITableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:defineString]

修改为

UITableViewCell *cell = [tableview cellForRowAtIndexPath:indexPath];

这样就解决掉cell重用机制导致的问题。

4.有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成执行?如果需要a、b、c、d顺序执行,该如何实现?

对于这四个异步请求,要判断都执行完成最简单的方式就是通过GCD的group来实现

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
    
dispatch_group_async(group, queue, ^{ /*任务a */ });
dispatch_group_async(group, queue, ^{ /*任务b */ });
dispatch_group_async(group, queue, ^{ /*任务c */ });
dispatch_group_async(group, queue, ^{ /*任务d */ });
    
dispatch_group_notify(group,dispatch_get_main_queue(), ^{
    // 在a、b、c、d异步执行完成后,会回调这里
});
5.使用block有什么好处?使用NSTimer写出一个使用block显示(在UILabel上)秒表的代码。

NSTimer封装成的block

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                 repeats:YES
                                                   block:^(NSTimer *timer) {
                                                       weakSelf.secondsLabel.text = ...
                                                   }];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
6.一个view已经初始化完毕,view上面添加了n个button,除用view的tag之外,还可以采用什么办法来找到自己想要的button来修改button的值。

有2种方法解决:

7.线程与进程的区别和联系?
8.多线程编程

多线程编程是防止主线程堵塞、增加运行效率的最佳方法。

9.定时器与线程的区别
10.Apple设备尺寸和编程尺寸
1.pic.jpg
11.TCP和UDP的区别于联系
12.TCP连接的三次握手
13.Scoket连接和HTTP连接的区别
14.HTTP协议的特点,关于HTTP请求GET和POST的区别

GET和POST的区别:

传输数据的大小:

安全性:

15.ASIHttpRequest、AFNetWorking之间的区别
16.XML数据解析方式各有什么不同,JSON解析有哪些框架?
17.如何进行真机调试?

1.首先需要用钥匙串创建一个钥匙(key);
2.将钥匙串上传到官网,获取iOS Development证书;
3.创建App ID即我们应用程序中的Boundle ID;
4.添加Device ID即UDID;
5.通过勾选前面所创建的证书:App ID、Device ID;
6.生成mobileprovision文件;
7.先决条件:申请开发者账号 99美刀

18.SVN的使用
19.如何进行网络消息推送

iOS面试进阶篇(一)


更多同类型文章敬请期待中

上一篇下一篇

猜你喜欢

热点阅读