iOS面试

ios面试题目(一)

只愿长相守 提交于 2020-02-12 02:23:40
1.多线程在实际现实中有哪些应用?(网络操作和大量图片处理不算) 通常耗时的操作都会放在子线程里处理,然后再回到主线程来显示。下面举几个例子: 我们要从数据库提取数据还要将数据分组后显示,那么就会开个子线程来处理,处理完成后才去刷新UI显示。 拍照后,会在子线程处理图片,完成后才回到主线程来显示图片。拍照出来的图片太大了,因此要做处理。 音频、视频处理会在子线程来操作 文件较大时,文件操作会在子线程中处理 做客户端与服务端数据同步时,会在后台闲时自动同步 2、如果app比较大,怎么样减少app的大小? 参考答案: 将build setting中的Optimization Level设置为Fastest, Smallest [-Os],在发布模式下,默认就是这样设置的 将build setting 中的Strip Debug Symbols During Copy设置为YES,在发布模式下,默认就是这样设置的 资源文件查找出所有未使用的,去掉这些永远不会使用的资源文件 对嵌入App的音频进行压缩处理 3、你在迭代开发中是怎么处理版本兼容问题? 参考答案: 版本迭代一定要注意兼容老版本,比如新增了字段或者去掉了某些不再使用的字段,不能引起应用闪退。我们这里只谈程序代码兼容新老版本问题,不考虑业务。因为业务是要求后台来兼容的,通常接口会有版本号控制,用于兼容不同版本的客户端。

iOS面试知识点

旧时模样 提交于 2020-02-12 01:19:36
1 iOS基础 1.1 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。 深拷贝同浅拷贝的区别:浅拷贝是指针拷贝,对一个对象进行浅拷贝,相当于对指向对象的指针进行复制,产生一个新的指向这个对象的指针,那么就是有两个指针指向同一个对象,这个对象销毁后两个指针都应该置空。深拷贝是对一个对象进行拷贝,相当于对对象进行复制,产生一个新的对象,那么就有两个指针分别指向两个对象。当一个对象改变或者被销毁后拷贝出来的新的对象不受影响。 实现深拷贝需要实现NSCoying协议,实现- (id)copyWithZone:(NSZone *)zone 方法。当对一个property属性含有copy修饰符的时候,在进行赋值操作的时候实际上就是调用这个方法。 父类实现深拷贝之后,子类只要重写copyWithZone方法,在方法内部调用父类的copyWithZone方法,之后实现自己的属性的处理 父类没有实现深拷贝,子类除了需要对自己的属性进行处理,还要对父类的属性进行处理。 1.2 KVO,NSNotification,delegate及block区别 KVO就是cocoa框架实现的观察者模式,一般同KVC搭配使用,通过KVO可以监测一个值的变化,比如View的高度变化。是一对多的关系,一个值的变化会通知所有的观察者。 NSNotification是通知

iOS 面试全方位剖析 -- Block篇

余生长醉 提交于 2020-02-06 01:52:54
1.Block的本意 block本质上也是一个OC对象,它内部也有个isa指针, block是封装了函数调用以及函数调用环境的OC对象, block是封装函数及其上下文的OC对象 2.block截获变量 #import "SYDBlcok.h" // 全局变量----不截获全局变量 int global_var = 4; // 静态全局变量-----不截获全局静态变量 static int static_global_var = 5; @implementation SYDBlcok -(void)method { // 基本数据类型的局部变量----只截获值 int var = 6; // 对象类型的局部变量----连同所有修饰符一起截获 __unsafe_unretained id unsafe_ibject = nil; __strong id strong_obj = nil; // 局部静态变量---以指针形式截获局部静态变量 static int multiplier_static = 3; NSLog(@"multiplier_static:%d",multiplier_static); int(^Block)(int) = ^(int num) { NSLog(@"局部变量>基本数据类型:%d",var); NSLog(@"局部变量>对象类型%@----strong

iOS中级开发,鹅厂面试全程记录!

