1.及时聊天app不会采用的网络传输方式是 D
A UDP B TCP C Http D FTP

2.下列技术不属于多线程的是 A
A Block B NSThread C NSOperation D GCD

3.线程和进程的区别不正确的是 B
A 进程和线程都是由操作系统所体会的程序运行的基本单元
B 线程之间有单独的地址空间
C 进程和线程的主要差别在于它们是不同的操作系统资源管理方式
D 线程有自己的堆栈和局部变量

4. 堆和栈的区别正确的是 D
A 对于栈来讲,我们需要手工控制,容易产生memory leak。
B 对于堆来说,释放工作由编译器自动管理,无需我们手工控制
C 在Windows下,栈是向高地址扩展的数据结构,是连续的内存区域,栈顶的地址和栈的最大容量是系统预先规定好的。
D 对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。

5. 下列回调机制的理解不正确的是    B
A 目标动作对:当两个对象之间有⽐比较紧密的关系时,如视图控制器与其下的某个视图。       
B 代理:也叫委托,当某个对象收到多个事件,并要求同一个对象来处理所有事件时。委托机制必须依赖于某个协议定义的⽅方法来发送消息。       
C 通告机制:当需要多个对象或两个⽆无关对象处理同一个事件时。       
D Block:适⽤于回调只发⽣生一次的简单任务。

6. 对于runloop的理解不正确的是 C
A 每一个线程都有其对应的RunLoop
B 默认非主线程的RunLoop是没有运行的
C 在一个单独的线程中没有必要去启用RunLoop
D 可以将NSTimer添加到runloop中

7. UITableView中cell的复用是由几个数组实现的 B
A 1 B 2 C 3 D 3或4

8. 在线播放视频一般访问服务器中的 类型文件 A
A M3U8 B flv C MP4 D data

9. 点击Button响应链中最终得到响应的是 B
A Window B Application C AppDelegate D UIViewController

10。 内存管理理解不正确的是 B
A 程序A里有一段内存被成功申请完成之后,内存计数器就从0变为1 (这个过程是alloc);
B 程序B里要使用已存在内存,那么内存计数器从1变为2 (这个过程是retain或者copy);
C 紧接着程序A不需要这个内存了,那么程序A就把这个内存计数器减1 (这个过程是release);
D 当系统发现这个内存计数器变为小于等于0,那么就调用垃圾回收程序把这段内存回收(这个过程是dealloc);

11 断点续传需要在请求头中添加的控制续传最重要的关键字是 A
A range B length C type D size

12 post传输的最大文件限制为 C
A 1G B 2G C 4G D 8G

13 MVC优点不正确的是 D
A 低耦合性
B 高重用性和可适用性
C 较低的生命周期成本
D 代码高效率

1-10 C语言 & 计算机基础

1、请看下面一段代码

static int a = 1;
int main(){
int b = 2;
char *c = NULL;
c = (char *)malloc(100 * sizeof(char));
return 0;
}
请问访问a,b,c 3种类型变量的效率从高到低依次是
A. cba
B. abc
C. acb
D. bca

(B)

2、下面四种内部排序算法中哪一种在最差情况下时间复杂度最高?
A. 快速排序
B. 冒泡排序
C. 堆排序
D. 归并排序

(B)

3、Shell中,将command1的输出作为command2的输入应该使用的命令是
A. command1 && command2
B. command1 > command2
C. command1 & command2
D. command1 | command2

(D)

4、下面的数据结构中不属于线性结构的是
A. 栈
B. 链表
C. 二叉树
D. 线性表

(C)

5、在一个二叉树上,第5层最多可以有的节点数是 A. 2
B. 8
C. 16
D. 32

(C)

6、在长度为n的线性表上进行顺序查找,在最糟糕的情况下需要的比较次数是
A. n
B. 2n-1
C. 2n
D. n^2

(A)

7、下面那项不是动态语言的特性
A. 在运行时替换一个类
B. 在运行时动态加载lib文件
C. 在运行时修改对象中的方法
D. 在运行时增加对象的方法

(B)

