OC 面试问题汇总
OC 问题汇总:
1. 你如何理解 iOS 内存管理
1. new alloc copy retain这些对象我们都要主动的release或者 autorelease
2. 如果是类方法创建的对象,那么系统自动释放池自动在适当的 时候会帮我们 release
3. ARC xcode 自动会帮我们人工智能的添加 release autorelease 操 作
2. C语言里的数组与OC数组的区别
OC 数组是一个对象,有大量的方法,c 没有都需要自己写 C 数组删除是需要后面往前移动,oc 数组自动处理
3. 浅拷贝与深拷贝的区别 或者什么是深拷贝 什么是浅拷贝
copy, mutableCopy
@interface A {
B *b; }
浅拷贝只是拷贝对象本身,不会对里面的子对象进一步拷贝
深拷贝会对子对象以及子对象的子对象进一步拷贝
4. 类别的作用
类别是给已有的类添加方法,但是不能添加变量,匿名类别除外 ()
5. 类别和继承什么区别
类别/类目/Category 很方便给现有类添加方法。但是不能添加成 员变量,匿名类除外,比如可以给 NSString 增加方法,给 UINavigationBar 增加方法,比如 SDWebImage 给 UIImageView 增 加了 setImageWithURL:方法。类别对于使用者很方便
继承可以给现有的类增加方法和成员变量。继承对于使用者来 说不如类别方便 ,比如对 SDWebImage 如果用继承的话,那么就 需要写一个类似于 QFImageView 然后把所有的 UIImageView 改成
QFImageView,这里不如类别方便
6. C 和 OC 有哪些基本数据类型
C char, short, int, struct, union, enum
NSString, nsarray, nsdictionary.
7. 代理和协议什么区别
代理是一种概念,协议是一种技术,代理是用协议来实现的,代理 是 2 个对象之间通讯的一种方式。 代理主要做反向传值的。实现系统的一些回调方法,比如 scrollview 滑动事件,选择照片,asi 网络下载完成等。
iOS 开发和 objective-c 区别
8. 代理和通知中心/广播/NoficationCenter 什么区别
代理主要是反向传值,一般用来 1:1 的两个对象通讯上。
通知中心是通过注册然后接收事件的一种 n:n(多对对) 的方法
9. 解释 const, static, inline 关键字
const 修饰指针,或者常量,比如不可变,
static 修饰变量表示作用域,比如全局的私有变量,函数内部的 static 是内部的私有变量。
Static 修饰函数表示函数是文件作用域
Inline 表示内联。一般来说 inline 需要和 static 联合用 一般用法是 static inline int max(int a, int b) {
return a>b?a:b; }
static inline作用是和宏类似,只不过是方便调试(宏不能断掉调 试,static inline 可以)。运行时候是一样的。
一般 c/c++短小的函数都用 static inline 内联函数
10. OC 里怎么实现多继承
OC 没有多继承。用协议实现多继承,把协议中的方法在实现的类 中重写 C++有多继承,多继承其实用好了很方便。C++多继承很容易出现 二一性比如:
类 A { int a;}
类B: 类A,类C:类A
类D : B, C那么 int a到底是继承自谁的 单继承
11.解释KVC和KVO
Key value coding, Key value observer.
Kvc 是路径访问的规范,kvo 是观察某个变量的变化过程
KVO 可以观察某个对象的变量变化过程,KVC 是满足被观察的编 码规范。
KVC/KVO 类似于代理,通知中心。都是一种通讯方法。
12. 什么是单例模式
单例就是在多个对象之间共享数据,类似于全局变量,比如数据 库打开一次,多个界面都可以使用
13. NSString *name = @”1000phone.com”,[name release]会出现什么 情况
这个代码不满足 objective-c 的内存管理黄金法则。没有 alloc 就
release,
14. 列举所知道的 iOS 的类
15. C/C++和 OC 怎么混用
.m -> .mm
16. 本地存储方式有哪几种
数据库,nsuserdefauts, file , plist,archieve 归档 比较小的就放在 nsuserdefaults(以文件设计的存放在 Libraray 中) 数据库里面适合存放一条一条的记录
file 一般存普通文件,图片,视频,音频等
plist 存放比 nsuserdefaults 大一些的
归档 nsarchieve 可以存对象
17.解释OC里的id类型
id 是泛型指针,可以指向任何 oc 类型,
id =~ NSObject *
id 是 objc_object 的 typedef,执行 Class 对象
18. retain、copy、readonly、readwrite 的区别
retain对计数器+1 copy是创建一个新对象,readonly只产生getter 函数,readwrite 产生 setter, getter 函数
19. copy 是深拷贝还是浅拷贝
copy 缺省是浅拷贝.但是 copy 也可以做成深拷贝
20. copy 和 mutableCopy 区别
copy 是拷贝,mutableCopy 是可变拷贝,比如把 NSString 通过 mutableCopy 变 成 NSMutableString, 把 NSArray 通 过 mutableCopy 变成 NSMutableArray.
NSString -àNSMutableString, NSArrayàNSMutableArray,
NSDictionaryàNSMutableDictionary, NSData->NSMutableData;
21. 怎么实现对象的本地存储
归档 NSArchieve
22. 遍历数组的三种方式有什么区别
for forin iterator
forin 也叫快速循环。为什么他叫快速循环,原因是速度快?为什
么速度快? 可以通过优化提前把 forin 里面的 array 数组数组全部
导入到 cpu cache 中。因为 cache 访问速度把内存快至少 100 倍
23. NSArray, NSDictionary 这些是如何做的?
NSArray 使用链表做的
NSDictionary 使用 hash 表做出来的
24. C++怎么调用 C 的方法
extern “C” int foo(){ };
25. Blocks 语法有什么优点
Blocks 类似于 c 中回调函数,和代理类似的,类似于 java 中的 listener 匿名函数
26. 什么是委托代理模式
委托代理是 2 个对象之间的一种通讯方式。一方使用协议,代理
另外一方实现协议,类似于回调,blocks 等语法。 目的是为了软件设计的低耦合
27. 什么是通知中心
通知中心是多对多的平等的通讯模式。主要用在多个对象之间松 耦合的通讯模式。对象和对象之间通过通知的名字就可以进行关 联通讯。
28.解释关键字static、const、inline、 static inline、volatile
static 修饰变量表示静态变量,根据作用域 不同
extern 和 static 是相反的。
Static 修饰函数是表示函数在本文件有效
Static inline 联合在一起表示内联函数。类似于宏
Const 修饰变量和变量的内容只读
Volatile 表示每次都从内存中真正的读取。主要是用于嵌入式中, 读取硬件。
29. OC 中有私有方法吗?怎么实现
在.m 文件中实现 Category,只是在.m 中方法
30. OC 中有私有成员变量吗?怎么实现
在.m 文件中实现匿名类别 Category
31. 成员变量的作用域有哪几种
@public, @protected, @private
32. 数据库能不能存图片,怎么存?
可以存图片, nsdata 存,但是我们一般不这样存,我们存路径把 图片存在沙盒中。
33. 不同屏幕怎么适配
iphone4, iphone4S 640x960 retina
iphone5, iphone5S, 640x1136
iphone6, iphone6S, 1334x750像素
iphone6 plus 1920x1080像素
iphone6s plus 1920x1080像素
34. 不同版本屏幕旋转怎么适配
35. 内存警告应该怎么做
尽量多的释放内存。把一些内容写到文件中,不要保存在内存中。
36. iOS7, iOS8, iOS9区别
37. NSNotification 是同步还是异步的
是同步的. 如果需要异步 必须使用 NSNotificationQueue 实现
OC 面试问题汇总的更多相关文章
- 2016年Web前端面试题目汇总
转载: 2016年Web前端面试题目汇总 以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢 ...
- 前端面试题目汇总摘录(JS 基础篇)
JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...
- Java面试知识点汇总
Java面试知识点汇总 置顶 2019年05月07日 15:36:18 温柔的谢世杰 阅读数 21623 文章标签: 面经java 更多 分类专栏: java 面试 Java面试知识汇总 版权声明 ...
- 李洪强iOS开发之OC常见错误汇总
// // main.m // 16 - 常见错误汇总 // // Created by vic fan on 16/7/13. // Copyright © 2016年 李洪强. All r ...
- 前端教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-资源汇总
内容精简 资源这么多,多看看多学习再总结肯定是好的.多读读就算看重了不算浪费时间,毕竟一千个读者就有一千个林黛玉,还有温故而知新,说不定多读一些内容,就发现惊喜了呢.不过,在此也精简一些内容,就1~2 ...
- ES6面试 知识点汇总(全)
近期在复习ES6,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总.(全干货,适合对ES6有一定理解的同学复习,以及ES6面试.) 一.问:ES6是什么? 答: ES6是新一代的JS语言标准 ...
- Web前端面试题目汇总
以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中有一些未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢迎指正,水平有限,望各位不吝指教.: ...
- Linux后台开发面试问题汇总
个人从事安全后台开发,当然是linux环境下的了.举几个常见的问题.1. 数据结构基础.比如实现一个最简单的哈希表.2. 操作系统基础.linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长, ...
- Angular 2的12个经典面试问题汇总(文末附带Angular测试)
Angular作为目前最为流行的前端框架,受到了前端开发者的普遍欢迎.不论是初学Angular的新手,还是有一定Angular开发经验的开发者,了解本文中的12个经典面试问题,都将会是一个深入了解和学 ...
随机推荐
- 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug
本文使用博客园Markdown编辑器进行编辑 1.问题呈现 项目中使用了jQuery UI的Dialog控件,一般用来处理需要提示用户输入或操作的简单页面.逻辑是修改一个广告的图片和标题. 效果截图如 ...
- React JS快速开始手册
怎样用React JS构建一个用户界面?本文将快速地给你一个React JS的概览.代码,请君移步react-starter 概念 React只有很少的API,这使得它很容易去学习与理解.当然,使用它 ...
- 1Z0-053 争议题目解析154
1Z0-053 争议题目解析154 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 154.A database is running in ARCHIVELOG mode and ...
- 1Z0-053 争议题目解析304
1Z0-053 争议题目解析304 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 304.What privileges must be granted to allow an a ...
- L2/L3/L4 Switch简介
第二层交换机,是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的.因为站表的建立与维护是由交换机自动完成,而路由器又是属于第三层设备,其寻址过程是根据IP地址寻址和通过路由表 ...
- gnuplot: 一种更为简洁的曲线,柱状图绘图软件
gnuplot: 一种更为简洁的曲线,柱状图绘图软件 gnuplot: 一种更为简洁的曲线,柱状图绘图软件 Zhong Xiewei Wed Jun 25 gnuplot简单介绍 关于gnuplot的 ...
- OpenCV,计算两幅图像的单应矩阵
平面射影变换是关于其次3维矢量的一种线性变换,可以使用一个非奇异的$3 \times 3$矩阵H表示,$X' = HX$,射影变换也叫做单应(Homography).计算出两幅图像之间的单应矩阵H,那 ...
- C#开发微信门户及应用(45)--微信扫码登录
在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...
- Devexpress WPF Theme Editor 01
在Devexpress中,已经有内置了很多主题样式.一般我们开发就已经够用了.但是随着客户的需求提高..我们要自己手动写一些样式这些的, 那么Devexpress 已经提供一个专门这样的工具. 下载地 ...
- 【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用
四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换j ...