iOS笔试题02
1. Difference between shallow copy and deep copy?
1> 浅拷贝:指针(地址)拷贝,不会产生新对象
2> 深拷贝:内容拷贝,会产生新对象
2. What is advantage of categories? What is difference between implementing a category and inheritance?
类别主要有3个作⽤:
(1)将类的实现分散到多个不同⽂件或多个不同框架中。
(2)创建对私有⽅法的前向引⽤。
(3)向对象添加⾮正式协议。
1> 分类可以在不修改原来类模型的基础上拓充方法
2> 分类只能扩充方法、不能扩充成员变量;继承可以扩充方法和成员变量,
会产生新的类
3. Difference between categories and extensions?
1> 分类是有名称的,类扩展没有名称
2> 分类只能扩充方法、不能扩充成员变量;类扩展可以扩充方法和成员变量
3> 类扩展一般就写在.m文件中,用来扩充私有的方法和成员变量(属性)
注意:继承和类扩展都可以扩充方法和成员变量,但是继承会产生新的类,但是类扩展不会产生新的类。
4. Difference between protocol in objective c and interfaces in java?
1> Java的接口中声明的方法必须都实现
2> Oc的protocol中声明的方法并不一定要实现
注意:protocol简单来说就是一系列方法列表,可以声明很多方法,声明方法可以被任何类实现,称为代理模式。
5. What are mutable and immutable types in Objective C?
1> mutable是可变类型,比如NSMutableArray,可以动态往里面添加元素
2> immutable是不可变类型,比如NSArray,固定的存储空间,不能添加元素
6. When we call objective c is runtime language what does it mean?
1> 动态绑定:对象类型在运行时才真正确定
2> 多态性
3> 消息机制
7. What is push notification?
1> 本地推送:程序内部弹出通知到用户设备
2> 远程推送:由推送服务器推送通知到用户设备
8. What is Polymorphism?
多态:父类指针指向子类对象
9. What is responder chain?
响应者链:
l UIResponder有一个nextResponder属性,通过该属性可以组成一个响应者链,事件或消息在其路径上进行传递
l 如果UIResponder没有处理传给它的事件,会将未处理的消息转发给自己的nextResponder
10. Difference between frame and bounds?
1> frame以父控件的左上角为坐标原点
2> bounds以控件本身的左上角为坐标原点
11. Difference between method and selector?
selector是一个方法的名字,通过一个selector可以找到方法地址,进而调用一个方法 ;method是一个组合体,包含了名字和实现.
12. Is there any garbage collection mechanism in Objective C.?
1> OC 1.0没有垃圾回收
2> OC 2.0有垃圾回收,只能用在Mac上
3> iOS中有ARC机制,是编译器特性,垃圾回收是运行时特性
13. What is NSOperation queue?
1> 用来存放NSOperation对象的队列,可以用来异步执行一些操作
2> 一般可以用在网络请求等耗时操作
14. What is lazy loading?
延迟加载:比如控制器的view,在第一次用到view时才会调用loadView方法进行创建
15. Can we use two tableview controllers on one viewcontroller?
一个控制器内部添加2个表格控制器是没有问题的,加判断条件判断是哪个tableview。
16. Can we use one tableview with two different datasources? How you will achieve this?
从对象属性上分析,tableView只有一个dataSource属性。当然,真要使用2个不同的数据源,也是可以的。
iOS笔试题02的更多相关文章
- YouKu iOS笔试题一
序言 最近收到某某同学将去youku的iOS笔试题的邮件,希望笔者能整理一下,并提供参考答案.笔者决定整理出来,并分享给大家.当然,与此同时,也想看看youku的笔试题到底有多难,也考考自己有多少料吧 ...
- 一份中规中矩的 iOS笔试题
一.背景 因为一些原因,我从公司离职,在此之前,我需要帮忙招聘一个新人来做我的工作,于是就有了这篇文章. 由于公司项目16年就已经上线了,前同事写的项目中,有用xib.storyBoard.代码自动布 ...
- 2016年iOS笔试题
收集了一些ios面试的一些基础的试题,其中也有一些较难的 1.请简述UIView与CALayer有什么不同.2.Block什么情况下会保留实体内引用到外部对象,什么时候要用__block或__weak ...
- ios笔试题(选择题)
1-10 C语言 & 计算机基础 1.请看下面一段代码 static int a = 1; int main(){ int b = 2; char *c = NULL; c = (char * ...
- ios笔试题
最近找工作,有面试有笔试部分,故把笔试题自己整理了下. 面试能力要求:精通iphone的UI开发,能熟练操作复杂表视图,熟练使用图层技术, 可以自定义UI控件,使用类别扩展系统控件功能; 擅长通讯 ...
- iOS笔试题04
1. Object-C有多继承吗?没有的话用什么代替? 1> OC是单继承,没有多继承 2> 有时可以用分类category和协议protocol来代替多继承 2. Object-C有私 ...
- 面试中遇到的iOS笔试题
1.浅复制和深复制的区别? 2.类别的作用(category)?继承和类别在实现有何区别? 3.类别(category)和类扩展(extension)的区别. 4.obc中的协议和java中的接口概念 ...
- iOS面试题 02
在面试的时候,面试官问我,“你对内存管理了解的多吗?” 我忘了当时是怎么回答的了,但是,肯定是一时没想起来怎么回答. 1.谁创建谁释放 2.autoreleasepool 3.retain,copy, ...
- iOS 笔试题
转:http://blog.sina.com.cn/s/blog_b0c5954101014upb.html 1.截取字符串”20|http://www.621life.com“ 中 ‘|’字符前面及 ...
随机推荐
- redis 事务 & 锁
参考:https://www.cnblogs.com/DeepInThought/p/10720132.html Redis不保证原子性:Redis中,单条命令是原子性执行的,但事务不保证原子性,且没 ...
- 前端实现在线预览pdf、docx、xls、ppt等文件
思路:前台将各种格式的附件上传到服务器----后台通过方法将这些格式的文件转化成图片,前台通过放映ppt的方式将其展示在页面上. 关键点:reveal.js 参考文章:https://www.awes ...
- 洛谷P2577 午餐【贪心】【线性dp】
题目:https://www.luogu.org/problemnew/show/P2577 题意:n个人每个人有一个打饭时间和吃饭时间,将他们分成两个队伍.每个人打到饭之后就马上去吃饭.问怎么安排可 ...
- 根据参数显示类别(三级联动,需要JSON数据)
根据参数显示类别(三级联动,需要JSON数据) Scripts/Category.js 调用方法: $(function () { BindCategory(); //默认绑定文本框中的值 BindC ...
- java对象转换
对象转换: 对象的分层涉及到各个层级之间的对象转换(Entity2DTO , DTO2VO, VO2DTO,DTO2Entity等),传统的采用set/get 方法硬编码实现写的代码比较多:或者采用B ...
- 自定义starter
https://github.com/deadzq/spring-boot-starter-hello 父子项目 子项目引用父项目中的依赖和配置参数
- 论自动AC机
O(∩_∩)O哈哈~第一篇原创博客.终于结束了我“无敌转载王”的称号了!!!好开心! (⊙v⊙)嗯,看到标题觉得我是神犇的人,请再次仔细看看标题,是“自动AC”,而非“AC自动”哦!这是利用lemon ...
- 从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程
从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程 2019-07-09 | 作者:白巍 编者按:微软交换机操作系统开源项目SONiC (Software f ...
- 前端逼死强迫症系列之javascript续集
一.javascript函数 1.普通函数 function func(){ } 2.匿名函数 setInterval(function(){ console.log(123); },5000) 3. ...
- Linux下java环境变量配置
安装步骤 1.查看当前Linux系统是否安装java rpm -qa | grep java 2.卸载系统中已经存在的openJDK rpm -e --nodeps java--openjdk-1.7 ...