8、已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是
A. cedba
B. acbed
C. decab
D. deabc

(A)

9、以下多线程对int型变量x的操作,哪个不需要进行同步:
A. x=y
B. x++
C. ++x
D. x=1

(D)

10、多线程中栈与堆是公有的还是私有的
A. 栈公有, 堆私有
B. 栈公有,堆公有
C. 栈私有, 堆公有
D. 栈私有,堆私有
(C)

11-20 Objective-C & Xcode

11、在Xcode中,需要编译混合Objective-C和C++的源码文件,需要将文件格式的后缀改为
A. .c
B. .cpp
C. .mm
D. .m

(C)

12、Objective-C声明一个类所要用到的编译指令是
A. @interface SomeClass
B. @protocol SomeClass
C. @implementation SomeClass
D. @autorelease SomeClass

(A)

13、使用Xcode创建工程时,支持同时创建的版本管理库是
A. Subversion
B. Mercurial
C. Git
D. Concurrent Versions System

(C)

14、下面那个方法不属于NSObject的内省(Introspection)方法
A. init
B. isKindOfClass
C. responseToSelector
D. isMemberOfClass

(A)

15、使用protocol时,声明一组可选择实现与否的函数,需要在声明的前一行加上:
A. @required
B. @optional
C. @interface
D. @protocol

(B)

16、需要在手动管理内存分配和释放的Xcode项目中引入和编译用ARC风格编写的文件,需要在文件的Compiler Flags上添加参数:
A. -shared
B. -fno-objc-arc
C. -fobjc-arc
D. -dynamic

(C)

17、下面关于Objective-C内存管理的描述错误的是
A. 当使用ARC来管理内存时,代码中不可以出现autorelease
B. autoreleasepool 在 drain 的时候会释放在其中分配的对象
C. 当使用ARC来管理内存时,在线程中大量分配对象而不用autoreleasepool则可能会造成内存泄露
D. 在使用ARC的项目中不能使用NSZone

(A)

18、下面关于#import和#include的描述正确的是
A. #import 是 #include 的替代指令,防止重复引用
B. #import 和 #include 不可以混合使用
C. #import 只用于引用 Objective-C的文件, #include 只用于引用C和C++的文件
D. #import 和 #include 的使用效果完全相同

(A)

19、下面的代码问题在哪?

@implementation xxx


- (void) setVar:(int)i {
self.var = i;
}
A. 应该将var synthesize
B. 调用会出现死循环
C. 正常
D. 返回值错误

(B)

20、下面那个方法可以比较两个NSString *str1, *str2 的异同
A. if(str1 = str2) xxx ;
B. if([str1 isEqualToString:str2]) xxx ;
C. if(str1 && str2) xxx ;
D. if([str1 length] == [str2 length]) xxx;

(B)

21-30 iOS

21、下面哪个不属于对象数据序列化方法 A. JSON
B. Property List
C. XML
D. HTTP

(D)

22、在UIKit中,frame与bounds的区别是
A. frame 是 bounds 的别名
B. frame 是 bounds 的继承类
C. frame 的参考系是父视图坐标,bounds 的参考系是自身的坐标
D. frame 的参考系是自身坐标,bounds 的参考系是父视图的坐标

(C)

23、Objective-C有私有方法吗?有私有变量吗?
A. 有私有方法和私有变量
B. 没有私有方法也没有私有变量
C. 没有私有方法,有私有变量
D. 有私有方法,没有私有变量

(C)

24、下面关于线程管理错误的是
A. GCD所用的开销要比NSThread大
B. 可以在子线程中修改UI元素
C. NSOperationQueue是比NSthread更高层的封装
D. GCD可以根据不同优先级分配线程

(B)

25、下面代码的作用是让doSomeThing函数每隔1秒被调用1次。请问哪里有问题

NSTimer *myTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(doSomeThing:) userInfo:nil repeats:YES];

[myTimer fire]
A. 没有将timer加入runloop
B. doSomeThing缺少参数
C. 忘记传递数据给userInfo
D. myTimer对象未通过[[myTimer alloc] init]方法初始化