孤街醉人 提交于 2020-01-03 00:10:25
感谢您的点击,为表达诚意,结尾有福利,嘿嘿! 腾讯社招iOS面试记录 毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。 一面电话面试: 面试官主要是针对iOS相关的基础问题。 先简单自我介绍一下自己 对mrc和arc的理解 谈谈对自动释放池的理解 自动释放池在mrc和arc区别 多层自动释放池嵌套的对象在哪一层释放 对于block,理解,mrc和arc下有什么区别,使用注意事项 对于深拷贝和浅拷贝的理解 对于strong weak,atomic等等理解 weak原理 如果属性完全不加修饰词入weak,atomic,系统会怎么处理 简述下block的实现 描述下IM系统如何保证消息不丢 IM数据库如何设计表 C++引用和指针有什么区别 Http协议30x的错误是什么 谈谈你懂runloop得理解:由浅入深 谈谈对多线程理解:由浅入深 谈谈category和extension区别,系统如何底层实现category 谈谈消息转发机制实现 谈谈事件响应链,如何响应view之外的事件 界面性能优化 整个面试大约1个半小时。整体上,回答的还算OK,自动释放池这块,不够清楚底层实现。另外atomic是在属性没有写的情况下系统默认的。Block的底层实现也表达的不够准确。 一面之后过了几天,给了二面通知。 二面视频面试: 这次面试官相对于一面

【iOS面试系列-1】iOS中@property 后assign,copy,retain,weak,strong的意义与区别(必考-必须详细掌握)

