IOS面试专题swiftiOS面试总结

面了三个大厂,终于拿到offer,数年iOS最经典的面试题总结

2019-04-11  本文已影响268人  _小迷糊_997

文章最后有面试题福利!记得看一下哦~

前言

写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看。我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖。整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人。所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家,进阶题目在后续补充。我的理解如果有错漏请一定指出,非常感谢!

从12年开始做面试官到现在已经三个年头了,这期面过很多形形色色的开发,有腾讯的、有百度的、有小公司的、有做外包的,还有完全没有代码能力来做管理的。给我的感觉是百度出品的技术能力最好,基础知识、技术细节掌握的非常的扎实并且自信。腾讯出品技术细节上也非常厉害,平均来说比百度差一些,但是解决问题的能力非常强,思维很活跃大局观好。小公司、外包公司的同学技术细节、基础知识要差一些。我个人是非常反对以出身论英雄BAT出品就一定比其他公司的优秀,只能说BAT提供的技术氛围更好,你可以跟更多优秀的人共事,相比小公司技术进步更容易些。

这期间我也面了很多互联网公司,腾讯、百度、阿里、快播还有其他很多中小型公司,给我的感觉是中国整体的互联网面试官的态度非常糟糕,面试官经常性习惯性的迟到,理由有开会啦、在吃饭啦,最离谱的是没有任何理由就让你在那里等。其实我觉得现在这些公司啊还没有认清楚一个现状,就是绝大多数干开发的都只是来看看机会,不是来求职的,所以总是找不到人。一边说自己的公司多么求贤若渴,应聘者来了又不给予应有的尊重。我认为面试是非常不好的一个词,应聘过程应该叫面谈、review更合适,它是一个双向选择的过程。

我参加的面试不下五十次,只有两次面试官递给我一杯水,一次是腾讯的技术一面,后来那个面试官也是我最尊敬的组长,还有一次是快播的hr面。其他面试官直接无视汗流浃背顶着深圳烈日赶来面试的我,基本上每次面试完都是半脱水状态。面试更主要的是考察一个应聘者在正常环境下的工作能力而不是极端环境下的应激能力,面试官不是要把应聘者问倒、提一些刁钻的问题把他难住而是应该帮助应应聘者缓解他的紧张和压力,并适当的提示,让应聘者最大限度的发挥,这才是一个合格面试官最基本的素质。

iOS面试知识点

现在进入本篇的正题。本篇的面试题是我认为比较好的iOS开发基础知识点,希望大家看过这后在理解的基础上掌握而不是死记硬背。死记硬背很快也会忘记的。

1 iOS基础

1.1 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。

1.2 KVO,NSNotification,delegate及block区别

1.3 KVC如果实现,如何进行键值查找。KVO如何实现

1.4 将一个函数在主线程执行的4种方法

dispatch_async(dispatch_get_main_queue(), ^{      
    //需要执行的方法
});
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];  //主队列
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
    //需要执行的方法
}];
[mainQueue addOperation:operation];
[self performSelector:@selector(method) onThread:[NSThread mainThread] withObject:nil waitUntilDone:YES modes:nil];

[self performSelectorOnMainThread:@selector(method) withObject:nil waitUntilDone:YES];

[[NSThread mainThread] performSelector:@selector(method) withObject:nil];
[[NSRunLoop mainRunLoop] performSelector:@selector(method) withObject:nil];

1.5 如何让计时器调用一个类方法

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES];

-(void)timerMethod
{
//调用类方法
    [[self class] staticMethod];
}

-(void)invalid
{
    [timer invalid];
    timer = nil;
}

1.6 如何重写类方法

1.7 NSTimer创建后,会在哪个线程运行。

1.8 id和NSObject*的区别

typedef struct objc_object *id

我的理解如果有错漏请一定指出,非常感谢!

小编给大家推荐一个iOS技术交流群:679884541!群内提供数据结构与算法、底层进阶、swift、逆向、底层面试题整合文档等免费资料!希望找到更多的同行多多交流!以下资料,进群可以免费获得哦

上一篇 下一篇

猜你喜欢

热点阅读