问题1:求以下程序段的输出

int test(int x, int y)
{x = x + y;return x * y;
}int main(int argc, const char * argv[])
{@autoreleasepool {int x = 3, y = 10, z = test(x, y);NSLog(@"%d%d", x++, ++z);}return 0;
}

答案:3131


问题2:求以下程序段的输出

int func(int x)
{int countx = 0;while (x) {countx++;x = x&(x-1);}return countx;
}int main(int argc, const char * argv[])
{@autoreleasepool {NSLog(@"%d", func(2013));}return 0;
}

答案:9


问题3:简述两个for循环的优缺点

for (i = 0; i < N; i++) {if (condition) {doSomeThing();} else {doOtherThing();}
}if (condition) {for (i = 0; i < N; i++) {doSomeThing();}
} else {for (i = 0; i < N; i++) {doOtherThing();}
}

答案:无


问题4:请指出下面代码的问题

UIView *tmpView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.view addSubview:tmpView];

答案:无


问题5:你所了解的单例有哪些?请写了一个单例的示例代码。

答案:

@interface Manager : NSObject
+ (id)sharedManager;
@end

static Manager *instance = nil;@implementation Manager+ (id)sharedManager
{if (!instance) {instance = [[super allocWithZone:NULL] init];}return instance;
}// 复写allocWithZone和copyWithZone的目的是在外部多次调用alloc的时候,内部能够确保对象只创建了一次+ (id)allocWithZone:(NSZone *)zone
{return [[self sharedManager] retain];
}- (id)copyWithZone:(NSZone *)zone
{return self;
}// 复写retain、retainCount、release、autorelease避免单件对象被外部释放
- (id)retain
{return self;
}- (NSUInteger)retainCount
{return NSUIntegerMax;
}- (void)release
{}- (id)autorelease
{return self;
}


问题6:在你的日常开发过程中,是否遇到过崩溃问题?怎么解决?

答案:无


问题7:请写出使用委托(代理)的示例代码。

答案:

A委托B

A.h

@protocol ADelegate;
@interface A : NSObject@property (nonatomic, assign) id<ADelegate> delegate;- (void)go;@end@protocol ADelegate <NSObject>- (void)doSomeThing;@end

A.m

@implementation A- (void)go
{if ([_delegate respondsToSelector:@selector(doSomeThing)]) {[_delegate doSomeThing];}
}@end

B.h

#import "A.h"@interface B : NSObject<ADelegate>@end

B.m

@implementation B- (void)doSomeThing
{NSLog(@"do something...");
}@end

man.m

#import "A.h"
#import "B.h"int main(int argc, const char * argv[])
{@autoreleasepool {A *a = [[A alloc] init];B *b = [[B alloc] init];a.delegate = b;[a go];[a release];[b release];return 0;}
}

// 输出

do something...


问题8:写出控制器加载视图的常规调用方法流程。

答案:

loadView

viewDidLoad

viewWillAppear

viewWillLayoutSubviews

viewDidLayoutSubviews

viewDidAppear


问题9:Objective-C有多重继承么?不是的话,请以示例代码说明。

答案:无


问题10:请写出下面代码的打印结果(默认在32位机器下运行)。

char a[] = "hello world";
char *p = a;NSLog(@"%ld", sizeof(a));
NSLog(@"%ld", sizeof(p));

答案:

12

4

如果在64位机器上运行

12

8


问题11: 请完成下面的函数

@interface NSCustomArray : NSArray
@property (nonatomic, retain) NSArray *targets;
- (void)updateTargetsByArray:(NSArray *)newArray; // 将newArray赋值给targets
@end

@implementation NSCustomArray- (void)updateTargetsByArray:(NSArray *)newArray
{NSArray *tmpArray = [[NSArray alloc] initWithArray:newArray];// 将tmpArray赋值给targets
}
@end

答案:无


问题12:检查如下代码是否有问题,如果有问题,正确的写法是?

- (void)setTarget:(NSObject *)target
{self.target = target;
}

答案:无


问题13:指出下面代码的问题

- (void)willEndStepOne:(NSObject *)userInfo
{[NSThread detachNewThreadSelector:@selector(doSomeThing:) toTarget:self withObject:userInfo];
}- (void)doSomeThing:(NSObject *)userInfo
{int max_loop_times = 999999;for (int i=0; i<max_loop_times; i++) {int randNum = rand();NSString *tmpString = [NSString stringWithFormat:@"%d", randNum];NSLog(@"%@", tmpString);}
}

答案:无

转载于:https://www.cnblogs.com/and_he/archive/2013/02/20/2919235.html

面试题分享【不断更新】相关推荐

  1. 腾讯python面试题_面试题 | 腾讯数据分析面试题分享

    原标题:面试题 | 腾讯数据分析面试题分享 annatx | 作者 高级农民工 | 来源 今天给各位分享两道数据分析试题, 这是腾讯数据分析面试官在面试时考察候选人喜欢出的题,属于硬性技能考察题目,特 ...

  2. 冲击双十一,我是怎么拿下蚂蚁金服的offer的,Java面试题分享

    本文转载自:冲击双十一,我是怎么拿下蚂蚁金服的offer的,Java面试题分享 一.JVM面试题 1. 说说你对JVM内存模型的了解,每个区的作用是什么? 栈区: 栈分为java虚拟机栈和本地方法栈 ...

  3. 太棒了!2018-2020前端经典面试题整理合集,还附带大厂面试题分享!

    2018到2020年,3年经典面试题整理合集,话不多说,直接上题. 1,盒模型 1.1,ie 盒模型算上 border.padding 及自身(不算 margin),标准的只算上自身窗体的大小 css ...

  4. 常见Linux运维面试题分享

    学习Linux进入工作岗位的过程必定是要经过面试.与其他技术岗位相同.Linux运维也要经理人力面试和技术面试.对于初级运维工程师面试题目相对也很简单,但是同样有很多朋友在简单的问题上犯错.下面为大家 ...

  5. Unity面试】 2022年Unity面试题分享

    [重点面试题]代表面试的时候问到的题目 光背答案是没有用的,一定要动手操作一下,才能知道答案为什么是这个. 本文章力求从简单的形式到深入理解原理,再到扩展,丰富知识的层次感,知其所以然. 在文末为大家 ...

  6. Python培训之就业面试题分享

    近几年,学习Python编程的人越来越多,大家对于Python编程技术非常感兴趣,想要转型到这个行业,下面小编为大家整理一份Python找工作的面试题分享,希望能够帮助正在找Python工作的小伙们. ...

  7. python开发工程师面试题-2019超实用Python开发工程师面试题分享

    原标题:2019超实用Python开发工程师面试题分享 Python诞生很早,但真正火爆时间并不长.目前Python语言的应用领域非常广泛,主要有系统编程.图形处理.数学处理.文本处理.数据库编程.网 ...

  8. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18)

    1.android开发新浪面试题[开发者必看哦] 下载地址 http://www.eoeandroid.com/thread-177885-1-1.html 2.华为关于android笔试题案例解析 ...

  9. java只会用不知道原理6_程序员面试宝典之14道初级Java面试题分享

    程序员面试宝典之14道初级Java面试题分享 程序员面试宝典之14道初级Java面试题分享! 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应 ...

  10. Python面试题分享,不要错过哟!

    近几年,学习Python编程的人越来越多,大家对于Python编程技术非常感兴趣,想要转型到这个行业,下面小千为大家整理一份Python找工作的面试题分享,希望能够帮助正在找Python工作的小伙们. ...

最新文章

  1. java实现ad域登陆验证
  2. 读取数据库信息构建视图字段的备注信息,方便程序代码生成
  3. SE43自定义sap菜单
  4. Python中使用PIL快速实现二值图
  5. 【SICP练习】66 练习2.37
  6. Node Express4.x 片段视图 partials
  7. 进阶学习js中的执行上下文
  8. Python框架篇之Django(基本流程、命令行、配置文件)
  9. 【实习之T100开发(1),韩顺平Java视频教程百度云盘
  10. siamfc-pytorch代码讲解(二):trainsiamfc
  11. windows照片查看器没了_装机必备|Windows 上用得最爽的18款高效软件
  12. Linux中rz和sz命令用法详解
  13. Paper | Multitask learning
  14. 计算机的通讯方式有哪些特点,1.串行通信有几种方式?它们的特点分别是什么...
  15. IP地址冲突的原因及其解决方法
  16. 哪吒2之大闹东海电影项目亮点怎么样?
  17. Linux开发板网络直连电脑的设置方法
  18. java 蓝牙打印_Android蓝牙打印机,带你真正了解各种打印格式
  19. 阿里暑期实习生面试经验-数据分析岗位
  20. 用RJS写的检测用户名和email是否存在

热门文章

  1. POJ-3067 Japan(树状数组、线段树)
  2. desktop docker 无法卸载_docker,生信人的福音!
  3. 拷贝构造函数编程实验
  4. ValueError: invalid literal for int() with base 10 与数据类型有关的转换报错
  5. linux磁盘分区fdisk命令详解
  6. nodejs如何实现ajax,nodejs使用静态服务器处理ajax
  7. Leetcode题库 744.寻找比目标字母大的最小字母(C实现)
  8. 十大排序算法之插入排序
  9. 华为海思MPP媒体处理软件开发学习(基础)
  10. Linux上快速搭建Jenkins服务器 实现持续集成开发