(A)

26、UIViewController在显示过程中,各个方法的调用顺序是
A. init -> viewDidLoad -> viewDidAppear -> viewDidUnload
B. init -> viewDidAppear -> viewDidLoad -> viewDidUnload
C. init -> viewDidLoad -> viewDidUnload -> viewDidAppear
D. init -> viewDidAppear -> viewDidUnload -> viewDidLoad

(A)

27、使用imageNamed方法创建UIImage对象时,与普通的init方法有什么区别?
A. 没有区别,只是为了方便
B. imageNamed方法只是创建了一个指针,没有分配其他内存
C. imageNamed方法将图片加载到内存中后不再释放
D. imageNamed方法将使用完图片后立即释放

(C)

28、一个类的delegate(代理)的作用不正确的是
A. delegate中的函数在其他类中实现
B. 主要用于不同类型的对象之间一对一传递消息
C. 没有指派则不会触发
D. 可以一个对象的delegate指派给多个其他类型的对象

(D)

29、在没有navigationController的情况下,要从一个ViewController切换到另一个ViewController应该
A. [self.navigationController pushViewController:nextViewController animated:YES];
B. [self.view addSubview:nextViewController.view];
C. [self pushViewController:nextViewController animated:YES];
D. [self presentModalViewController:nextViewController animated:YES];

(D)

30、什么是key window?
A. App中唯一的那个UIWindow对象
B. 可以指定一个key的UIWindow
C. 可接收到键盘输入等事件的UIWindow
D. 不可以隐藏的那个UIWindow对象

——————————————————————————————————————————————————————————————————————————
-————————————————————————————————————————————————————————————————————————
31 求以下程序段的输出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;} 答案是 A
A 331 B 330 C 431 D 430

32 求以下程序段的输出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;}答案: D
A 1 B 5 C 8 D 9
33 下面说法不正确的是 C
A readwrite 是可读可写特性;需要生成getter方法和setter方法时

B readonly 是只读特性 只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变

C assign 是赋值特性,和weak一样,可用weak代替;

D retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;

34 对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象? A
A 编译时是NSString的类型;运行时是NSData类型的对象
B 编译时是NSObject的类型;运行时是NSData类型的对象
C 编译时是NSData的类型;运行时是NSString类型的对象
D 编译时是NSObject的类型;运行时是NSString类型的对象

35 Object C中的线程下面描述不正确的是 B
A 使用NSThread创建、使用GCD的dispatch
B 直接使用NSOperation,然后将其加入NSOperationQueue;
C 在主线程执行代码,方法是performSelectorOnMainThread,
D 如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:

36 下列不属于iOS存储方式的是 A
A NSFileManager B 归档 C SQLite D CoreData
37 IP Phone的原理是什么? C
A IPV4 B DHCP C IPV6 D DNS
38 类别的作用不正确的是 D
A 将类的实现分散到多个不同文件或多个不同框架中。
B 创建对私有方法的前向引用。
C 向对象添加非正式协议。 继承可以增加,修改或者删除方法。
D 不能添加属性

39 对NSOperationQueue理解不正确的是 D
A 存放NSOperation的集合类
B 可以设置最大并发数
C 放进去的线程会自动执行
D 用户需要管理放进去的线程执行顺序

