这一年的时间已经经历了实习、校招好几回的面试了,对于每一个准备找工做或者已经找到工做的人来讲,准备面试题都是一次提高本身的机会。但比较庆幸的是,本人几回面试所遇到的问题都比较简单,没有太多能让本身有所提高的内容,而网上流传的各类面试题现在看来也没有什么太大的新意。所以我决定本身出一份面试题,真正有一点难度的面试题。面试
对于我我的来讲,我不太喜欢那些查一查就能获得答案的题目,好比某个 API 怎么用,或者某个数据结构怎么写等等,由于这些题目其实考察都是肌肉记忆,就算答得好也不表明这我的能力很强,只能说他前期准备工做作得比较好。我下面所提出的几个问题都是须要必定实践或者必定经验才能流畅解答出来的题目,若是这些问题对你来讲 so easy,那么说明你有必定的知识广度,对问题比较喜欢深刻探究。固然了,若是你以为某几个问题有些许难度,也没有太大的关系,可以说出一个大体的思路也是 ok 的,后期再慢慢摸索一下对本身也是有极大提高的。服务器
下面就来看看个人问题吧!网络
UIView
与 CALayer
的关系,drawRect
必定会影响性能吗?UI Dynamics 与 UIKit Animation 的最本质区别是什么?UIImageView
显示超大分辨率的图?若是要支持缩放呢?id
、self
、super
它们从语法上有什么区别?Class
对象自己的指针吗?__block
还能够怎么作?有哪些局限性?NSDictionary
与 NSHashTable
有什么区别,它们的使用场景是怎样的?backtrace
是在用户态实现的吗?可否讲讲实现它的大体思路?malloc
的指针 double free 产生的异常与访问 freed 指针有可能产生的异常有什么区别?为何访问 freed 指针不必定产生异常?fastpath
、slowpath
是什么?SideTables
(不是 SideTable
)存在的意义是什么?[super dealloc]
?int main(int argc, const char * argv[]) {
// ...
NSUInteger threadCount = [NSProcessInfo processInfo].activeProcessorCount;
NSCondition *cond = [NSCondition new];
for (int i = 0; i < threadCount; i++) {
[NSThread detachNewThreadWithBlock:^{
while (YES) {
[cond lock];
while (/* Queue is empty */) {
[cond wait];
}
// Dequeue an item.
[cond unlock];
// Handle the item.
}
}];
}
while (YES) {
// Enqueue something when it comes.
[cond broadcast];
}
// ...
}
复制代码
虽然只有 21 道题,但相关问题仍是不少不少的,往后我可能也会写一篇文章来解答一下全部的问题,固然我更但愿你们可以本身完成这些问题,不要尝试直接搜答案,不少题也许根本搜不到答案,因此本身探究的过程必定是必不可少的,加油吧!数据结构