iOS面试技术难点有哪些
发布网友
发布时间:2022-04-22 06:22
我来回答
共2个回答
热心网友
时间:2024-03-01 19:32
iOS面试|project|IOS面试课程资料 在线免费观看
链接:https://pan.baidu.com/s/1gzdP5iVcyI5KMlAFql6QVQ
提取码:m94s
iOS面试|project|IOS面试课程资料|目录.txt|第9章 RunLoop相关面试问题(录).mp4|第8章 多线程相关面试问题(录).mp4|第7章 Block相关面试问题(录).mp4|第6章 内存管理相关面试问题(录).mp4|第5章 Runtime相关面试问题(录).mp4|第4章 Objective-C语言特性相关面试问题(录).mp4|第3章 UI视图相关面试问题(录).mp4|第1章 导学(录).mp4|第15章 课程总结(录).mp4|第14章 第三方库相关面试问题(录).mp4|第13章 算法相关面试问题(录).mp4
热心网友
时间:2024-03-01 19:32
1.什么是arc?(arc是为了解决什么问题诞生的?)
首先解释ARC: automatic reference counting自动引用计数。
ARC几个要点:
在对象被创建时 retain count +1,在对象被release时 retain count -1.当retain count 为0 时,销毁对象。
程序中加入autoreleasepool的对象会由系统自动加上autorelease方法,如果该对象引用计数为0,则销毁。
那么ARC是为了解决什么问题诞生的呢?这个得追溯到MRC手动内存管理时代说起。
MRC下内存管理的缺点:
1.当我们要释放一个堆内存时,首先要确定指向这个堆空间的指针都被release了。(避免提前释放)
2.释放指针指向的堆空间,首先要确定哪些指针指向同一个堆,这些指针只能释放一次。(MRC下即谁创建,谁释放,避免重复释放)
3.模块化操作时,对象可能被多个模块创建和使用,不能确定最后由谁去释放。
4.多线程操作时,不确定哪个线程最后使用完毕
2.请解释以下keywords的区别: assign vs weak, __block vs __weak
assign适用于基本数据类型,weak是适用于NSObject对象,并且是一个弱引用。
首先__block是用来修饰一个变量,这个变量就可以在block中被修改(参考block实现原理)
__block:使用__block修饰的变量在block代码快中会被retain(ARC下,MRC下不会retain)
__weak:使用__weak修饰的变量不会在block代码块中被retain
同时,在ARC下,要避免block出现循环引用 __weak typedof(self)weakSelf = self;
3.__block在arc和非arc下含义一样吗?
是不一样的。
在MRC中__block variable在block中使用是不会retain的
但是ARC中__block则是会Retain的。
取而代之的是用__weak或是__unsafe_unretained来更精确的描述weak reference的目的
其中前者只能在iOS5之後可以使用,但是比较好 (该物件release之後,此pointer会自动设成nil)
而後者是ARC的环境下为了相容4.x的解决方案。
所以上面的范例中
__block MyClass* temp = …; // MRC环境下使用 __weak MyClass* temp = …; // ARC但只支援iOS5.0以上的版本 __unsafe_retained MyClass* temp = …; //ARC且可以相容4.x以後的版本
4.使用nonatomic一定是线程安全的吗?()
不是的。
atomic原子操作,系统会为setter方法加锁。 具体使用 @synchronized(self){//code }
nonatomic不会为setter方法加锁。
atomic:线程安全,需要消耗大量系统资源来为属性加锁
nonatomic:非线程安全,适合内存较小的移动设备
5.描述一个你遇到过的retain cycle例子。
block中的循环引用:一个viewController
@property (nonatomic,strong)HttpRequestHandler * handler; @property (nonatomic,strong)NSData *data; _handler = [httpRequestHandler sharedManager]; [ downloadData:^(id responseData){ _data = responseData; }];
self 拥有_handler, _handler 拥有block, block拥有self(因为使用了self的_data属性,block会copy 一份self)
解决方法:
__weak typedof(self)weakSelf = self [ downloadData:^(id responseData){ weakSelf.data = responseData; }];
6.+(void)load; +(void)initialize;有什么用处?
在Objective-C中,runtime会自动调用每个类的两个方法。+load会在类初始加载时调用,+initialize会在第一次调用类的类方法或实例方法之前被调用。这两个方法是可选的,且只有在实现了它们时才会被调用。
共同点:两个方法都只会被调用一次。
面试iOS开发,为啥不能说是培训出来的?
1、前面部分的内容,基本是按面试官考察面试者的知识点的掌握情况,基本也是IOS开发人员学习掌握的一些知识点,难度不是很大,项目经验,是面试者向面试官展示,可以提前练习下项目介绍,做到有层次,有重点,自己实际负责的项目一定要说的详细一点。2、技术部分包括:对于面试过程中,遇到自己不熟悉的领域,...
AI面试产品要关注什么?
一般来说,注意的问题还是挺多的,毕竟涉及方方面面,特别是涉及到价格、费用以及优惠方面的问题,其实需要根据您的需求难点和情况而定,更多的细节建议可以给专业团队留言或者电话咨询会更快捷一点,方便您进一步获取适合自己需求且性价比更高...
我的iOS面试经历(附面试题干货)
面试官比较随和,专业,干脆,几个问题下来明显的能感觉到对方内功很深; 58同城 主要问的最近的项目,你在项目中做了哪些东西以及工程中使用到了哪些比较好的技术点; 懂球帝 问的问题便向设计,不过面试官的态度不怎么友善,一副不耐烦的样子; 皇包车旅行 问的主要是设计方面的问题,便向于架构方...
ios工程师简历 怎样算写得好
1. 讲述一次在这个APP中,用户触发了一个事件,引起了一个服务请求,然后获取服务端返回,并且更新前端界面的过程。请说的详细一点,比如数据经过了哪些类的处理,每一次传递时的格式是怎么样的?2. 参与的APP,是如何处理多个服务的同步发起的?随后让面试者说一下APP的界面架构,这个比较随意。问完了...
iOS面试技术难点有哪些
iOS面试|project|IOS面试课程资料|目录.txt|第9章 RunLoop相关面试问题(录).mp4|第8章 多线程相关面试问题(录).mp4|第7章 Block相关面试问题(录).mp4|第6章 内存管理相关面试问题(录).mp4|第5章 Runtime相关面试问题(录).mp4|第4章 Objective-C语言特性相关面试问题(录).mp4|第3章 UI视图相...
如何面试 iOS 工程师
面试时初级的内容加上一些一些进阶的内容比如,notificationCenter和delegate的区别,多线程分哪几种,然后简单的使用等等,然后比如空指针,野指针数组越界等等问题的处理方式.3、高级的话:面试题要求90以上,然后必须有模块设计之类的,基本iOS的可以随便考了(runtime技术,socket等等),必须答对百分之90以上。
ios 面试技巧
时间掌控:在面试过程中自我介绍一般在3~5分钟,不能超过10分钟。另外,时间分配上也要把握好。如果5分钟做自我介绍,那么1分钟就要做完自然情况介绍;列举最近三到五年工作介绍要占到3分钟;其余1分钟要搞定。内容想好:1.想想之前干过什么。简单介绍自己曾经做过的事情,比如工作单位、工作地点、工作...
当了半年多的面试官,iOS真的没人要了吗?原因就在这里!
——烈烈寒风起,惨惨飞云浮。iOS的需求依旧有相当量的需求,否则我也不会从2月面到10月。只是iOS的需求发生了变化,不再仅仅要求候选人能熟练的使用各种API,或者熟悉某些三方库。而是希望候选人能具备解决问题的能力。技术强弱不单单是取决于信息量的多少,更重要的是掌握解决问题的方法论。现在程序员...
iOS 程序员面试的时候,怎样的自我介绍算是一份好的呢
iOS开发新手,做一个游戏盒子APP能去面试吗
新手,小公司一般不要的,因为需要:独立开发 如果有人带你,那你需要展现一个积极的精神面貌,谦虚上进的态度,并且曾经有一段显示你自己“学习能力强”的经历。工资稍微降低点。至于带作品,只是你自己能力的一个侧面体现,如果对方公司有人会ios,一般都是直接问几个专业问题,就看出你的水平了,你的...
iOS面试题有哪些
3.类变量的@protected ,@private,@public,@package声明各有什么含义?答:变量的作用域不同,@protected 该类和所有子类中 的方法可以直接访问这样的变量,这是默认的,private 该类中的方法可以访问这样的变量,子类不可以。public除了自己和子类方法外,也可以被其他类或者其他模块中的方法访问 package...