2016年3月某公司的iOS面试经历及题目

匿名网友 匿名网友 发布于: 2016-03-11 00:00:00
阅读 215 收藏 0 点赞 0 评论 0

介绍 block。——我提到栈上的 block 在 ARC 下会自动复制到堆上,面试官问我从 iOS 4 还是 5 开始支持这一特性,表示不知道,我又不是学 OC 历史的,后来想想可能是公司内部老项目有这个坑。

ARC 会对代码做什么优化?——比如 NSString *s2 = s1; s2 = nil 这样的语句,可能就不会有 retain 和 release 方法了。

介绍一下 MVVM 和 RAC。——可能是我简历的某个角落写了用过 RAC,被挖出来了,大概谈了一下,结果面试官问我数据的双向绑定怎么做,bind 函数了解过么,果断说已经忘了😂😂😂

介绍自己用过哪些开源库。——Masonry 和 SnapKit,AFNetWorking,MKNetworkKit,Alamofire,Mantle,SDWebImage

如果让你写,你能实现么?——当然不能,不然还要实习?

读过某个库的源码么?——扯了一点 SDWebImage,后来被告知这个库用了 runloop 来保证滑动是加载数据的流畅性,自己看了源码后表示没有发现,唯一用到 runloop 地方是保证后台线程一直跑,也有可能是我理解错了,如果错误欢迎指正。

SnapKit 下载了图片后为什么要解码?——当时蒙住了,面试官很 nice 的解释了一下,说是要把 png 文件建立一个什么内存映射,目前还不太懂,有空研究一下。

本来以为面的这么差肯定是挂了,没想到还是过了一面。过了不到一个小时,HR 电话打过来,约了两天后二面。

 

二面

 

纯数学和算法:

 

下面这段代码的输出结果是:

 

int main() {

    int a[5]={1,2,3,4,5};

    int *ptr=(int *)(&a+1);  

    printf(“%d,%d”,*(a+1),*(ptr-1));

}

答案是 2 和 5。a 是指向数组开头元素的指针,a + 1 就是指向下一个元素的指针,所以星号求值以后是 2。&a 相当于是数组的指针,&a + 1 是数组后面一个数组的指针,然后转换成int *类型是 5 这个数字后面的一个数字的指针。再减一就是指向 5 的指针,所以星号求值以后是 5。

 

某个地方天气有如下规律:如果第一天和第二天都不下雨,则第三天下雨的概率为30%;如果第一天和第二天中有任 意一天下雨,则第三天下雨的概率为60%。问如果周一周二都没下雨,那么周四下雨的概率为___。

 

简单的概率题,答案是:30% * 60% + 70% * 30% = 39%

 

某痴迷扑克的小团体喜欢用23456789TJQKA来计数,A后面是22,23,…,2A,32,…,AA,222,… 依次类推。 请用C/C++或Java写个程序,将用字符串表示这种计数法转换成字符串表示的10进制整数。其中,该计数法的2就对应于十进制的2,之后依次递增。C/C++函数接口: char* pokToDec(char *)

 

我的解决思路是进制转换,类似于 16 进制转换 10 进制这种,最后再把数字转成 char * 类型。

评论列表
文章目录