ios面试攻略(1.1)



1.Object-c的类可以多重继承么?可以实现多个接口么??
没有,protocol  代替,Object-c的类不可以多重继承。
2.#import 跟#include 又什么区别,@class呢; #import<> 跟 #import”"又什么区别?? 
#import 能防止重复引用,#include 不能,@class 前置声明一个类。
3.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用 ?
4、为什么很多内置的类,如TableViewController的delegate的属性是assign不是retain?
防止循环引用。
5、定义属性时,什么情况使用copy、assign、retain??
copy:拷贝对象。assign:传值,一般用于基础类型。retain:传地址,引用计数器加一。
6,委托是什么?委托的property声明用什么属性?为什么?
代理的目的是改变或传递控制链,允许一个类在某些特定时刻通知到其他类而不需要获取那些类的指针。
7,类别的作用?
1),将类的实现分散到多个类中2),创建对私有方法的引用3),可以添加或修改方法,属性
8,.id 声明的对象有什么特性??
可以是任意类型的对象,是个很重要的类型,是个可以指向任何类型的指针或者可以理解为指向任何未知类型的指针。
9,.MVC是什么?有什么特性?为什么在iPhone上被广泛运用?
MVC设计模式是三种对象:模型对象,视图对象和控制器对象。模型对象代表应用程序的数据和定义操作数据的逻辑。视图对象显示应用程序的模型数据。控制器对象是协调视图和模型对象。
10,对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别是什么类型的对象?
11.什么是安全释放?
12,为什么有些4.0独有的objective-c 函数在3.1上运行时会报错.而4.0独有的类在3.1上分配内存时不会报错?分配的结果是什么?
13,为什么4.0独有的c函数在3.1的机器上运行不会报错(在没有调用的情况下?)而4.0独有的类名在3.1的机器上一运行就报错?
?14,常见的object-c的数据类型有那些, 和 c 的 基本数据类型有什么区别?如:nsinteger 和int
15,.property中属性retain,copy,assgin的含义分别是什么?有什么区别?将其转换成get/set方法怎么做?有什么注意事项?
16、什么是Notification? 
Notification是一种消息,它传递给一个或多个观察对象用来通知它们程序里发生了一个事件。
17、什么时候用delegate,什么时候用Notification?
当处理单个需要在另外类触发当前类行为的事件时用代理,多个事件用 Notification.
18、线程理解,有什么好处?
线程创建和启动,NSThread  detachNew创建和NSThread 创建两中方式
线程共享同一应用程序的部分内存空间它们拥有对数据相同的访问权限
19.线程和进程的区别和联系?
线程和进程都是程序运行的基本单元,区别在于进程在运行中拥有独立的内存单元,而多个线程共享内存,提高程序效率,线程不能独立执行。
20,线程是什么? 有哪些注意事项.?
21,.notification是同步还是异步? kvo是同步还是异步?notification是全进程空间的通知吗?
22.浅拷贝和深拷贝区别是什么?…
浅复制:只复制指向对象的指针,而不复制引用对象本身。深复制:复制引用对象本身。
23,.NSString 和 NSMutableString 有什么区别?
24.for(int index = 0; index < 20; index ++){?    NSString *tempStr = @”tempStr”;?    NSLog(tempStr);?    NSNumber *tempNumber = [NSNumber numberWithInt:2];?    NSLog(tempNumber);?}?这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?
25,.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
26,.在一个对象释放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove这个对象可能会出现什么问题?
27,.怎样实现一个 singleton的类.给出思路。
单例是在程序生命周期里只被实例化过一次的 类
28.什么是序列化或者Acrchiving,可以用来做什么,怎样与copy结合,原理是什么?.
29.在iphone上有两件事情要做,请问是在一个线程里按顺序做效率高还是两个线程里做效率高?为什么?
30,.runloop是什么?在主线程中的某个函数里调用了异步函数,怎么样block当前线程,且还能响应当前线程的timer事件,touch事件等.
31,ios平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?
32.阐述一个nil对象从interface bulider产生,到载入程序运行空间,最后被释放时所经历的生命周期.
33,响应者链是什么?
34,.timer的间隔周期准吗?为什么?怎样实现一个精准的timer?
35.UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?
36.C和obj-c 如何混用?
37,ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什么时候调用的?
view为空时调用loadView,加载完成时调用viewDidLoad,释放时调用viewDidUnload.
38.ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?
39.谈谈你对ARC 的认识和理解?
代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了,代码高速化,由于使用编译器管理引用计数,减少了低效代码的可能性
40, Object-C有私有方法吗?私有变量呢??没,有。
41、Object-C的内存管理??引用计数器。??
42、对象是什么时候被release的??引用计数器为0.
43、iOS有没有垃圾回收??没。
44、tableView的重用机制??复用标记。
45、ViewController 的loadView、viewDidLoad、viewDidUnload分别是什么时候调用的,在自定义ViewController时在这几个函数中应该做什么工作??当view为nil时调用loadView,view完成加载调用viewDidLoad,view释放时调用viewDidUnload.?
46、ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是什么??内存超过阙值,尝试释放view.
47、列举Cocoa中常见的几种多线程的实现,并谈谈多线程安全的几种解决办法,一般什么地方会用到多线程??NSThread,GCD等。尽量用上层分装好的方法去实现多线程而不是手动调用NSThread。
48、self.跟self什么区别?
self.表示对象的属性,self表示对象本身
49、id、nil代表什么??id相当于void*,nil是空对象。
50、ObjC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么??
51、autorelease的对象是在什么时候被release的?
自动释放池中所有对象释放完后释放。
52、这段代码有什么问题,如何修改?for (int i = 0; i < someLargeNumber; i++) { ?NSString *string = @”Abc”;?string = [string lowercaseString];?string = [string stringByAppendingString:@"xyz"];?NSLog(@“%@”, string);?} ?53、autorelease和垃圾回收机制(gc)有什么关系? 
内存释放池提供了一个对象容器,每次对象发送autorelease消息时,对象的引用计数并不真正变化,而是向内存释放池中添加一条记录,记下对象的这 种要求。直到当内存释放池发送drain或release消息时,即当池被销毁前会通知池中的所有对象,全部发送release消息才会真正将引用计数减 少?。?
54、考察对@interface与@propety的理解
只用 @ interface声明的变量只能在当前的类中访问,在其他类无法访问,而@ propety声明的变量可以在外部访问。@ propety声明的变量可以打点调用
55、objective-c中的类型转换分为哪几类
字符串拼接,强制类型转换
56、多态的理解
Object-C是面向对象的编程语言,它具有面向对象编程的一些特性,封装性,继承性和多态性。不同对象以自己的方式响应相同的消息的能力叫多态。多态的主要好处就是简化了编程接口,


腾讯面试题
1。简述push原理,push的证书和其它的右什么不一样?
2。viewcontroller的一些方法的说明viewDidLoad, viewWillDisappear, viewWillAppear方法的 顺序和 作用?
3。frame 和 bounds 的 区别 ,bound的大小改变frame 改变吗?
4。sqlite中插入特殊字符的方法和接收到处理方法。
5。谈谈你对数组和链表认识,还有你是怎么用他们的?
6。冒泡算法。
7。socket编程简述
8。asihttp代码原理 ,异步请求的原理,异步请求最大数目,为什么只能这么多?
9。http请求方式?
10。uiview的圆角属性设置方法。
(m_mainImgView.layer.cornerRadius = 6;
m_mainImgView.layer.masksToBounds = YES;)
11。 masksToBounds属性的作用。(决定子layer是否被当前layer的边界剪切。默认是NO。)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值