iOS笔试题04
1. Object-C有多继承吗?没有的话用什么代替?
1> OC是单继承,没有多继承
2> 有时可以用分类category和协议protocol来代替多继承
2. Object-C有私有方法吗?私有变量呢?
1> OC没有类似@private的修饰词来修饰方法,只要写在.h文件中,就是公共方法
2> 可以使用类扩展(Extension)/继承来增加私有方法和私有变量
3. 关键字const什么含义?
const int a;
int const a;
const int *a;
int const *a;
int * const a;
int const * const a;
1> 前两个的作用是一样:a 是一个常整型数
2> 第三、四个意味着 a 是一个指向常整型数的指针(整型数是不可修改的,但指针可以)
3> 第五个的意思:a 是一个指向整型数的常指针(指针指向的整型数是可以修改的,但指针是不可修改的)
4> 最后一个意味着:a 是一个指向常整型数的常指针(指针指向的整型数是不可修改的,同时指针也是不可修改的)
4. static的作用?
1> static修饰的函数是一个内部函数,只能在本文件中调用,其他文件不能调用
2> static修饰的全部变量是一个内部变量,只能在本文件中使用,其他文件不能使用
3> static修饰的局部变量只会初始化一次,并且在程序退出时才会回收内存
5. 线程和进程的区别?
1> 一个应用程序对应一个进程,一个进程帮助程序占据一块存储空间
2> 要想在进程中执行任务,就必须开启线程,一条线程就代表一个任务
3> 一个进程中允许开启多条线程,也就是同时执行多个任务
6. 堆和栈的区别? heap和stack的区别?
1> 堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存
2> 栈空间的内存由系统自动分配,一般存放局部变量等,不需要手动管理内存
7. 为什么很多内置的类,如TableView的delegate的属性是assign不是retain?
1> tableView的代理一般都是它所属的控制器,控制器会对它内部的view做一次retain操作
2> 假设tableView也对代理(控制器)做一次retain操作,那么就出现循环retain问题
3> 循环问题有什么后果?
8. 定义属性时,什么情况使用copy、assign、retain?
1> copy:NSString、Block等类型
2> assign:非OC对象类型, 基本数据类型(两个对象相互引用的时候,一端用retain, 一端用assign)
3> retain:OC对象类型
9. 对象是什么时候被释放的?
每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁
10. ViewController 的loadView、viewDidLoad、viewDidUnload分别是什么时候调用的,在自定义ViewCointroller时在这几个函数中应该做什么工作?
1> loadView
- 当第一次使用控制器的view时,会调用loadView方法创建view
- 一般在这里自定义view
2> viewDidLoad
- 当控制器的view创建完毕时会调用,也就是在loadView后调用
- 一般在这里添加子控件、初始化数据
3> viewDidUnload
- 当控制器的view因为内存警告被销毁时调用
- 一般在这里回收跟界面相关的资源(界面都会销毁了,跟界面相关的资源肯定不要了)
11. ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是什么?
- 当应用程序接收到系统的内容警告时,就有可能调用控制器的didRece…Warning方法
- 它的默认做法是:
l 当控制器的view不在窗口上显示时,就会直接销毁,并且调用viewDidUnload方法
12. 怎么理解MVC,在Cocoa中MVC是怎么实现的?
1> M:Model,模型,封装数据
2> V:View,视图界面,负责展示数据
3> C:Controller,控制器,负责提供数据(Model)给界面(View)
13. self.跟self->什么区别?
1> self.是调用get方法或者set方法
2> self是当前本身,是一个指向当前对象的指针
3> self->是直接访问成员变量
14. id、nil代表什么?
1> id类型的指针可以指向任何OC对象
2> nil代表空值(空指针的值, 0)
15. 如何对iOS设备进行性能测试?
Profile-> Instruments ->Time Profiler
iOS笔试题04的更多相关文章
- 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笔试题02
1. Difference between shallow copy and deep copy? 1> 浅拷贝:指针(地址)拷贝,不会产生新对象 2> 深拷贝:内容拷贝,会产生新对象 2 ...
- 面试中遇到的iOS笔试题
1.浅复制和深复制的区别? 2.类别的作用(category)?继承和类别在实现有何区别? 3.类别(category)和类扩展(extension)的区别. 4.obc中的协议和java中的接口概念 ...
- iOS 笔试题
转:http://blog.sina.com.cn/s/blog_b0c5954101014upb.html 1.截取字符串”20|http://www.621life.com“ 中 ‘|’字符前面及 ...
- iOS笔试题03
1. When to use NSMutableArray and when to use NSArray? 1> 当数组元素需要动态地添加或者删除时,用NSMutableArray 2> ...
随机推荐
- SQL 学习指南-数据库使用
1.缺失子句 now() 是MySQL的内建函数,返回当前的日期和时间.在MySQL中可以直接使用下列语句查询: SELECT NOW(); 但是某些数据库规定查询语句必须包含 from 子句,并在其 ...
- bzoj 2563: 阿狸和桃子的游戏 贪心
这个真的好巧妙啊~ 如果只考虑点权的话显然直接按照权值大小排序即可. 但是加入了边权,就有了一个决策的问题. 于是,我们将边权分一半,分给两个端点. 如果一个人拿了两个端点,则边权都会加上. 否则,边 ...
- UOJ 449 【集训队作业2018】喂鸽子 【生成函数,min-max容斥】
这是第100篇博客,所以肯定是要水过去的. 首先看到这种形式的东西首先min-max容斥一波,设\(f_{c,s}\)表示在\(c\)只咕咕中,经过\(s\)秒之后并没有喂饱任何一只的概率. \[ \ ...
- [后渗透]Linux下的几种隐藏技术【转载】
原作者:Bypass 原文链接:转自Bypass微信公众号 0x00 前言 攻击者在获取服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件,本文介绍Linux下的几种隐藏技术. 0x01 隐藏文件 ...
- 使用spring profile实现多环境切换
第一步: applicationContext.xml <!--环境配置开始--> <beans profile="production"> <con ...
- 微信小程序设置滚动条
前言 又很久没有写东西了,上周开始将一个APP和一个网站的内容整合到微信小程序中,到这会儿终于搞得快结束了,才发现为啥我的小程序滚动视图没有滚动条,这是闹哪样,没有滚动条的滚动是没有灵魂的. 客官可移 ...
- ngx.shared.DICT.incr 详解
ngx.shared.DICT.incr 原文: ngx.shared.DICT.incr syntax: newval, err, forcible? = ngx.shared.DICT:incr( ...
- boost 介绍
简介: Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容 ...
- ip6tables命令
ip6tables命令和iptables一样,都是linux中防火墙软件,不同的是ip6tables采用的TCP/ip协议为IPv6. 语法 ip6tables(选项) 选项 -t<表>: ...
- 请解释一下 JavaScript 的同源策略
概念: 同源策略是客户端脚本(尤其是Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载. 这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议. 指一 ...