iOS 面试经验

1,视图控制器的生命周期

答:loadView:加载View;viewDidLoad :view加载完毕;viewWillAppear:view即将显示;viewDidAppear:view已经显示;viewWillDisapper:view即将消失;viewDidDisappear:view已经消失;delloc:viewController被销毁。

// ARC下不需要写[super dealloc];

2,UITableView优化方案

答:http://www.cocoachina.com/ios/20150602/11968.html

提前计算并缓存好高度;异步绘制;滑动时按需加载;

正确使用复用标识符;尽量少用透明图层;尽量少用addView给Cell动态添加View;

3,NSMutableDictionary 的setObject:forKey:与setValue:forKey:的区别

答:object中值不能为空,而且key可以是任何类型,必须实现NSCoding协议的类的对象。value中值可以是空,而且key只能是NSString类型。

4,简述NSThread NSOperation GCD的区别?同步和异步的区别?

答:NSThread是相对轻量级的,需要自己管理线程的生命周期,同步,加锁问题。NSOperation是完全的面相对象的,本身是一个抽象基类。CGD是基于C语言的一套API,更多在于处理多核运算。GCD自己管理线程,我们只需要把添加入队列。

同步和异步的区别在于会不会阻塞当前线程。

同步串行:在当前线程,一个一个执行。

同步并行:在当前线程,一个一个执行。

异步串行:新开线程,一个一个执行。

异步并行:新开很多线程,一并执行。

5,介绍App启动的完全过程,以及影响启动速度的因素?

答:启动过程

1,执行mian函数;

2,执行UIApplicationMain函数,创建UIApplication对象,创建UIApplicationDelegate对象。

3,读取info.plist文件的配置,建立沙箱,权限检查等。

4,创建应用程序的  main RunLoop循环。

5,给代理发送程序启动的代理方法,application:didfinishllaunchoption 。如果info文件里有storyboard,加载,如果没有,则根据代码来创建主window,然后创建根视图控制器。

6,如何判断Cell是否显示在屏幕上?

影响因素:1,减少oc类的数目,减少Category的数目。2,定期扫描不再使用的动态库。

7,简述KVO、KVC,通知,代理,Block的优缺点

KVO:优点:缺点:1,只能用来对属性作出反应,而不会用来对方法或者动作作出反应。2,注意移除观察者。

通知:优点:1,实现简单2,一对多的。缺点:1,在编译期不会检查通知是否能够被观察者正确的处理。2,调试时候很难追踪。3,注册后,需注意释放。

代理:优点:1,运行成本低。只是保存了一个对象指针,直接回调,没有额外消耗。当公共接口较多,用delegate解耦。

block: 优点:1,写法简练。缺点:1,运行成本高。block出栈需要将使用的数据从栈内存拷贝到堆内存,对象的话就是加计数,使用完block置nil才消除。2,需要防止循环引用。

8,typedef struct _ABC{

int a;

long b;

char c;

} ABC;

sizeof(ABC) = 24.

知识点:计算结构题的大小。结构体的大小 =最后一个成员的大小 + 最后一个成员的偏移量。

9,给定一个字符串,实现打印最大数字(0-9为有效数字字符)字符,例如“abc128ef93r”

10,

int a = 1;

void (^block)() = ^(){ NSLog(@"a = %d",a); };

a++;

block();

输出为:a= 1 .注意:在block 中,如果使用了外部参数,那么这些参数都会拷贝一份到block中,无论外部如何变化,block内的不会发生变化。

11,

@interface NSObject (Some)

@property NSInteger type;

@end

@implementation NSObject (Some)

@end

这样是否能通过编译,运行时会有什么问题?

答:能。如果使用type属性的话,会崩溃,因为类别不能增加属性。可以在类别里添加get,seter方法.get用objc_getAssociatedObject(self,@"propertypeName";)set方法用objc_setAssociatedObject(self,@"propertypeName",propertypeName,OBJC_ASSOCIATION_COPY_OBJC_ASSOCIATION_COPY);

12,UIView 与CALayer 区别?

答:1,UIView可以响应事件,Layer不可以。

13,NSArray 与NSSet区别?

答:NSArray是顺序的存放数据,NSSet无序的,底层使用hash实现的,所以查询速度会快一些。

14,用NSLog函数输出一个浮点类型,结果四舍五入,并保留一位小数,写法:

答:float x = 3.4;

NSLog(@"%.1f", roundf(x * 10) / 10);

15,NSCache 与 NSDictionary区别?

答:cache主要用来做缓存。的key不需要实现NSCopying协议。cache可以通过countlimit 限制cache的数量。且在内存吃紧的时候会自动释放。

16,使用NSTimer注意事项????????????????

答:1,NSTimer 是需要配合NSRunLoop 才可以正常工作的。2,

17,对于语句NSString * obj =[[NSData alloc]init]; ,编译和运行时是什么类型的对象?

答:编译时 NSString 运行时NSData.

18,面向对象语言的特点,分别介绍一下。

答:封装:把客观的事物封装成抽象的类。继承:可以使用现有的类的属性和方法,并无需编写原来的类的情况下对这个类进行扩展。多态:不同的对象以自己的方式相应相同的方法。

19,#define F(x,y)  X + Y   , F (1,2) * F(3,4)

答:21?错!!!你以为(1+2)*(3+4) =3* 7 =21;

在C语言里面,宏只是简单的文本替换,所以表达式为:

1 + 2 *3+ 4 =1 +6+ 4 = 11,正确答案为11。

20,view的frame和bounds的区别是什么?

答:frame:该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)bounds:该view在自身坐标系统中的位置和大小。(参照点,自己的坐标)

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

答:崩溃。

22,app在上线过程中在构建完版本之后可以选择的发布方式分别是什么?

答:Xcode,Application Loader

23,NSLog(@"%ld %ld %ld %ld ",sizeof (char), sizeof(char[2]) ,sizeof(char *),sizeof((char *)(124)));这句话在32位系统下输出结果是什么?

答:1,2,8,8 第一个,char字符型1的长度;第二个,XX;第三个,是指针的大小,32位计算为4,64位计算机为8。

24,NSUserDefaults是什么,可以存储的数据类型?

答:plist文件。NSNumber、NSString、NSArray、NSDictionary、NSData、NSDate、

26.OC可以多重继承么,可以实现多个接口?

答:不可以。可以多个接口

27,GIF图展示的原理

答:

28 ,哈希表

答:散列表(hash table)是根据关键码值而直接进行访问的数据结构。字典的底层是一个哈希表。

29 ,cell上控件的点击事件和cell选中事件的冲突

答:gestureRecognizer

if([NSStringFromClass([touch.viewclass]) isEqualToString:@"UITableViewCellContentView"]) {//返回为NO则屏蔽手势事件returnNO; }

30 ,MVC模式,MVVM模式。

答:

31,语音推送。

答:

32 ,缓存机制

答:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,084评论 1 32
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,345评论 0 35
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 2,689评论 0 73
  • 诗|白丛瑜 触摸。向上,也向下 双手结识内容包括: 柔和屏幕、从内核发烂的梨 洗过多次的软牛仔裤 还有黑夜冰冷的隐...
    白蕙侨阅读 256评论 0 1
  • 内容来源:2017年4月21日,极光资深产品经理王猛在“极光开发者沙龙——JIGUANG MEETUP”进行《精准...
    IT大咖说阅读 329评论 0 2