李洪强经典面试题41-iOS选择题的更多相关文章

  1. 李洪强经典面试题152-Runtime

    李洪强经典面试题152-Runtime   Runtime Runtime是什么 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码, ...

  2. 李洪强经典面试题145-Runloop

    李洪强经典面试题145-Runloop   Runloop 什么是 Runloop? 从字面上讲就是运行循环. 它内部就是do-while循环,在这个循环内部不断地处理各种任务. 一个线程对应一个Ru ...

  3. 李洪强经典面试题52-Block

    李洪强经典面试题52-Block   Block Block底层原理实现 首先我们来看四个函数 void test1() { int a = 10; void (^block)() = ^{ NSLo ...

  4. 李洪强经典面试题49-Objective-C

    李洪强经典面试题49-Objective-C 面试笔试都是必考语法知识的.请认真复习和深入研究OC. Objective-C 方法和选择器有何不同?(Difference between method ...

  5. 李洪强经典面试题136-KVO-KVC

    李洪强经典面试题136-KVO-KVC   KVC-KVO KVC的底层实现? 当一个对象调用setValue方法时,方法内部会做以下操作: ①检查是否存在相应key的set方法,如果存在,就调用se ...

  6. 李洪强经典面试题53-Swift

    李洪强经典面试题53-Swift Swift 网上有很多Swift的语法题,但是Swift现在语法还未稳定,所以在这里暂时不贴出语法题,可以自行搜索. Swift和Objective-C的联系 Swi ...

  7. 李洪强经典面试题51-KVO-KVC

    李洪强经典面试题51-KVO-KVC   KVC-KVO KVC的底层实现? 当一个对象调用setValue方法时,方法内部会做以下操作: ①检查是否存在相应key的set方法,如果存在,就调用set ...

  8. 李洪强经典面试题31- FMDB

    n什么是FMDB pFMDB是iOS平台的SQLite数据库框架 pFMDB以OC的方式封装了SQLite的C语言API p nFMDB的优点 p使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 ...

  9. 李洪强经典面试题40-可能碰到的iOS笔试面试题-C语言

    可能碰到的iOS笔试面试题(4)--C语言 可能碰到的iOS笔试面试题(4)--C语言 C语言,开发的基础功底,iOS很多高级应用都要和C语言打交道,所以,C语言在iOS开发中的重要性,你懂的.里面的 ...

  10. 李洪强经典面试题48-C语言

    可能碰到的iOS笔试面试题(4)--C语言   C语言,开发的基础功底,iOS很多高级应用都要和C语言打交道,所以,C语言在iOS开发中的重要性,你懂的.里面的一些问题可能并不是C语言问题,但是属于计 ...

随机推荐

  1. 扩展gridview轻松实现冻结行和列

    在实际的项目中,由于项目的需要,数据量比较大,同时显示栏位也比较多,要做gridview里显示完整,并做到用户体验比较好,这就需要冻结表头和关键列.由于用到的地方比较多,我们可以护展一个gridvie ...

  2. 网络采集软件核心技术剖析系列(5)---将任意博主的全部博文下载到内存中并通过Webbrower显示(将之前的内容综合到一起)

    一 本系列随笔概览及产生的背景 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软件 ...

  3. TSynDBSQLDataSet

    TSynDBSQLDataSet 非内存表 TSynDBSQLDataSet = class(TSynBinaryDataSet) TSynBinaryDataSet = class(TSynVirt ...

  4. Android Studio使用过程中Java类突然报红,但项目可运行解决方案

    1.点击File->Invalidate Caches / Restart... 2.重启Gradle,清除缓存 3.Clean Project

  5. webpack导入es6的简单应用

    1.先全局安装babel的需要文件 npm install -g babel-cli npm install --save-dev babel-preset-es2015 babel-core bab ...

  6. 打补丁以及WebLogic Server的版本

    12.1.2开始采用了Oracle传统的opatch打补丁的方式,但在此之前,包括 10.3.x版本以及12.1.1版本还是通过bea的smart update方式来进行. smart update基 ...

  7. FL2440 Linux-3.0内核触摸屏的支持

    ---------------------------------------------------------------------------------------------------- ...

  8. Centos下输入法全角半角转换

    写个文档 ,发现输入法的设置框没有了,打出来的字全是全角,找了半天终于发现在设置的快捷键. 废话少说,Centos的全角半角转换快捷键是shift+space. 中英文标点的转换快捷键 ctrl+.

  9. [Flutter] Creating, Importing & Using Dynamic Widgets from Other Files in a Flutter Application

    In this lesson we’ll learn how to import widgets we’ve created in other files & use them in our ...

  10. JSONObject和JSONArray(json-lib-2.4)的基本用法

    json-lib-2.4是一个用于JSON和java对象间转换的第三方包,其jar和依赖包下载地址在:https://files.cnblogs.com/files/xiandedanteng/jso ...