iOS社招面试题2
来源:互联网 发布:黑魂2日系妹捏脸数据 编辑:程序博客网 时间:2024/05/29 15:38
1.APNs推送过程
答:
1.去苹果开发者中心为应用注册APNs消息推送功能
2.苹果APNs收到应用的注册消息后,返回device_token(很重要)
3.将device_token传给本地push服务器
4.当执行推送消息,应用的本地服务器将要推送的消息和device_token打包发给APNs
5.APNs将消息推送回应用
2.iOS动画常用函数
答:
1.CABasicAnimation(基础动画,设定起、终点和时间,动画随着设点点移动,根据keyValue设定不同的效果如移动,颜色渐变)
2.UIBezierPath(贝塞尔曲线,创建基于矢量的路径,曲线、直线等都能绘制)
3.CAShapeLayer(坐标系统内绘制UIBezierPath,为UIBezierPath提供路径)
PS:了解动画先了解CALayer(图层,可以调整阴影、圆角大小、边框宽度和颜色等)、CAAnimation(动画)、CAAnimationGroup(动画组)
3.iOS app缓存数据线程安全措施
答:
1、加锁,对对象加锁,变原子性,缺点是会令app复杂性变大,竞争锁,死锁等问题,不是好的方案
2、分线程cache,一个线程一个cache,线程只针对自己的cache进行读写,缺点是要令使用者知道当前代码在哪条线程,还有多线程里的cache数据要同步。例子是CoreData 和 Realm
3、数据不可变,只读不写,若属性改变,直接替换整个对象,即重新在db读取,缺陷是上层仍持有旧对象,要用push(cache更新数据时发广播通知上层,上层收到后更新)和pull(上层在特定时间自己判断有否更新)结合更新数据
4.iOS如何防止内存泄漏
答:
1. arc
2. 如果不能用arc, 那么用shift+command B来做Analyze, 帮你找出各种内存漏洞
3. Instrument调试
5.网络通讯的理解
答: iOS设备的网络通信的方法,有如下两个大类:
1、使用socket的方式进行通信。
2、使用asynsocket/GCDSocket等类库进行通信。
用封装好的通讯方法更稳定,直接用socket则更灵活,eg:TCP要区分客户端和服务端,服务端要启动监听连接
宏观的网络通讯:本质就是电脑间的相互通讯,通讯遵循TCP/IP协议等一系列的协议族,整个网络通讯会经过ISO-OSI的七层协议,每个电脑一个ip地址,每个进程一个端口号
6.ios 如何有效快捷调试
答:
1.普通断点->条件断点(右击断点->Edit breakpoint->condition填写条件,ignore可以填前几次不理会,action选择在你断点的位置,执行各种操作,比如执行脚本命令,控制台命令(可以制定调试信息自定义保存)、打印信息等)
2.全局断点,用于EXEC_BAD_ACCESS:,打了全局断点时,只要遇到错误,debug程序就会自动定位到栈底的信息,也就是你最先出错的代码的那一行
3.添加Symbolic断点,添加之后在 Symbol 一栏输入 viewDidLoad,这样在程序中所有的 viewDidLoad 方法被调用时都会触发断点。也可以仅仅为特定的某个类的方法添加断点,如unrecognized selector sent to instance 0xaxxxx 这种错误,这个instance可以这样快速定位
4.NSLog打印obj可以用NSLog(“%s”,NSStringFromCGAffineTransform(obj));来打印未知类型变量
5.开启僵尸对象(Enable NSZombie Objects),步骤:Product->Scheme->Edit Scheme->Enable NSZombie Objects打勾,就可以输出被释放掉的僵尸变量,但、只能用在模拟器和OC语言
6.Console(lldb 命令),在断点时控制台打印变量,各种断点,各种打印,调用python插件,运行中断,操作硬件底层,控制程序运行线程……lldb都可以做到
- iOS社招面试题2
- iOS社招面试题
- IOS面试题2
- IOS面试题2
- iOS 面试题(2)
- iOS面试题2
- iOS 面试题2
- ios面试题(2)
- iOS面试题2
- ios面试题2
- iOS面试题2
- ios面试题(2)
- iOS面试题(2)
- iOS面试题2(答案)
- iOS开发面试题2
- 一些iOS面试题2
- iOS面试题(2)
- iOS面试题集锦2
- Java并发编程实战
- jquery 添加插入元素技巧<前面和后面>
- Charles让你更方便的在Mac下抓取移动端http/https数据包(http://zhiqiangbuxi.cn/?p=281)
- HDU2084数塔(数字三角形)
- 第二章 列表和元组
- iOS社招面试题2
- 最简单rbac实现方法
- JAVA 状态机
- iOS 申请开发者账号-总结
- PyCharm License Activation激活码失效问题的解决方法
- 列表生成器
- 春夏狂欢季,好礼享不停,新人领3000京豆大礼包!
- Qt这个好玩意
- C# 中如何获得屏幕宽度和高度【申明:来源于网络】