[转载]iOS面试题总
(2014-06-13 20:23:33)
标签:
转载 |
同步的话指的是多线程同时操作一个数据 这个时候需要对数据添加保护 这个保护就是线程的同步。
用GCD中的串行队列来解释多线程的同步,也就是队列中的任务为串行,它们各自对相邻的任务有依赖性,如果任务1不完成,那么任务2就不会开始,这就是同步
6.假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,既上述字符串处理之后的输出结果为:aabcd
答:
NSMutableString *str = [[NSMutableString alloc]initWithFormat:@"aabcad"];
NSMutableArray *marry = [[NSMutableArray alloc]init];
for (int i = 0; i < str.length - 1; i++) {
unsigned char a = [str characterAtIndex:i];
for (int j = i + 1; j < str.length; j++) {
unsigned char b = [str characterAtIndex:j];
if (a == b) {
if (j == i + 1) {
}else{
[marry addObject:[NSString stringWithFormat:@"%d",j]];
}
}
}
}
for (int i = marry.count - 1; i > 0; i--) {
NSInteger num = [[marry objectAtIndex:i]intValue];
[str deleteCharactersInRange:NSMakeRange(num, 1)];
}
7.获取一台设备唯一标示的方法有哪些?
答:1.UDID
2.UUID
3.MAC ADDRESS
4.OPEN UDID
5.广告标识符
6.Vindor标示符
ios7之后用的时keychain(钥匙串)
8.ios类是否可以多继承?如果没有,那可以用其他方法实现吗?简述实现过程。
答:没有 用catogory、extension来实现 实现过程我会在ios复习中提到
9.堆和栈的区别?
答:堆需要用户手动释放内存,而栈则是编译器自动释放内存
10.ios本地数据存储都有哪几种方式?
答:1. NSKeyedArchiver(加密形式)
2. NSUserDefaults
3. Write写入方式
4. SQLite3
11.写出方法获取ios内存使用情况。
答:
12.深拷贝和浅拷贝的理解?
答:对一个实例进行深拷贝时当前类需要实现NSCopying协议。
浅拷贝是复制出来一个跟原对象是同一地址的对象,而深拷贝则是复制出来一个跟源对象不同地址的对象,改变原对象,对新对象没有影响。
13.怎样实现一个singleton的类。
答:单例 在复习中也有提到
14.什么是安全释放?
答:把对象指针置为nil,再对其释放。
15.RunLoop是什么?
答:
16.什么是序列化和反序列化,可以用来做什么?如何在OC中实现复杂对象的存储?
答:把对象转换为字节序列的过程称为对象的序列化
把字节序列恢复为对象的过程称为对象的反序列化
将对象写到文件或者数据库里,并且可以读取出来
遵循NSCoding协议,来实现复杂对象的存储
实现该协议后就可以对其进行打包或者解包,然后转化为NSData
17.写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?
答:#define MIN((A),(B)) ((A(A:B))
延展问题:写宏的时候要注意些什么问题呢?
函数宏后面的参数都要用括号单独括起来,函数名大写
#define A 20
18.iphone os 有没有垃圾回收机制?简单阐述一下OC内存管理。
答:没有垃圾回收 内存管理同1题
19.简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期?
答:前者进行的方法有
- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
后者进行的方法有
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationWillResignActive:(UIApplication *)application
20.ViewController 的 alloc,loadView,ViewDidLoad,ViewWillAppear,ViewDidUnload,dealloc,init分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?
答:alloc申请内存时调用
loadView加载视图时调用
ViewDidLoad视图已经加载后调用
ViewWillAppear视图将要出现时调用
ViewDidUnload视图已经加载但没有加载出来调用
dealloc销毁该视图时调用
init视图初始化时候调用
21.描述应用程序的启动顺序。
答:
1. 程序入口main函数创建UIApplication实例和UIApplication代理实例。
2. 在UIApplication代理实例中重写启动方法,设置根ViewController。
3. 在第一ViewController中添加控件,实现应用程序界面。
22.为什么很多内置类如UITableViewControl的delegate属性都是assign而不是retain?请举例说明。
答:
避免循环引用
比如:对象A创建并引用到了对象B,对象B创建并引用到了对象C,对象C创建并引用到了对象B,这个时候B的引用计数是2,而C的引用计数是1,当A不用B的时候,就释放了B的所有权,这个时候C还引用对象B,所有B不会释放,引用计数为1;因为B也引用着对象C,B不释放,那么C就不会被释放,所有它们的引用计数都为1,并且永远不会被释放,所以形成了循环引用。
23.使用UITableView时候必须要实现的几种方法?
答:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
24.写一个便利构造器。
答:
- (id)studentWithName:(NSString *)name andAge:(NSInter)age{
MyView *view = [[MyView alloc]initWithName:name andAge:age];
return [view autorelease];
}
25.UIImage初始化一张图片有几种方法?简述各自的优缺点。
答:
3种
imageNamed:系统会先检查系统缓存中是否有该名字的Image,如果有的话,则直接返回,如果没有,则先加载图像到缓存,然后再返回。
initWithContentsOfFile:系统不会检查系统缓存,而直接从文件系统中加载并返回。
imageWithCGImage:scale:orientation 当scale=1的时候图像为原始大小,orientation制定绘制图像的方向。
1.回答person的retainCount值,并解释为什么?
Person *per = [[Person alloc]init];
self.person = per;
答:1或者2,alloc+1,assign+0,retain+1
2.这段代码有什么问题吗?
@implementation Person
-(void)setAge:(int)newAge{self.age = newAge;}
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"15",@"12",@"5",@"8", nil];
for (int i = 0; i < array.count - 1; i++) {
int a = [array[i]intValue];
for (int j = i + 1; j < array.count; j++) {
int b = [array[j]intValue];
if (a < b) {
[array exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
for (int i = 0; i < array.count; i++) {
NSLog(@"%@",array[i]);
}
NSMutableArray *array = [[NSMutableArray alloc]init];//本地敏感字库
NSString *a = @"敏感字";//本地敏感字库里存的某个敏感字
NSString *b = @"我";
[array addObject:a];
[array addObject:b];
//下面是方法
NSMutableString *s = [[NSMutableString alloc]initWithString:@"我是敏感字"];//要判断的字符串
for (int i = 0; i < array.count; i++) {
NSString *minganzi = array[i];
NSMutableString *replaceString = [[NSMutableString alloc]init];
for (int j = 0; j < s.length - a.length + 1; j++) {
NSRange range;
range.length = minganzi.length;
range.location = j;
if ([[s substringWithRange:range] isEqualToString:minganzi]) {
for (int k = 0; k < range.length; k++) {
[replaceString appendString:@"*"];
}
[s replaceCharactersInRange:range withString:replaceString];
}
}
}
NSLog(@"%@",s);
int sl(const char *s)
{
int length = 0;
while (*s!='') {
s++;
length++;
}
return length;
}
[转载]iOS面试题总的更多相关文章
- 最全的iOS面试题及答案-转载
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现 ...
- iOS面试题及答案2015.6.7
iOS面试题及答案 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承 ...
- iOS 面试题 总结
#include <iostream> using namespace std; int main () { char p[]={'a','b','c'}, q[]="abc&q ...
- iOS面试题大全-点亮你iOS技能树
所有的内容大部分来自于网络的搜集,所以我不是一个创造者,而是一个搬运工.我尽量把题目,尤其是参考答案的出处列明.若有任何疑问,建议,意见,请联系我. 第一部分面试题来源于iOS-Developer-I ...
- 原 iOS面试题收集
原 iOS面试题收集 发表于2年前(2013-07-22 13:47) 阅读(369) | 评论(0) 4人收藏此文章, 我要收藏 赞0 听云性能监测产品App.Server.CDN免费试用,绑定 ...
- ios 面试题 经典(比较全) 根据重点总结
史上最全的iOS面试题及答案 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encodin ...
- iOS之面试题:腾讯三次面试以及参考思路
使用了第三方库, 有看他们是怎么实现的吗? 例:SD.YY.AFN.MJ等! <1>.SD为例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- ios面试题1
iOS面试题 1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSS ...
- IOS面试题总结
iOS面试题: 一:网络理论知识的理解 1:Internet物理地址和IP地址转换采用什么协议 ARP(Address Resolution Protocol)地址解析协议 2:Internet采用哪 ...
随机推荐
- Unity3d之截图
1.Application.CaptureScreenshot("Screenshot.png", 0); 2. exture2D CaptureScreenshot2(Rect ...
- CSS选择器笔记
一.元素选择符 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...
- 为IE单独写CSS的三种方法
本文由 Kayo Lee 发表,本文链接:http://kayosite.com/the-methods-make-css-only-for-ie.html 因为万恶的 IE 存在各种的不标准,因此, ...
- Linux中shell命令的用法和技巧
使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并 ...
- 【原创】如何找到Oracle中哪条记录被锁
通常有这种情况,某个表或者准确的说是表的某条记录被锁(TX锁),在业务层面排查之余,一般都会想知道是哪条记录被锁,每次被锁的是否是同一条记录?还是每次都不同?通过记录可以找到这条记录可以在哪个模块.哪 ...
- 【学习笔记】【C语言】变量的内存分析
计算机中的内存是以字节为单位的存储空间.内存的每一个字节都有一个唯一的编号,这个编号就称为地址.就好像酒店是以房间为单位的,每个房间都有一个唯一的房号,我们根据房号就能找到对应的房间. 1. 变量的存 ...
- SharpMap V1.1 For Web教程系列之——前言
上次使用SharpMap还是在0.9版本阶段,那个时候主要是为了将SharpMap移植到Windows Mobile环境中,具体可参见原先的文章.互联网真的是风云变幻啊,才短短几年,Windows M ...
- c#实现数据集合转换为csv文本
需求 1.将一个数据集合导出到一个csv文件中,集合类型可以视为 List<T>,T为任意类型,T包含多个属性,可指定部分属性进行导出 2.软件中有多种不同类型的数据类型需要进行导出 需求 ...
- VS2008简体中文正式版序列号
VS2008简体中文正式版序列号 1.Visual Studio 2008 Professional Edition:XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT 2.Visual St ...
- input中的id和name
name在以下用途是不可替代的: 1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.因为有许多name会同时对应多个控件,比如checkbox和radio,而id必须是全文 ...