我13年12月实习,14年7月毕业,算起来起码有1年半工作经验了,以下是我完全没百度没google写的一些个人理解,完全是来自工作实践中的,道理讲的可能不准确,有错帮忙指出:
1、解释下MVVM模式,用过RAC么?
MVVM我公司的2个项目都是使用这个模式,字面意思是Model-View-ViewModel,其实还有个C,相对于MVC模式,MVVM最特别的在于多了个ViewModel作为View与Controller之间的联系,实际工作中,Model并不是直接与View挂钩的,Model更倾向于网络层(如JSON解析等方面),我们一半会在ViewModel中定义一个初始化方法,用Model来初始化这个ViewModel,在ViewModel的实现文件中做一些数据类型的转换/计算/比较等操作。RAC没用过,准备去学习一下。
2、简述CollectionLayout自定义过程。
你说的是UICollectionViewLayout的自定义吗?这个一般用来实现特殊的动画效果和布局效果(当然用处不只这些),工作以来唯一自定义的一个CollectionViewLayout只是对原生UICollectionViewFlowLayout的偏移量进行修改。
3、说说method-swizzling,顺道说下消息发送和消息转发。
method-swizzling运行时runtime中的一个实践,可以在运行时替换某些方法的实现(如viewWillAppear),以解决一些特殊的问题(如在分类中替换原类的某个方法)
4、CoreText图文混排原理。
工作以来没用过,倒使用过正则表达式解析过Html进行图文混排
5、线程与NSRunLoop的关系。
线程和NSRunLoop的理论看过很多,就是没实践过,准备实践一下看看能不能解决单线程图片上传很慢的问题,以后回来解答。
6、XMPP做过吗?
XMPP和即时通讯倒是与我有缘,13年12月实习的时候就是做的一个即时通讯应用,当时年少轻狂,不懂使用SDK,果断跟老板说:即时通讯就用XMPP吧,我百度了一下都这样干的(因为老板让我用Socket,什么是Socket?完全不懂啊,iOS只有我一个人啊搞什么Socket!!)。现在回想一下,如果能用第三方SDK,那个项目也不至于不能上线,我的锅,言归正传,我记得直接使用XMPP是需要自己搭建聊天服务器的,当时是使用了openfire,然后网上找了个简单的Demo,一堆代理啊注册啊验证啊,加了各种交流群,人都疯了,后来辞职到现在又做了3个线上项目,有2个是即时通讯相关应用。
7、@protocol 和 category 中如何使用 @property。讲讲iOS关联。
使用运行时runtime的关联对象,建议大家看看这个,项目中经常会在category中扩展属性。实际上,除了匿名分类,category是不能直接扩展属性的(其实category是可以写@property的,但是只会给你生成set方法,不是完整的属性,还是相当于扩展方法),只能扩展方法。但是可以使用runtime的关联对象解决。
8、block在内存中是如何存放的,说说循环引用,不要说解决方案,要原理。
是不是栈?先入后出?回去加强一下学习。出现循环引用的情况:一个实例A中,比如viewController,持有了另外一个实例B,比如View,而这个实例B中拥有一个block属性,或者一个用block做参数的方法,那么,当在实例A中,使用实例B去调用这个block的时候,在block中又有实例A的一个强引用操作,此时block会持有类A。如此,它们3方形成了一个循环的死结(A-B-block-A)。无论你注销哪个,都没有用,它们会一直存在于内存,如果反复创建它们,最终内存会爆满。解决方法:
最常用的方法是在block中使用实例A的弱引用进行操作,一般是把self转换为weakSelf:
__weak typeof(self) weakSelf = self;
我知道有一种情况是不会产生循环引用的,就是当实例A没有拥有实例B的时候,比如实例B只在实例A的一个方法的作用域内有效时。
9、KVO的实现原理,如何手动触发KVO。
我看过一篇孙源的博客,里面讲到KVO的实现原理是在runtime时重写了被监听对象的set方法,回去翻翻那篇博客再复习一下。实践工作中会用就很好了。手动触发?没试过,稍后查一下资料。
10、swift了解多少?
哈哈,Swift我前段时间学了一下,学习方法就是在把OC的几个关键知识列出来,然后网上找Swift的解决方法,上gitHub下载Demo学习,比如Swift中UITableView的使用/代理/通知中心/Block/属性/导航栏等。我还为此分享了个gitHub项目,大家可以去看看,看在我用心手写这么多字的份上,顺便帮我点个star吧。地址:https://github.com/WenkyYuan/SwiftDemo。(或者搜索ICDPopupMenu就可以看到我啦,gitHub名字:WenkyYuan,欢迎互粉)
我还分享了2个关于动画/菜单的Demo,喜欢的同学也帮忙点个star。
说了这么多,楼主觉得我的水平对得起我的工作年限么?年初跳槽能找到工作么?值多少钱