公司地址:北京市海淀区苏州街12号西屋国际F座701
ps:公司在一个单元楼内,楼道也比较昏暗,只有一部电梯,办公面积估计在130-140平米左右,进门之后需要填一张表格,都是基本资料和对公司的看法之类的东西,没有笔试题,好像是分三个工作小组,面试官还可以,是一个瘦瘦的看着特别年轻的男人,技术很nice,要做好心理准备。
问题一:Block 的修饰符用什么?为什么?(开门见山第一句就问Block,当时也是很惊讶,我以为是先寒暄几句呢?)
答:Block 属性在声明的时候,需要用copy 修饰符,因为只有copy 后的Block 才会在堆中,栈中的Block 的生命周期是和栈绑定的,也就是说Block 是在栈区,需要我们copy 到堆区去做操作。
问题二:简述一下assign 和weak 的区别。(其实面试的时候最烦问到的问题就是这种很细,还关系到内存的问题)
答:assign 是用来修饰基本数据类型的,weak是用来修饰指针类型的对象的。但是weak 比assign 多了一个功能,weak修饰的时候,当属性所指向的对象消失(也就是内存引用计数为0)会自动赋值为nil,这样再向weak 修饰的属性发送消息就不会导致野指针,程序也就不会抛出异常。
问题三:如果我想在CollectionView 中添加一个head,应该如何操作。(这个问题,啧啧...)
答:首先写一个继承于UICollectionReusableView 的headView 子类,里面的东西根据项目需求来做,然后再CollectionView 中去注册这个headView,然后去实现headView 的代理方法即可。
问题四:你对AFNetWorking了解多少,是否对它进行过二次封装?你具体是怎么做的?
答:根据项目需求暴露必要参数接口,网络请求类要写成单例,避免多次进行三次握手影响请求效率,剩下具体的东西,要根据项目中实际遇到的问题,再行修改。
问题五:Masonry是否用过,你对Masonry的了解有多少?
答:没有在项目里实际运用过,如果有哪位同学知道怎么回答,请联系我。
大概就问了这么多,然后就是薪资之后的过场话,感觉还不错,面试官还算和善,祝在北京找工作的iOS童鞋们,早日找到好工作。