iOS面试题汇总-网易(持续更新)
算法:
1、把 "www.zhidao.baidu.com" 这样的字符串改成 "com/baidu/zhidao/www"。——老题目了,剑指 offer 的,两次逆序排列即可。
2、求数组中和为某个值的所有子数组,比如数组是 [5,5,10,2,3] 一共有四个子数组的和是 15,比如 [5,10],[5,10],[10,2,3],[5,5,2,3]。这个就是简单的递归了,分两种情况,当前位置的数字在子数组中,以及不在子数组中。
3、下面这段代码的输出结果是:
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。
4、某个地方天气有如下规律:如果第一天和第二天都不下雨,则第三天下雨的概率为30%;如果第一天和第二天中有任 意一天下雨,则第三天下雨的概率为60%。问如果周一周二都没下雨,那么周四下雨的概率为___。 简单的概率题,答案是:30% * 60% + 70% * 30% = 39%
5、某痴迷扑克的小团体喜欢用23456789TJQKA来计数,A后面是22,23,...,2A,32,...,AA,222,... 依次类推。
请用C/C++或Java写个程序,将用字符串表示这种计数法转换成字符串表示的10进制整数。其中,该计数法的2就对应于十进制的2,之后依次递增。C/C++函数接口: char* pokToDec(char *) 我的解决思路是进制转换,类似于 16 进制转换 10 进制这种,最后再把数字转成 char * 类型。
iOS相关:
1、介绍 block。——我提到栈上的 block 在 ARC 下会自动复制到堆上,面试官问我从 iOS 4 还是 5 开始支持这一特性,表示不知道,我又不是学 OC 历史的,后来想想可能是公司内部老项目有这个坑。
2、ARC 会对代码做什么优化?——比如 NSString *s2 = s1; s2 = nil 这样的语句,可能就不会有 retain 和 release 方法了。
3、介绍一下 MVVM 和 RAC。——可能是我简历的某个角落写了用过 RAC,被挖出来了,大概谈了一下,结果面试官问我数据的双向绑定怎么做,bind 函数了解过么?
4、介绍自己用过哪些开源库。——Masonry 和 SnapKit,AFNetWorking,MKNetworkKit,Alamofire,Mantle,SDWebImage
5、如果让你写,你能实现么?
6、读过某个库的源码么?runloop 来保证滑动是加载数据的流畅性?
7、SDWebImage 下载了图片后为什么要解码?