所有OC 面试题 就是这么简单。真的边边教你 学ios

吐槽一下
有些问题,太模糊,或许提问者都不知道要问什么,或者知道问什么但表达不清楚,提问的人能力有问题啊。。。。。

1、说说OC内存管理;
答:有ARC模式和非ARC模式,ARC模式内存管理由系统做,非ARC内存管理由程序员做:谁申请堆内存谁释放。
2、ASIRequest是什么;
答:一个第三方的iOS平台使用的开源的HTTP库。
3、怎么输出json字符串;
答:输出到哪里,console?or文件,or什么地方。。。NSLog()就办了。
4、说说http头部有哪些内容;
答:常用的 Host,Content Type, Content Length,KeepLive等等吧,记不起来了。
5、说说OC生命周期;
答:OC生命周期?OC是什么?乱问,你可以问某个进程的生命周期,某个变量,某个实例的生命周期,OC是神马。
6、运用第三方框架,到时候出了问题,谁来负责
答:谁用谁负责唄,其实想问的是解决问题的能力和思路:1自查确定别人库有问题,2联系厂商解决,3自己解决(不用别人的)。
7、自己写一个strcpy函数
答:strcpy是一个c的库函数,注意内存的申请释放,\0结束等。
8、字母统计(如,输入字符串“aabbbccddddaaaaa”,输出“2a3b2c4d5a”)
答:首先想到的就是遍历,可能有其他更优算法,但是好算法都是从坏算法进化的。
9、你用过哪些框架
答:官方框架,开源框架,第三方厂商不开源的框架,要说几个实际用过的比方ShareSDK等
10、进程与线程的区别
答:进程概念比线程大,进程是系统分配资源的最小单位,线程是系统执行的最小单位,记不清了貌似是这些。还有崩溃之类的。
11、开辟线程的方式有哪些
答:OC中有NSThread,NSOperation,GCD,POSIX等。
12、实现进程同步的方式有哪些,或者说你怎么实现进程同步
答:进程同步?互斥体Mutex,管道等等吧,iOS几乎用不到这个,你的App能跑俩进程你就流弊了。一般问线程之间的通信和互斥访问,同步这个词有点坑爹。
13、请你谈谈同步和异步,用操作系统知识解释一下。
答:首先必须是干了至少两件事儿以上才有同步异步之说,干一件事儿A的时候触发B事情,A等B做完再继续叫同步,A不等B做完,直接自己继续,B完事儿后通知A叫异步。
14、请你谈谈多态
答:编译时多态:模版,宏等,运行时多态:一般指的是实例执行方法时可能执行of(own function)也可能执行sf(subclass function),看实例具体是哪个类的实例。
15、怎么将数据写入文件(归档,解当)
答:数据?什么数据:一个字符串或者内存块儿?简单的写文件,c接口或者nsfile,或者ns数据类型的接口都行,如果是一个实例对象:貌似有archive协议,没用过,只是了解。
16、写一个set方法(retain和copy权限)
答:注意两点:新值可能跟旧值不但内容相同,而且是同一个对象,然后注意做安全保护。
17
Int* fun()
{
   Int a=5;
   Int * p=&a;
   Return p;
}
请问:在主函数里面调用fun函数,这样可以吗?如果不可以,请说明为什么,并给出一种解决方案。
答:随便你哪里都可以调用,编译没问题,但是运行时会出错,安全措施到位了不会崩溃进程,否则崩溃,严谨习惯问题。问题:堆,栈的区别以及内存管理方式,返回局部变量的地址,后果不可预测。
18、在颜色中,有GB8888和 GB565标准,前者32位,其中R占8位,G占8位,B占8位,透明度占8位,后者16位,其中,R占5位,G占6位,B占5位。现在要将一个GB8888类型颜色转换成GB565类型,怎么转
答:字节运算,位运算唄,要具体查一下俩标准的区别。
19、判断一个数是否为素数
答:概念记得是:除了质数(只有1和自身是他的约数)就是素数,记不清了。。一时半会写不出来,网上一大堆。

20、优化代码
   1、int a=b*4;
   2、int a=b/8;
   3、int a=b%1;
   4、int a=b%16;
   5、int a=(b*3)/8;
答:没太明白,说一个稀里糊涂的问题,明显不尊重面试者。
21、什么是内联函数?
答:inline关键字标示的函数,写代码一次,编译后代码块儿出现在二进制中n次。
22、assign,retain,copy的区别
答:注意释放问题,循环引用之类的就好了。
23、面向对象的特性
答:封装继承多态。
24、实现一个view从顶部移到底部的动画
答:简洁的就是UIView的动画改变frame,或者CoreAnimation或者自己写计时器加自己绘制。
25、#ff3344转换成uicolor
答:这个是RGB值么。调用uicolor的api。
26、判断一个链表是否有循环
答:一般算法:设置俩遍历指针开始时俩挨着,一直遍历下去,重合了就证明有环。
27、写一个代理类
答:自己写吧
28、进程之间是怎么通信的
答:进程通信还算比较严谨的说法:管道邮槽等等吧,实际没用过,还有写文件(俩进程读写同一个文件),还有socket通信都可以。
29、oc有哪些优点和缺点
答:优缺点都是相比较而言,不知道潜在的比较对象是谁
30、什么时候用delegate,什么时候用Notification?
答:一般:1对1用delegate或者需要返回值用delelgate,1对多用notification或者不需要返回值用notification
31、写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。当你写下面的代码时会发生什么事?  
least = MIN(*p++, b); 
答:#define MIN(a,b) ((a)>(b)?(b):(a)),自己测试一下就知道了
32、MVC模式的理解
答:Model,View,Controller,便于分工合作,便于应对变化的需求。
33、堆和栈的区别
答:堆由程序员管理,栈由系统管理,还有地址方向貌似不一样。
34、自动释放池是什么,如何工作
答:autoreleasepool,貌似是基于runloop做内存回收。
35、写一个委托的interface
答:又是委托,又是代理,不严谨:委托协议,代理协议。
36、objective-c的内存管理
答:上面有
37、什么是Notification?
答:消息通知,设计模式里的观察者模式。
38、下面的声明都是什么意思?
constint a;
intconst a;
constint *a;
int* const a;
intconst * a const; 

答:const离得谁就是修饰的谁。这个没多大意思,代码可读性和可维护性太差(不能苛求每个程序员都能力比你强),除非根一帮古老的前辈(或者库)合作会有这个。一般很少有机会看到这个。 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值