您的位置:首页 > 职场人生

ios面试题目

2016-05-11 11:00 381 查看

iOS 面试题

浅复制和深复制的区别?

类别的作用?继承和类别在实现中有何区别?

类别和类扩展的区别?

obc中的协议和java中的接口概念有何不同?

谈谈你对KVC与KVO的区别。

代理的作用。

obc中可修改和不可以修改类型。

我们说的obc是动态运行时语言是什么意思?

通知和协议的不同之处?

什么是推送消息?

关于多态性。

对于单例的理解。

事件分发和响应者连。

frame和bounds有什么不同?

方法和选择器有何不同?

OBC的垃圾回收机制?

NSOperation queue?

懒加载

是否在一个视图控制器中嵌入两个tableview控制器?

一个tableView是否可以关联两个不同的数据源?你会怎么处理?

Object-c的类可以多重继承么?可以实现多个接口么?重写一个类的方式用继承好还是分类好?为什么?

#import
#include
什么区别
#import<>
#import""
又什么区别?

类变量的@protected ,@private,@public,@package声明各有什么含义?

id 声明的对象有什么特性?

MVC是什么?有什么特性?为什么在iPhone上被广泛运用?

对于语句NSString* testObject = [[NSData alloc] init];testObject在编译时和运行时分别是什么类型的对象?

什么是安全释放?

28.

29.

30.

property中属性retain,copy,assgin的含义分别是什么?有什么区别?将其转换成get/set方法怎么做?有什么注意事项?

委托是什么?委托的property声明用什么属性?为什么?ARC下用weak?

Cocoa中有虚基类的概念么?怎么简洁的实现?

自动释放池跟GC(垃圾回收)有什么区别?

for(int index = 0; index < 20; index ++){
NSString *tempStr = @”tempStr”;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}


上面这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?

内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?

在一个对象释放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove这个对象可能会出现什么问题?

怎样实现一个 singleton的类.给出思路。

什么是序列化或者Acrchiving,可以用来做什么,怎样与copy结合,原理是什么?

线程与进程的区别和联系?

在iphone上有两件事情要做,请问是在一个线程里按顺序做效率高还是两个线程里做效率高?为什么?

runloop是什么?在主线程中的某个函数里调用了异步函数,怎么样block当前线程,且还能响应当前线程的timer事件,touch事件等.

ios平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?

阐述一个nil对象从interface bulider产生,到载入程序运行空间,最后被释放时所经历的生命周期.

46.

kvc是什么?kvo是什么?有什么特性?

响应者链是什么?

timer的间隔周期准吗?为什么?怎样实现一个精准的timer?

UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?

如果要开发一个类似eclipse的软件,支持插件结构。且开放给第三方开发。你会怎样去设计它?(大概思路)

53.

main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}


以下为Windows NT下的32位C++程序,请计算sizeof的值

voidFunc ( char str[100] ) 
{ 
sizeof( str ) =? 
} 
void *p = malloc( 100 ); 
sizeof ( p ) = ?

(void)*getNSString(const NSString *inputString)

{ inputString =@”This is a main test\n”;

return ;}

-main(void)

{NSString *a=@”Main”;

NSString *aString = [NSStringstringWithString:@”%@”,getNSString(a)];

NSLog(@”%@\n”, aString);}

最后问输出的字符串:NULL,output在 函数返回后,内存已经被释放。

列举几种进程的同步机制,并比较其优缺点。

堆和栈的区别

什么是键-值,键路径是什么?

c和obj-c如何混用

目标-动作机制

cocoatouch框架

objc的内存管理

自动释放池是什么,如何工作?

类工厂方法是什么?

单件实例是什么?

动态绑定—在运行时确定要调用的方法

obj-c的优缺点

readwrite,readonly,assign,retain,copy,nonatomic 属性的作用?

ViewController的 didReceiveMemoryWarning 是在什么时候被调用的?

谈谈你对ARC 的认识和理解?

ObjC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么

在一个对象的方法里面:

self.name = “object”;



name =”object”

有什么不同?

这段代码有什么问题:

@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end


什么是retaincount?

以下每行代码执行后,person对象的retain count分别是多少?

Person *person = [[Person alloc] init];

[person retain];

[person release];

[person release];

为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain的?

定义属性时,什么情况使用copy,assign,和retain?

autorelease的对象是在什么时候被release的?

这段代码有什么问题,如何修改?

for (int i = 0; i < someLargeNumber; i++)

{

NSString *string = @”Abc”;

string = [string lowercaseString];

string = [stringstringByAppendingString:@”xyz”];

NSLog(@“%@”, string);

}

autorelease和垃圾回收机制(gc)有什么关系?IPhone OS有没有垃圾回收(gc)?

Objective C中的protocal是什么?

Objective C中的selector 是什么?

Objective C中的category是什么?

什么是Notification?什么时候用delegate,什么时候用Notification?

什么是KVC和KVO?Notification和KVO有什么不同?KVO在ObjC中是怎么实现的?

ViewController 的 loadView,viewDidLoad, viewDidUnload 分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?

ViewController 的didReceiveMemoryWarning 是在什么时候被调用的?UIViewController类中didReceiveMemoryWarning默认的操作是什么?

UITableViewController 中,创建UITableViewCell时,initWithSytle:resuseIdentifier中,reuseIdentifier有什么用?简述UITableViewCell的复用原理.

UIView 和CALayer 有什么区别?

以 UIView 类animateWithDuration:animations: 为例,简述UIView动画原理。

iOS 面试题(二)

iOS数据持久化存储方法?

偏好设置

归档解档

数据库(SQlite3,FMDB,core data)

web存储

归档解档(NSCoding协议,KVC)

MVVM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: