欢聚时代2017应届生笔试题目(iOS工程师类)C卷
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-shared -fno-objc-arc -fobjc-arc -dynamic
34. 下面关于Objective-C内存管理的描述错误的是 ( ) 当使用ARC来管理内存时,代码中不可以出现autorelease autoreleasepool 在 drain 的时候会释放在其中分配的对象 当使用ARC来管理内存时,在线程中大量分配对象而不用autoreleasepool则可能会造成内存泄露 在使用ARC的项目中不能使用NSZone
同步关系 互斥关系 互斥和同步关系 无关系
正确答案:A
16. 用户程序发出磁盘IO请求后,系统的正确处理流程是 用户程序->系统调用->中断处理->设备驱动 用户程序->系统调用->设备驱动->中断处理 用户程序->设备驱动->系统调用->中断处理 用户程序->设备驱动->中断处理->系统调用
正确答案:B
正确答案:A
35. 下面代码的作用是让doSomeThing函数每隔1秒被调用1次。请问哪里有问题 () NSTimer *myTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(doSomeThing:) userInfo:nil repeats:YES];
doSomethingB() });
dispatch_sync 正常工作阻塞主线程执行doSomethingA,dispatch_async 正常工作异步执行 doSomethingB dispatch_sync 正常工作阻塞主线程执行doSomethingA,dispatch_async 发生重入执行导致crash
9. 二进制数110010转换成十六进制数是 0x42 0x32 0xCA 0xC2
正确答案:B
10. 以下程序的输出结果是( ) #include <stdio.h> int main() { unsigned char a = 235; unsigned char b = ~a; unsigned char c = b >> 1; printf(“%d”, c); };
28. 在 UIKit 中 ,frame 与 bounds 的 区 别 是
(
)
frame 是 bounds 的 别 名
frame 是 bounds 的 继 承 类
frame 的参考系是父视图坐标,bounds 的参考系是自身的坐标 frame 的参考系是自身坐标,bounds 的参考系是父视图的坐标
欢聚时代2017应届生笔试题目(iOS工程师类)C卷
一. 单项选择题 1. 以下数据结构属于非线性数据结构的是
队列 二叉树 栈 数组
正确答案:B
2. 关于链表,下面说法错误的是 不必事先估计存储空间 可随机访问任一元素 插入删除不需要移动元素 所需空间与线性表长度成正比
正确答案:B
3. 以下四种排序算法中,平均情况下时间复杂度最高的是 堆排序 快速排序 选择排序 归并排序
正确答案:B
27. 使用imageNamed方法创建UIImage对象时,与普通的init方法有什么区别? ( ) 没有区别,只是为了方便 imageNamed 方 法 只 是 创 建 了 一 个 指 针 , 没 有 分 配 其 他 内 存 imageNamed 方 法 将 图 片 加 载 到 内 存 中 后 不 再 释 放 imageNamed方法将使用完图片后立即释放
29. 下面那个方法可以比较两个NSString *str1, *str2 的异同 ( ) if(str1 = str2) xxx ; if([str1 isEqualToString:str2]) xxx ; if(str1 && str2) xxx ; if([str1 length] == [str2 length]) xxx;
正确答案:A
39. NSMutableString* c = [[NSMutableString alloc] init]; [c appendString:@"hello"]; NSMutableString* d = [[NSMutableString alloc] initWithString:@"hello"]; NSLog(@"%d %d %d %d", a == b, [a isEqualToString:b], c == d, [c isEqualToString:d]);
声明变量p,其中*表示p是一个指针变量 变量p经初始化,获得变量a的地址 变量p只可以指向一个整形指针变量 变量p的值为100
正确答案:A
40. 以下代码运行后的输出结果是 ( ) #import "Foo.h" @interface Foo() @end @implementation Foo - (BOOL)isEqual:(Foo*)object
dispatch_sync 发生重入导致crash,dispatch_async 正常工作异步执行doSomethingB dispatch_sync 发生重入导致crash,dispatch_async 发生重入执行导致crash
33. 需要在手动管理内存分配和释放的Xcode项目中引入和编译用ARC风格编写的文件,需要在文件的 Compiler Flags上添加参数:( )
正确答案:A
37. 一个类的delegate(代理)的作用不正确的是 ( ) delegate中的函数在其他类中实现 主要用于不同类型的对象之间一对一传递消息 没有指派则不会触发 可以一个对象的delegate指派给多个其他类型的对象
38. 下面关于GCD的描述哪个是错误的 ( ) 1101 1001 0101 1111
正确答案:B
22. 二叉树是非线性wk.baidu.com据结构,所以( )。
它不能用顺序存储结构存储 它不能用链式存储结构存储 顺序存储结构和链式存储结构都能存储 顺序存储结构和链式存储结构都不能使用
23. 算法的时间复杂度是指( )。 执行算法程序所需要的时间 算法程序的长度 算法执行过程中所需要的基本运算次数 算法程序中的指令条数
6 2 4 10
11. 在64位系统中,有以下的定义:输出结果是? struct Student { int a; char b; char c; long d; }; int main() { printf("%lu", sizeof(struct Student)); }
20 16 12 24
正确答案:B
正确答案:B
32. 以下代码1和代码2 分别运行在main thread中运行会发生什么 ( )
代码1 dispatch_sync(dispatch_get_main_queue(), ^{
doSomethingA() });
代码2 dispatch_async(dispatch_get_main_queue(), ^{
正确答案:B
30. 下面的代码会有什么问题? ( )
typedef void(^Block)(void); @interface Foo() @property(nonatomic,strong) Block completion; @end @implementation Foo - (void)cookWithCompletion:(Block)completion { _completion = ^(void) { [self done]; }; [self cook]; if (_completion) { _completion(); } }
正确答案:B
14. 下列关于线程的叙述中,正确的是 每个线程有自己独立的地址空间 线程包含CPU现场,是系统独立调度和分派的基本单位 每个进程只能有一个线程 线程之间的通信必须使用系统调用
正确答案:B
15. 进程A和进程B 通过共享缓冲区协作完成数据处理,进程 A 负 责产生数据并放入缓冲区,进程 B 从缓冲 区读数据并输出。进程 A 和进程B 之间的制约关系是
- (void)cook { } - (void)done { } @end
出现死循环 编译不通过 运行时出现crash 有内存泄漏
31. 下面的代码问题在哪? ( )
@implementation xxx … … - (void)setVar:(int)i
{ self.var = i; }
应该将var synthesize 调用会出现死循环 正常 返回值错误
4. 在一个具有n个顶点的无向图中,要连通全部顶点至少需要多少条边? n n+1 n-1 n/2
5. 将长度为n的有序单链表LA与长度为m的有序单链表LB合并为一条有序的单链表LC,算法的时间复杂度为 O(1)
O(n) O(m) O(m+n)
6. 设有序表中的元素为(13,18,21,35,47,86,99),则在其中利用二分法查找值为21的元素需要经过多 少次比较。
12. 以下哪种情况下会出现死锁 两个线程因竞争资源而相互等待对方释放已占有的资源 有多个线程同时执行同一个任务 主线程执行同步的网络请求,长时间没有返回 资源数大大小于线程数或线程同时申请的资源数大大超过资源总数
正确答案:A
13. 如果某一进程获得除CPU以外的所有所需运行资源,经调度,分配CPU给它,该进程将进入什么状态? 就绪状态 运行状态 阻塞状态 活动状态
24. 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 ( ) cedba acbed decab deabc
正确答案:A
25. 栈和队列的共同点是( )。 都是先进先出 都是先进后出 只允许在端点处插入和删除元素 没有共同点
26. 下面关于线程管理错误的是 ( ) GCD所用的开销要比NSThread大 可以在子线程中修改UI元素 NSOperationQueue是比NSthread更高层的封装 GCD可以根据不同优先级分配线程
17. 若进程P一旦被唤醒就能投入运行,则系统可能是 非抢占式调度方式,进程P的优先级最高 抢占式调度方式,P的优先级高于当前运行的进程
就绪队列为空队列 抢占式调度方式,就绪队列上的所有进程的优先级皆比P低
正确答案:B
18. 以下哪种不属于进程间通信的方式 全局变量 消息队列 共享内存 Socket
{ return object.fooId == self.fooId;
}
@end
.... - (void)main
正确答案:A
19. 面向对象程序设计的设计思想不包括 封装 接口 多态 继承
正确答案:B
20. Objective-C定义一个类所要用到的指令是 @interface @class @protocol @implementation
正确答案:A
21. 假设把整数关键字K Hash到有N个槽的散列表,以下哪些散列函数比较合适( )。 H(k) = k/N H(k) = k mod N H(k) = 1 H(k) = (k + Random(N)) mod N,其中Random(N)返回0到N-1的整数
[myTimer fire] 没有将timer 加入runloop doSomeThing 缺少 参数 忘记传递数据给userInfo myTimer对象未通过[[myTimer alloc] init]方法初始化
正确答案:A
36. 下面关于#import和#include的描述正确的是 ( ) #import 是 #include 的替代指令,防止重复引用 #import 和 #include 不可以混合使用 #import 只用于引用 Objective-C的文件, #include 只用于引用C和C++的文件 #import 和 #include 的使用效果完全相同
1 2 3 4
7. 设某棵二叉树的前序遍历序列为ABDGFCE,中序遍历序列为:GDFBAEC,则其后序遍历序列为 BDGFCEA GFDBECA GFDBCEA BDGFECA
正确答案:B
8. 设栈的输入序列是M,N,P,Q,则以下哪个选项不可能是其出栈序列? M,N,Q,P N,M,P,Q M,Q,P,N Q,P,M,N
34. 下面关于Objective-C内存管理的描述错误的是 ( ) 当使用ARC来管理内存时,代码中不可以出现autorelease autoreleasepool 在 drain 的时候会释放在其中分配的对象 当使用ARC来管理内存时,在线程中大量分配对象而不用autoreleasepool则可能会造成内存泄露 在使用ARC的项目中不能使用NSZone
同步关系 互斥关系 互斥和同步关系 无关系
正确答案:A
16. 用户程序发出磁盘IO请求后,系统的正确处理流程是 用户程序->系统调用->中断处理->设备驱动 用户程序->系统调用->设备驱动->中断处理 用户程序->设备驱动->系统调用->中断处理 用户程序->设备驱动->中断处理->系统调用
正确答案:B
正确答案:A
35. 下面代码的作用是让doSomeThing函数每隔1秒被调用1次。请问哪里有问题 () NSTimer *myTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(doSomeThing:) userInfo:nil repeats:YES];
doSomethingB() });
dispatch_sync 正常工作阻塞主线程执行doSomethingA,dispatch_async 正常工作异步执行 doSomethingB dispatch_sync 正常工作阻塞主线程执行doSomethingA,dispatch_async 发生重入执行导致crash
9. 二进制数110010转换成十六进制数是 0x42 0x32 0xCA 0xC2
正确答案:B
10. 以下程序的输出结果是( ) #include <stdio.h> int main() { unsigned char a = 235; unsigned char b = ~a; unsigned char c = b >> 1; printf(“%d”, c); };
28. 在 UIKit 中 ,frame 与 bounds 的 区 别 是
(
)
frame 是 bounds 的 别 名
frame 是 bounds 的 继 承 类
frame 的参考系是父视图坐标,bounds 的参考系是自身的坐标 frame 的参考系是自身坐标,bounds 的参考系是父视图的坐标
欢聚时代2017应届生笔试题目(iOS工程师类)C卷
一. 单项选择题 1. 以下数据结构属于非线性数据结构的是
队列 二叉树 栈 数组
正确答案:B
2. 关于链表,下面说法错误的是 不必事先估计存储空间 可随机访问任一元素 插入删除不需要移动元素 所需空间与线性表长度成正比
正确答案:B
3. 以下四种排序算法中,平均情况下时间复杂度最高的是 堆排序 快速排序 选择排序 归并排序
正确答案:B
27. 使用imageNamed方法创建UIImage对象时,与普通的init方法有什么区别? ( ) 没有区别,只是为了方便 imageNamed 方 法 只 是 创 建 了 一 个 指 针 , 没 有 分 配 其 他 内 存 imageNamed 方 法 将 图 片 加 载 到 内 存 中 后 不 再 释 放 imageNamed方法将使用完图片后立即释放
29. 下面那个方法可以比较两个NSString *str1, *str2 的异同 ( ) if(str1 = str2) xxx ; if([str1 isEqualToString:str2]) xxx ; if(str1 && str2) xxx ; if([str1 length] == [str2 length]) xxx;
正确答案:A
39. NSMutableString* c = [[NSMutableString alloc] init]; [c appendString:@"hello"]; NSMutableString* d = [[NSMutableString alloc] initWithString:@"hello"]; NSLog(@"%d %d %d %d", a == b, [a isEqualToString:b], c == d, [c isEqualToString:d]);
声明变量p,其中*表示p是一个指针变量 变量p经初始化,获得变量a的地址 变量p只可以指向一个整形指针变量 变量p的值为100
正确答案:A
40. 以下代码运行后的输出结果是 ( ) #import "Foo.h" @interface Foo() @end @implementation Foo - (BOOL)isEqual:(Foo*)object
dispatch_sync 发生重入导致crash,dispatch_async 正常工作异步执行doSomethingB dispatch_sync 发生重入导致crash,dispatch_async 发生重入执行导致crash
33. 需要在手动管理内存分配和释放的Xcode项目中引入和编译用ARC风格编写的文件,需要在文件的 Compiler Flags上添加参数:( )
正确答案:A
37. 一个类的delegate(代理)的作用不正确的是 ( ) delegate中的函数在其他类中实现 主要用于不同类型的对象之间一对一传递消息 没有指派则不会触发 可以一个对象的delegate指派给多个其他类型的对象
38. 下面关于GCD的描述哪个是错误的 ( ) 1101 1001 0101 1111
正确答案:B
22. 二叉树是非线性wk.baidu.com据结构,所以( )。
它不能用顺序存储结构存储 它不能用链式存储结构存储 顺序存储结构和链式存储结构都能存储 顺序存储结构和链式存储结构都不能使用
23. 算法的时间复杂度是指( )。 执行算法程序所需要的时间 算法程序的长度 算法执行过程中所需要的基本运算次数 算法程序中的指令条数
6 2 4 10
11. 在64位系统中,有以下的定义:输出结果是? struct Student { int a; char b; char c; long d; }; int main() { printf("%lu", sizeof(struct Student)); }
20 16 12 24
正确答案:B
正确答案:B
32. 以下代码1和代码2 分别运行在main thread中运行会发生什么 ( )
代码1 dispatch_sync(dispatch_get_main_queue(), ^{
doSomethingA() });
代码2 dispatch_async(dispatch_get_main_queue(), ^{
正确答案:B
30. 下面的代码会有什么问题? ( )
typedef void(^Block)(void); @interface Foo() @property(nonatomic,strong) Block completion; @end @implementation Foo - (void)cookWithCompletion:(Block)completion { _completion = ^(void) { [self done]; }; [self cook]; if (_completion) { _completion(); } }
正确答案:B
14. 下列关于线程的叙述中,正确的是 每个线程有自己独立的地址空间 线程包含CPU现场,是系统独立调度和分派的基本单位 每个进程只能有一个线程 线程之间的通信必须使用系统调用
正确答案:B
15. 进程A和进程B 通过共享缓冲区协作完成数据处理,进程 A 负 责产生数据并放入缓冲区,进程 B 从缓冲 区读数据并输出。进程 A 和进程B 之间的制约关系是
- (void)cook { } - (void)done { } @end
出现死循环 编译不通过 运行时出现crash 有内存泄漏
31. 下面的代码问题在哪? ( )
@implementation xxx … … - (void)setVar:(int)i
{ self.var = i; }
应该将var synthesize 调用会出现死循环 正常 返回值错误
4. 在一个具有n个顶点的无向图中,要连通全部顶点至少需要多少条边? n n+1 n-1 n/2
5. 将长度为n的有序单链表LA与长度为m的有序单链表LB合并为一条有序的单链表LC,算法的时间复杂度为 O(1)
O(n) O(m) O(m+n)
6. 设有序表中的元素为(13,18,21,35,47,86,99),则在其中利用二分法查找值为21的元素需要经过多 少次比较。
12. 以下哪种情况下会出现死锁 两个线程因竞争资源而相互等待对方释放已占有的资源 有多个线程同时执行同一个任务 主线程执行同步的网络请求,长时间没有返回 资源数大大小于线程数或线程同时申请的资源数大大超过资源总数
正确答案:A
13. 如果某一进程获得除CPU以外的所有所需运行资源,经调度,分配CPU给它,该进程将进入什么状态? 就绪状态 运行状态 阻塞状态 活动状态
24. 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 ( ) cedba acbed decab deabc
正确答案:A
25. 栈和队列的共同点是( )。 都是先进先出 都是先进后出 只允许在端点处插入和删除元素 没有共同点
26. 下面关于线程管理错误的是 ( ) GCD所用的开销要比NSThread大 可以在子线程中修改UI元素 NSOperationQueue是比NSthread更高层的封装 GCD可以根据不同优先级分配线程
17. 若进程P一旦被唤醒就能投入运行,则系统可能是 非抢占式调度方式,进程P的优先级最高 抢占式调度方式,P的优先级高于当前运行的进程
就绪队列为空队列 抢占式调度方式,就绪队列上的所有进程的优先级皆比P低
正确答案:B
18. 以下哪种不属于进程间通信的方式 全局变量 消息队列 共享内存 Socket
{ return object.fooId == self.fooId;
}
@end
.... - (void)main
正确答案:A
19. 面向对象程序设计的设计思想不包括 封装 接口 多态 继承
正确答案:B
20. Objective-C定义一个类所要用到的指令是 @interface @class @protocol @implementation
正确答案:A
21. 假设把整数关键字K Hash到有N个槽的散列表,以下哪些散列函数比较合适( )。 H(k) = k/N H(k) = k mod N H(k) = 1 H(k) = (k + Random(N)) mod N,其中Random(N)返回0到N-1的整数
[myTimer fire] 没有将timer 加入runloop doSomeThing 缺少 参数 忘记传递数据给userInfo myTimer对象未通过[[myTimer alloc] init]方法初始化
正确答案:A
36. 下面关于#import和#include的描述正确的是 ( ) #import 是 #include 的替代指令,防止重复引用 #import 和 #include 不可以混合使用 #import 只用于引用 Objective-C的文件, #include 只用于引用C和C++的文件 #import 和 #include 的使用效果完全相同
1 2 3 4
7. 设某棵二叉树的前序遍历序列为ABDGFCE,中序遍历序列为:GDFBAEC,则其后序遍历序列为 BDGFCEA GFDBECA GFDBCEA BDGFECA
正确答案:B
8. 设栈的输入序列是M,N,P,Q,则以下哪个选项不可能是其出栈序列? M,N,Q,P N,M,P,Q M,Q,P,N Q,P,M,N