帅比萌擦擦* 提交于 2019-12-28 14:04:11
来源:网络 assign : 普通(简单)赋值,一般常用于基本数据类型,常见委托设计模式,一次来防止循环引用。不更改索引计数(Reference Counting)。 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等) retain :保留计数,获得到了对象的所有权,引用计数在原有基础上+1.释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 。我们给那块内存设一个引用计数,当内存被分配并且赋值给a时,引用计数是1。当把a赋值给b时引用计数增加到 2。这时如果a不再使用这块内存,它只需要把引用计数减1,表明自己不再拥有这块内存。b不再使用这块内存时也把引用计数减1。当引用计数变为0的时候,代表该内存不再被任何指针所引用,系统可以把它直接释放掉。retain之后count加一。alloc之后count就是1,release就会调用dealloc销毁这个对象。如果 retain,需要release两次。通常在method中把参数赋给成员变量时需要retain。NSArray对象会retain(retain值加一)任何数组中的对象。当NSArray被卸载(dealloc)的时候,所有数组中的对象会 被 执行一次释放(retain值减一)。不仅仅是NSArray,任何收集类(Collection

[iOS面试] 理解 copy

牧云@^-^@ 提交于 2019-12-27 05:27:02
前言 NSObject 有 copy 和 mutableCopy 两个成员。这两个函数是分别直接返回 copyWithZone 和 mutableCopyWithZone 的返回值。 因此,如果调用者没有实现 copyWithZone 或 mutableCopyWithZone,肯定会报错:unrecognized selector。 这两个函数,就分别是 NSCopying,NSMutableCopying 协议的成员。 (注意,不是这个: + (id)copyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE; 这个是 MRC 项目可用,ARC 下直接无视该函数,涉及到 Zone 都用 null) 基础框架里的类,很多都实现了 NSCopying,NSMutableCopying,例如 NSString 可以调用 copy 而不报错。那么,这些基础框架是具体怎么实现的这两个协议,才导致了所谓的 “深浅拷贝” ?数组的 [[NSArray alloc] initWithArray: copyItems: ] 到底是干什么的? strong 与 copy 到底用哪个?这些是本文将要回答的。 copy 和 mutableCopy 不可变对象的 copy:指针复制 指针到底是什么?指针本质上是一个 size_t 大小的一个数

拼多多--最新iOS面试题总结

做~自己de王妃 提交于 2019-12-25 17:41:11
关于面试题,可能没那么多时间来总结答案,有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程,和面试的一些总结,希望能帮助到正在面试或者将要面试的同学吧。 一面 JSON转模型如何实现;夜间模式;播放器架构设计 请求的过程 服务端返回格式除了json还有其他的吗? 哪些OC对象是线程安全的 为什么要在主线程更新UI 如何保证OC容器在多线程下的数据安全性 SDWebImage的内存怎么设计的,更新原则是什么 两个算法题: {} 判断括号匹配性 只有一种括号,计算最少加多少个括号,使其满足匹配 二面 +load和+initialize怎么理解的,什么时候会被调用,分别讨论父类重写而子类没重写的情况 怎么理解OC的动态性 介绍下消息转发机制,说一下这些过程中用到的系统api 怎么理解Block的 Block的变量截获机制 __block的实现原理 内存管理机制 用户点击屏幕,系统是怎么找到一个view并决定由它来响应事件的 更多: iOS面试题答案合集 来源: CSDN 作者: D_猿员 链接: https://blog.csdn.net/qq_42792413/article/details/103699659

iOS经典面试题

做~自己de王妃 提交于 2019-12-03 04:50:46
iOS经典面试题 前言 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS 面试题 和答案让我帮忙看看。我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖。整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人。所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家,进阶题目在后续补充。我的理解如果有错漏请一定指出,非常感谢! 从12年开始做面试官到现在已经三个年头了,这期面过很多形形色色的开发,有腾讯的、有百度的、有小公司的、有做外包的,还有完全没有代码能力来做管理的。给我的感觉是百度出品的技术能力最好,基础知识、技术细节掌握的非常的扎实并且自信。腾讯出品技术细节上也非常厉害,平均来说比百度差一些,但是解决问题的能力非常强,思维很活跃大局观好。小公司、外包公司的同学技术细节、基础知识要差一些。我个人是非常反对以出身论英雄BAT出品就一定比其他公司的优秀,只能说BAT提供的技术氛围更好,你可以跟更多优秀的人共事,相比小公司技术进步更容易些。 这期间我也面了很多互联网公司,腾讯、百度、阿里、快播还有其他很多中小型公司,给我的感觉是中国整体的互联网面试官的态度非常糟糕,面试官经常性习惯性的迟到,理由有开会啦、在吃饭啦,最离谱的是没有任何理由就让你在那里等

腾讯—iOS社招面试

非 Y 不嫁゛ 提交于 2019-11-29 23:45:51
丢了几份简历给腾讯的iOS,很多都给标为不合适,倒是有个MIG部门让我去面。 约了下午3点,在大族大厦12楼一面(面试官看着好实诚): 面试内容: 高工面 1.property本质-->property关键字 2.self循环引用-->weakself-->AFNetworking-->weak-strong dance 3.ARC原理与作用-->MRC-->编译器与运行时 4.KVC,KVO-->runtime 5.NSTimer-->runloop-->runloop mode 6.多线程-->runloop-->NSOperate-->GCD 7.MVC--> 项目架构 8.数据持久化方案-->网络层-->fmdb-->CoreData-->大数据量插入(事务) 9.UI-->一行三个元素水平垂直居中(相同间距) 10.hybird架构分层 11.看以前项目 面试聊得很愉快,被通知等下总建面 总监面 1.聊聊经历 2.看看项目 3.聊聊知识广度 聊得挺来的,被通知等下部门经理面 经理面 1.看看项目 2.聊聊自己定位 3.聊聊待遇期望 这大佬估计看人多了,瞅了两眼跟总监讨论了下就说去联系HR等下HR面 HR面 1.聊聊经历 2.聊聊规划 3.聊聊薪水 4.口头offer 下午3点面到7点就OK了 。第二天就收到邮件offer(可能跟他们的岗位匹配度很高

BAT面试经验分享——iOS高级开发工程师的自我总结!

我与影子孤独终老i 提交于 2019-11-29 22:19:48
序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,随着各大公司秋招的开始,很多小伙伴都行动起来了,我也有幸获得了一份不错的offer并和大家分享自己的经验心得。 由于我面试公司比较多,所以自然也是做了这方面的准备,因此这篇总结并不一定适合想去创业公司的同学。另外,由于经验本来就是主观性极强的东西,加之笔者水平有限,所以如果有不认可的地方,万望诸君呵呵一笑,抛之脑后。 首先我要问大家几个问题 什么是面试 有些人可能会把面试看的太重,觉得面试过了就能进入大厂,技术和财富兼得…… 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长! 我倒是觉得,面试没有这么夸张(抱歉做了一回标题党),它其实是一次你和面试官互相了解的绝佳机会,借此机会你还可以对未来的工作有初步的了解。 面试本身并不能完全评价一个人的实力。面试通过的人,也许只是恰好在面试时遇到了自己熟悉的问题,面试不通过,也有可能是面试官自身的问题,并非每个面试官都具备客观评价别人的能力。 换句话说,面试没通过也许是面试官没有发现你的才华,面试通过了也并不代表你就能胜任工作