作者:ZhHS&&juejin.im/post/5ad80ad35188252eae3b22a4
- Runtime的消息转发机制
- Runloop的工作原理
- CFRunLoop开源代码:http://opensource.apple.com/source/CF/CF-855.17/
- RunLoop实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行;而且在没有事件处理的时候,会进入睡眠模式,从而节省CPU资源,提高程序性能。
- 内存管理
- block
- GCD
- 定时器的几个类方法底层分别是怎么实现的([NSTimer timerWithTimeInterval:repeats: block:]等)
- KVO、delegate、通知的区别以及底层实现
- Struct与Union主要区别
- 思维题:情景:20个主人,20条狗,在同一个小区每天在同一个地方同时遛狗,狗主人绝对聪明,一旦发现自己家的狗是疯狗,回家之后就会用枪把狗打死。第一天晚上遛狗回家后没有听见枪响,第二天晚上遛狗回家后没有听见枪响,第三天晚上遛狗回家后听见多声枪响,请问有多少条疯狗。 条件: ①狗主人不能直接发现自己家的狗是否是疯狗,可以发直接现别人家的狗是否是疯狗,凭此可以推断自己家的狗是否是疯狗 ②狗主人遛狗期间不会有任何交谈 ③疯狗不会传染
- iOS11的新特性
- 参考Apple 官网
- 点击应用图标到启动应用整个过程,系统进行了什么操作
- swift相关知识
- Apple pay的支付流程
- 参考Apple 官网流程即可
-
写一段程序判断文本框内输入的IP地址是否合法
@"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$"
- 开头结尾是否空格,是否为空,是否字符串类型
- 0.0.0.0 合法, 00.0.0.0 不合法,
- IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。
IP地址是否合法:Java代码参考内容
if(addr.length() < 7 || addr.length() > 15 || "".equals(addr)) { return false; } /** * 判断IP格式和范围 */ String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"; Pattern pat = Pattern.compile(rexp); Matcher mat = pat.matcher(addr); boolean ipAddress = mat.find(); //============对之前的ip判断的bug在进行判断 if (ipAddress==true){ String ips[] = addr.split("\\."); if(ips.length==4){ try{ for(String ip : ips){ if(Integer.parseInt(ip)<0||Integer.parseInt(ip)>255){ return false; } } }catch (Exception e){ return false; } return true; }else{ return false; } } return ipAddress;
-
➕ 的
实现逻辑
-
runtime的相关知识
-
autorelease的使用场景
- for循环中,创建大文件
-
plist读写操作如何进行锁管理
- 使用
dispatch _barrier
- 赋值时候不可以读和其他读写,读取的时候可以多处读取
- 使用
-
NSNotification实现逻辑,子线程中给主线程发送通知,主线程是否会处理通知
- 在多线程应用中,Notification在哪个线程中post,就在哪个线程中被转发,而不一定是在注册观察者的那个线程中。
- 苹果之所以采取通知中心在同一个线程中post和转发同一消息这一策略,应该是出于线程安全的角度来考量的。官方文档告诉我们,NSNotificationCenter是一个线程安全类,我们可以在多线程环境下使用同一个NSNotificationCenter对象而不需要加锁。
- 尽量在一个线程中处理通知相关的操作,大部分情况下,这样做都能确保通知的正常工作。不过,我们无法确定到底会在哪个线程中调用dealloc方法
-
编译器怎么检测#import和#include导入多次的问题,三方库导入时如何设置**""和<>**
- ifdef def #endif
- if __has_include(<>)
- 关于业务方面以及性能方面的问题
- 组件化的问题
- 怎么修复线上卡顿、崩溃问题,
- 项目结构等等
- 面试题系列目录
- 上一份: 美团饿了么面试题2018年4月
- 下一份: 校招攻略43份优质面经汇总iOS开发2018年