iOS开发--面试
今天一大清早去面试, 公司距离我家还挺近的, 花了一个小时走着去, 也顺路印下简历, 理理思路, 到了公司面试官什么的都不错, 还给我讲了很多知识, 收获也是满满的, 总结下今天都遇到了哪些问题, 调整调整状态.
1, 当需要自定义tabbar的item的数量可变时怎么做的
这里原本是想说自定义tabbar的, 不过估计考察的应该是runtime下的class动态创建类方法, 然后就简单的说下runtime, 并不知道回答的是否好, 但是原理是不会错的. 通过和后台的合作在数据中键值对中拿到类名, 然后通过class的方法实例化对象即可(NSClassFromString()).
2, 了解runtime么
并没有和面试官说消息机制什么乱七八糟的, 感觉没多大卵用, 就说了runtime的一些实际应用, 自我感觉还凑合, 毕竟自己在开发中用过几次, 也会动态的设置成员变量(成员变量其实是不可以的, 但是在runtime头文件中的确有方法, 这个涉及到静态的结构体成员变量动态增加, 所以应该并不是通过常规理解的runtime方法实现的)和方法
3, 做过定位么, 如果在后台始终刷新位置
这个我感觉可能面试有点误会我的意思了, 也可能是我的确说错了, 毕竟本人英语很烂, 方法会敲不会说, 不过也做过差不多的, 定位就不用说了, 没啥说的coreLocation或者百度的SDK, 说下如果在程序进入后台后长久的运行代码.
- (void)applicationDidEnterBackground:(UIApplication *)application { [self beingBackgroundUnpdateTask]; /* 代码写在这里就可以了 */ [self endBackgroundUpdateTask]; } - (void)beingBackgroundUnpdateTask { self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ [self endBackgroundUpdateTask]; }]; } - (void)endBackgroundUpdateTask { [[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask]; self.backgroundUpdateTask = UIBackgroundTaskInvalid; }
这样后台就会反复刷新了.
4, 了解YYModel, 或者YYKit么
表示真的不会, 就看过一些YYKit的源码, 也没想过面试会问三方框架, 基本没说上啥.
5, 了解MVVM吗, 说说MVVM
这个基本也没啥说的, 网上一查一堆, 自己还是做过不少MVVM的项目的, 简单说说, 没问太多.
6, RAC
响应式函数编程, 对于信号流的应用, 说了些应用场景, 非要说框架的话还没到源码级别, 也就是使用上的一些细节.
7, tableView优化
说了动态计算高度, 通过接口数据等, 分散方法逻辑, 尽量手动计算, 也说了drawRect, 说了手动绘制cell, 不过又问起了YYKit从这里, 还是回答不上来了.
8, webview中<input>button标签, 触发onClick时与原生的交互
js交互,或者拦截webview,没啥说的。