[转载]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采用哪 ...
随机推荐
- html+css--水平居中总结(不定宽块状元素方法)(一)
来源:http://www.imooc.com/code/6363 在实际工作中我们会遇到需要为“不定宽度的块状元素”设置居中,比如网页上的分页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度 ...
- Jquery插件(CKEditor)
描述 在html页面实现像word一样的编辑功能(可视化HTML编辑器) 解决方法 ckeditor插件官方网站 http://ckeditor.com/ 使用 1:去官方下载ckeditor插件,添 ...
- JS 数组乱序
因为不想在后台操作,就使用js进行 涉及到了一个打乱数组顺序的方法 百度到的一篇 Author : Jun.lu http://www.cnblogs.com/idche/archive/2010/0 ...
- CSS标签知识
一.内联标签和块标签的区别 内联,内嵌,行内属性标签: 1.默认同行可以继续跟同类型标签: 2.内容撑开宽度 3.不支持宽高 4.不支持上下的margin和padding 5.代码换行被解析 块属性标 ...
- 基于AE连通性分析
曾经做管线连通性分析,总觉得ARCGIS应该有现成的方案可以实现,但最终没有找到,后来只好自己写了套代码,但在搜索过程中找到了这样一估代码,当时留了下来,那我现在也把它留下来. Dim pLayer ...
- 配置JDK和TOMCAT
配置JDK 1.先从官网下载最新的JDK安装包,然后安装.安装过程中会询问是否再装JRE,因为JDK中已经包含JRE,所以不必重复安装. 2.注意安装的路径名最好不要有中文或者空格出现. 3.在系统环 ...
- PAT1003——我要通过!
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...
- DWZ (JUI) 教程 根据ID刷新 dialog
reloadDialog:function(dialogId){ var dialog = $("body").data(dialogId); if(dialog){ $.pdia ...
- @Register指令
@Register指令用来创建标记前缀和自定义控件之间的关联,这为开发人员提供了一种在ASP.NET应用程序文件(包括网页.用户控件和母板页)中引用自定义控件的简单方法. <%@Register ...
- jQuery中append、insertBefore、after与insertAfter方法注意事项
这里列的是针对初学jQuery者来说容易搞不懂的部分,我在这里把这些方法列了个清单,希望大家能看的懂.如下: 方法 源包装集/字串 目标包装集体 特性描述 A.append(B) B A 若目标包装集 ...
转载▼