iOS基础知识面试题合集(有目录)

iOS基础知识面试题合集(有目录)
iOS基础知识面试题合集(有目录)

iOS基础知识面试题合集

1.#IMPORT和#INCLUDE的区别@CLASS? 3

2. READWRITE,READONLY,ASSIGN,RETAIN,COPY,NONATOMIC 属性的作用 3

3.在一个对象的方法里面:https://www.360docs.net/doc/461104982.html,=“OBJECT”;和 NAME =”OBJECT”有什么不同吗? 3

4.请简述https://www.360docs.net/doc/461104982.html,= NIL的机制,以及与[NAMERELEASE]的区别? 3

5.请简要说明VIEW D ID L OAD和VIEW D ID U NLOAD何时调用 3

6.实例化一个UIT ABLE V IEW对象,要求写出关键语句? 3

7.使用SQL语句查询出省名以湖开头,邮编为436001所在的市区?(5分)(表名及字段名自定义) 4

8.打印结果 4

9.用预处理指令#DEFINE声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 5

10.写一”标准”宏MIN,这个宏输入两个参数并返回较小的一个 5

11.数组和指针的区别 5

12.STATIC的作用 5

13.简述内存分区情况 6

14.#INCLUDE和#INCLUDE”FILENAME”有什么区别 6

15.CONST CHAR *P; CHARCONST*P; CHAR*CONST P; CONST CHAR* CONST P;四个修饰指针有什么区别 6

16.MVC的理解? 6

17.在O BJ-C中有没有私有方法?私有变量?一般采用什么方法实现? 6

18.OC中加号方法与减号的区别?7

19.FREE与RELEASE的区别7

20.在终端环境下,分别说明4,2,1,0对应的权限是什么7

21.ARC机制7

22.自动释放池是什么,如何工作7

23.V IEW C ONTROLLER 的 LOAD V IEW, VIEW D ID L OAD,VIEW D ID U NLOAD 分别是在什么时候调用的?在自定义V IEW C ONTROLLER 的时候这几个函数里面应该做什么工作?8

24. 浅复制和深复制的区别?//浅拷贝和深拷贝8

25. FRAME和BOUNDS有什么不同?8

26. OBJ-C的优缺点8

27. 用变量A给出下面的定义8

28. 写出几个死循环?9

29. 队列和栈有什么区别:9

30.HTTP协议中,POST和GET的区别是什么?9

(核心服务层THE C ORE S ERVICES LAYER)、31. I OS的系统架构分为(核心操作系统层THE C ORE OS LAYER)、

(媒体层THE M EDIA LAYER)和(C OCOA界面服务层THE C OCOA T OUCH LAYER)四个层次。10 32. 控件主要响应3种事件:(基于触摸的事件)、(基于值的事件)和(基于编辑的事件)。

10

33. XIB文件的构成分为哪3个图标?都具有什么功能。(10分)10

34. 简述视图控件器的生命周期(10分)。10

35. 动画有基本类型有哪几种;表视图有哪几种基本样式(10分)?10

36. 实现简单的表格显示需要设置UIT ABLE V IEW的什么属性、实现什么协议(10分)?10

37. C OCOA T OUCH提供了哪几种C ORE A NIMATION过渡类型(10分)?10

38. UIV IEW与CL AYER有什么区别(10分)?10

39.链表翻转。11

40. 链表逆序(C语言)(10分)。11

41.Q UATRZ 2D的绘图功能的三个核心概念是什么并简述其作用(10分)。11

42. I P HONE OS主要提供了几种播放音频的方法(10分)?11

43. 使用AVA UDIO P LAYER类调用哪个框架、使用步骤(10分)?11

44. 有哪几种手势通知方法、写清楚方法名(10分)?12

45. 实例化一个UIT ABLE V IEW对象,要求写出关键语句(10分)。12

46. CFS OCKET使用有哪几个步骤(10分)。12

47. C ORE F OUNDATION中提供了哪几种操作S OCKET的方法(10分)?12

48. 解析XML文件有哪几种方式(10分)?12

49. 自定义一个委托(15分)。12

50. 类别的作用?继承和类别在实现中有何区别?13

51.通知和协议的不同之处?13

52.关于多态性13

53.对于单例的理解13

54. 是否在一个视图控制器中嵌入两个TABLEVIEW控制器?13

55.一个TABLE V IEW是否可以关联两个不同的数据源?你会怎么处理?13

56. O BJECT-C的类可以多重继承么?可以实现多个接口么?重写一个类的方式用继承好还是分

类好?为什么?14

57. ID声明的对象有什么特性?14

58. 自动释放池跟GC (垃圾回收)有什么区别?I P HONE上有GC么?[POOLRELEASE]和[POOLDRAIN]有什么区别?14

59. 线程与进程的区别和联系? 14

60. IOS平台怎么做数据的持久化?COREDATA和SQLITE有无必然联系?COREDATA是一个关系型数据库吗?

14

61. OBJ-C有多重继承么? 如果没有什么替代方法? 14

62. OBJ-C有私有方法么? 私有变量呢?15

63. 假定输入的字符串中只包含字母和* 号。编写函数FUN,功能是,除了中间和尾部的*号外,15

64. 截取字符串”20 |https://www.360docs.net/doc/461104982.html,“中‘|’字符前面及后面的数据,分别输出它们(10分)。15

65. 获取项目根路径,并在其下创建一个名称为USER D ATA的目录。(10分)。15

66. TABLE V IEW的重用机制(10 分)?16

67. 这段代码有什么问题吗16

68. 用变量A给出下面的定义16

69. 给定一个字符串,输出本字符串中只出现一次并且最靠前的那个字符的位置?17

70. OBJECTIVE-C中的数字对象都有哪些,简述它们与基本数据类型的区别是什么?18

71. 用NSL OG函数输出一个浮点类型,结果四舍五入,并保留一位小数18

73. 获取项目根路径,并在其下创建一个名称为USER D ATA的目录。19

74. DO-WHILE与 WHILE-DO的区别?19

75. 用C 语言,求2到100内的所有素数和。19

76.单件实例是什么(10分)。20

77.自动释放池是什么,如何工作。20

1.#import和#include的区别@class?

@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import

而#import比起#include的好处就是不会引起交叉编译

2. readwrite,readonly,assign,retain,copy,nonatomic 属性的作用

@property是一个属性访问声明,扩号内支持以下几个属性:

1,getter=getName,setter=setName,设置setter与getter的方法名

2,readwrite,readonly,设置可供访问级别

2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题

3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料)

4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再Copy出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。

5,nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例级(我是这么理解的…)。

3.在一个对象的方法里面:https://www.360docs.net/doc/461104982.html,= “object”;和name =”object”有什么不同吗?

答:

https://www.360docs.net/doc/461104982.html, =”object”:会调用对象的setName()方法;

name = “object”:会直接把object赋值给当前对象的name属性。

4.请简述https://www.360docs.net/doc/461104982.html,= nil的机制,以及与[namerelease]的区别?

https://www.360docs.net/doc/461104982.html, =nil; //使用nil参数调用setName:方法

[name release]生成的访问器将自动释放以前的name对象

5.请简要说明viewDidLoad和viewDidUnload何时调用

答:

viewDidLoad在view从nib文件初始化时调用,

loadView在controller的view为nil时调用。

此方法在编程实现view时调用,view控制器默认会注册memory warning notification,

当view controller的任何view没有用的时候,

viewDidUnload会被调用,在这里实现将retain的view release,如果是retain的IBOutlet view 属性则不要在这里release,IBOutlet 会负责release 。

6.实例化一个UITableView对象,要求写出关键语句?

答:UITableView *my = [[UITableView alloc]initWithFrame:<(CGRect)frame> style:<(UITableViewStyle)style>];

my.delegate = self;

my.dataSource = self;

首先需要分配空间设置表格类型

然后需要设置两个必须的委托对象。

7.使用sql语句查询出省名以湖开头,邮编为436001所在的市区?(5分)(表名及字段名自定义)

select*fromcitys where postcode=436001 and province=’湖%’;

8.打印结果

main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1);

printf(“%d,%d”,*(a+1),*(ptr-1));

}

答:2,5

*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5

&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)

int *ptr=(int *)(&a+1);

则ptr实际是&(a[5]),也就是a+5

原因如下:

&a是数组指针,其类型为int (*)[5];

而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。

a是长度为5的int数组指针,所以要加5*sizeof(int)

所以ptr实际是a[5]

但是prt与(&a+1)类型是不一样的(这点很重要)

所以prt-1只会减去sizeof(int*)

a,&a的地址是一样的,但意思不一样

a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,

a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].

void Func ( char str[100] )

{

sizeof(str ) = ?

}

void*p = malloc( 100 ); sizeof( p ) = ?

这题很常见了,Func ( char str[100] )函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。Windows NT 32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof( str ) 、sizeof( p ) 都为4。

9.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

答:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

我在这想看到几件事情:

#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)

懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。

如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。

10.写一”标准”宏MIN ,这个宏输入两个参数并返回较小的一个

答:#define MIN(A,B) ((A)<= (B) ? (A) : (B))

这个测试是为下面的目的而设的:

标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方

法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else 更优化的代码,了解这个用法是很重要的。懂得在宏中小心地把参数用括号括起来我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b);

结果是:

((*p++) <= (b) ? (*p++) :(*p++))

这个表达式会产生副作用,指针p会作三次++自增操作。

11.数组和指针的区别

(1)数组可以申请在栈区和数据区;指针可以指向任意类型的内存块

(2)sizeof作用于数组时,得到的是数组所占的内存大小;作用于指针时,得到的都是4个字节的大小

(3)数组名表示数组首地址,值不可以改变,如不可以将++作用于数组名上;普通指针的值可以改变,如可将++作用于指针上

(4)用字符串初始化字符数组是将字符串的内容拷贝到字符数组中;用字符串初始化字符指针是将字符串的首地址赋给指针,也就是指针指向了该数组

12.static的作用

(1)函数体内static 变量的作用范围为该函数体,不同于auto 变量,该变量的内存只被分配一次,

因此其值在下次调用时仍维持上次的值;

(2)在模块内的static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

(3)在模块内的static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明

它的模块内;

(4)在类中的static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

(5)在类中的static 成员函数属于整个类所拥有,这个函数不接收this 指针,因而只能访问类的static 成员变量。

13.简述内存分区情况

(1)代码区:存放函数二进制代码

(2)数据区:系统运行时申请内存并初始化,系统退出时由系统释放。存放全局变量、静态变量、常量

(3)堆区:通过malloc等函数或new等操作符动态申请得到,需程序员手动申请和释放

(4)栈区:函数模块内申请,函数结束时由系统自动释放。存放局部变量、函数参数

14.#include和#include”filename”有什么区别

答:#include直接在库文件目录中搜索所包含的文件;#include”filename”在当前目录下搜索所包含的文件,如果没有的话再到库文件目录搜索。

15.const char *p; charconst*p; char*const p; const char* const p;四个修饰指针有什么区别

答:(1)定义了一个指向不可变的字符串的字符指针

(2)和(1)一样

(3)定义了一个指向字符串的指针,该指针值不可改变,即不可改变指向

(4)定义了一个指向不可变的字符串的字符指针,且该指针也不可改变指向

16.MVC的理解?

答:MVC模式考虑三种对象:模型对象、视图对象和控制器对象。模型对象负责应用程序的数据和定义操作数据的逻辑;视图对象知道如何显示应用程序的模型数据;控制器对象是M与V之间的协调者。

17.在Obj-c中有没有私有方法?私有变量?一般采用什么方法实现?

objective-c –类里面的方法只有两种, 静态方法和实例方法. 这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西. 如果没有了私有方法的话, 对于一些小范围的代码重用就不那么顺手了. 在类里面声名一个私有方法

@interfaceController : NSObject { NSString *something; }

+(void)thisIsAStaticMethod;

-(void)thisIsAnInstanceMethod;

@end

@interfaceController (private)

-(void)thisIsAPrivateMethod;

@end

@private可以用来修饰私有变量

在Objective‐C中,所有实例变量默认都是私有的,所有实例方法默认都是公有的

18.OC中加号方法与减号的区别?

加号方法是类方法,属于静态方法

减号方法是实例方法必须由类的实例来调用

19.free与release的区别

20.在终端环境下,分别说明4,2,1,0对应的权限是什么

21.ARC机制

ARC就是automatic reference counting ,简单说就是就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。

使用ARC的好处

使用ARC有什么好处呢?

看到上面的例子,大家就知道了,以后写Objective-C的代码变得简单多了,因为我们不需要担心烦人的内存管理,担心内存泄露了

代码的总量变少了,看上去清爽了不少,也节省了劳动力

代码高速化,由于使用编译器管理引用计数,减少了低效代码的可能性

不好的地方

记住一堆新的ARC规则—关键字及特性等需要一定的学习周期

一些旧的代码,第三方代码使用的时候比较麻烦;修改代码需要工数,要么修改编译开关22.自动释放池是什么,如何工作

当您向一个对象发送一个autorelease 消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。

1. ojc-c 是通过一种”referring counting”(引用计数)的方式来管理内存的, 对象在开始分配内存(alloc)的时候引用计数为一,以后每当碰到有copy,retain的时候引用计数都会加一, 每当碰到release和autorelease的时候引用计数就会减一,如果此对象的计数变为了0, 就会被系统销毁.

2. NSAutoreleasePool 就是用来做引用计数的管理工作的,这个东西一般不用你管的.

3. autorelease和release没什么区别,只是引用计数减一的时机不同而已,autorelease会在对象的使用真正结束的时候才做引用计数减一.

23.ViewController 的loadView, viewDidLoad,viewDidUnload 分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?

viewDidLoad在view 从nib文件初始化时调用,loadView在controller的view为nil时调用。此方法在编程实现view时调用,view 控制器默认会注册memory warning notification,当view controller的任何view 没有用的时候,viewDidUnload会被调用,在这里实现将retain 的view release,如果是retain的IBOutlet view 属性则不要在这里release,IBOutlet会负责release 。

24. 浅复制和深复制的区别?//浅拷贝和深拷贝

答案:

浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身。//通过对象的指针来访问这个对象

深层复制(mutableCopy):复制引用对象本身意思就是有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。//当修改A时,A copy不变。

25. frame和bounds有什么不同?

答案:frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)//frame:框架、结构

bounds指的是:该view在本身坐标系统中的位置和大小。(参照点是本身坐标系统)//bounds:界限

26. obj-c的优缺点

答案:

objc优点:

1) Cateogies

2) Posing

3) 动态识别

4) 指标计算

5)弹性讯息传递

6) 不是一个过度复杂的C 衍生语言

7) Objective-C 与C++ 可混合编程

缺点:

1) 不支援命名空间

2) 不支持运算符重载

3)不支持多重继承

4)使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。

27. 用变量a给出下面的定义

a) 一个整型数(An integer)

b)一个指向整型数的指针(A pointer to aninteger)

c)一个指向指针的的指针,它指向的指针是指向一个整型数(Apointer to a pointer to an intege)r

d)一个有10个整型数的数组(An array of 10 integers)

e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)

f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)

g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(Apointer to a function that takes an integer as an argument andreturns an integer)

h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions t

hat takean integer argument and return an integer )

答案是:

a) int a; // Aninteger

b) int *a; // A pointer to aninteger

c) int **a; // A pointer to apointer to an integer

d) int a[10]; // An array of10 integers

e) int *a[10]; // An array of10 pointers to integers

f) int (*a)[10]; // A pointerto an array of 10 integers

g) int (*a)(int); // A pointerto a function a that takes an integer argument and returns aninteger

h) int (*a[10])(int); // Anarray of 10 pointers to functions that take an integer argument andreturn an integer

28. 写出几个死循环?

29. 队列和栈有什么区别:

答:队列和栈是两种不同的数据容器。从”数据结构”的角度看,它们都是线性结构,即数据元素之间的关系相同。

队列是一种先进先出的数据结构,它在两端进行操作,一端进行入队列操作,一端进行出列队操作。

栈是一种先进后出的数据结构,它只能在栈顶进行操作,入栈和出栈都在栈顶操作。

30. HTTP协议中,POST和GET的区别是什么?

答案:1.GET 方法

GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见;

GET 方法提交的数据大小有限

GET 方法不可以设置书签

2.POST 方法

POST 方法提交数据安全,数据置于消息主体内,客户端不可见

POST 方法提交的数据大小没有限制

POST 方法可以设置书签

31. iOS的系统架构分为(核心操作系统层 theCore OS layer )、(核心服务层theCore Services layer )、(媒体层 theMedia layer )和( Cocoa 界面服务层 the Cocoa Touch layer )四个层次。

32. 控件主要响应3种事件:(基于触摸的事件)、(基于值的事件)和(基于编辑的事件)。

33. xib文件的构成分为哪3个图标?都具有什么功能。(10分)

答: File’s Owner 是所有 nib 文件中的每个图标,它表示从磁盘加载 nib 文件的对象;

First Responder 就是用户当前正在与之交互的对象;

View 显示用户界面;完成用户交互;是 UIView 类或其子类。

34. 简述视图控件器的生命周期(10分)。

答: loadView 尽管不直接调用该方法,如多手动创建自己的视图,那么应该覆盖这个方法并将它们赋值给试图控制器的 view 属性。

viewDidLoad 只有在视图控制器将其视图载入到内存之后才调用该方法,这是执行任何其他初始化操作的入口。viewDidUnload 当试图控制器从内存释放自己的方法的时候调用,用于清楚那些可能已经在试图控制器中创建的对象。viewVillAppear 当试图将要添加到窗口中并且还不可见的时候或者上层视图移出图层后本视图变成顶级视图时调用该方法,用于执行诸如改变视图方向等的操作。实现该方法时确保调用 [super viewWillAppear:].

viewDidAppear 当视图添加到窗口中以后或者上层视图移出图层后本视图变成顶级视图时调用,用于放置那些需要在视图显示后执行的代码。确保调用 [super viewDidAppear: ] 。

35. 动画有基本类型有哪几种;表视图有哪几种基本样式(10分)?

答:动画有两种基本类型:隐式动画和显式动画。

36. 实现简单的表格显示需要设置UITableView的什么属性、实现什么协议(10分)?

答:实现简单的表格显示需要设置 UITableView 的 dataSource 和 delegate 属性,实现UITableViewDataSource 和 UITableViewDelegate 协议。

37. Cocoa Touch提供了哪几种Core Animation过渡类型(10分)?

答: Cocoa Touch 提供了 4 种 Core Animation 过渡类型,分别为:交叉淡化、推挤、显示和覆盖。

38. UIView与CLayer有什么区别(10分)?

答: 1. UIView 是 iOS 系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由 CoreAnimation 来实现的。它真正的绘图部分,是由一个 CALayer 类来管理。 UIView 本身更像是一个 CALayer 的管理器,访问它的跟绘图和跟坐标有关的属性。

2. UIView 有个重要属性 layer ,可以返回它的主 CALayer 实例。

3. UIView 的 CALayer 类似 UIView 的子 View 树形结构,也可以向它的 layer 上添加子layer ,来完成某些特殊的表示。即 CALayer 层是可以嵌套的。

4. UIView 的 layer 树形在系统内部,被维护着三份 copy 。分别是逻辑树,这里是代码可以操纵的;动画树,是一个中间层,系统就在这一层上更改属性,进行各种渲染操作;显示树,其内容就是当前正被显示在屏幕上得内容。

5. 动画的运作:对 UIView 的 subLayer (非主 Layer )属性进行更改,系统将自动进行动画生成,动画持续时间的缺省值似乎是 0.5 秒。

6. 坐标系统: CALayer 的坐标系统比 UIView 多了一个 anchorPoint 属性,使用CGPoint 结构表示,值域是 0~1 ,是个比例值。这个点是各种图形变换的坐标原点,同时会更改 layer 的 position 的位置,它的缺省值是 {0.5,0.5} ,即在 layer 的中央。

7. 渲染:当更新层,改变不能立即显示在屏幕上。当所有的层都准备好时,可以调用setNeedsDisplay 方法来重绘显示。

8. 变换:要在一个层中添加一个 3D 或仿射变换,可以分别设置层的 transform 或affineTransform 属性。

9. 变形: Quartz Core 的渲染能力,使二维图像可以被自由操纵,就好像是三维的。图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜。 CATransform3D 的一套方法提供了一些魔术般的变换效果。

39.链表翻转。

40. 链表逆序(C语言)(10分)。

链表逆序就是把一个链表按照原来的链接顺序逆序实现(也就是将头变成尾,尾变成头)。

编程思路:其实最关键的是先通过原来的链接顺序找到下个节点,然后再把前个节点反序。

41. Quatrz 2D的绘图功能的三个核心概念是什么并简述其作用(10分)。

答:上下文:主要用于描述图形写入哪里;

路径:是在图层上绘制的内容;

状态:用于保存配置变换的值、填充和轮廓, alpha 值等。

42. iPhone OS主要提供了几种播放音频的方法(10分)?

答: SystemSound Services

A V AudioPlayer 类

Audio Queue Services

OpenAL

43. 使用A V AudioPlayer类调用哪个框架、使用步骤(10分)?

答: A VFoundation.framework

步骤:配置 A V AudioPlayer 对象;

实现 A V AudioPlayer 类的委托方法;

控制 A V AudioPlayer 类的对象;

监控音量水平;

回放进度和拖拽播放。

44. 有哪几种手势通知方法、写清楚方法名(10分)?

答:

-(void)touchesBegan:(NSSet*)touchedwithEvent:(UIEvent*)event;

-(void)touchesMoved:(NSSet*)touched withEvent:(UIEvent*)event;

-(void)touchesEnded:(NSSet*)touchedwithEvent:(UIEvent*)event;

-(void)touchesCanceled:(NSSet*)touchedwithEvent:(UIEvent*)event;

45. 实例化一个UITableView对象,要求写出关键语句(10分)。

答: UITableView *my = [[UITableView alloc]initWithFrame:<(CGRect)frame> style:<(UITableViewStyle)style>]; my.delegate = self;

my.dataSource = self;

首先需要分配空间设置表格类型

然后需要设置两个必须的委托对象。

46. CFSocket使用有哪几个步骤(10分)。

答:创建 Socket 的上下文;创建 Socket ;配置要访问的服务器信息;封装服务器信息;连接服务器;

47. Core Foundation中提供了哪几种操作Socket的方法(10分)?

答: CFNetwork 、 CFSocket 和 BSD Socket 。

48. 解析XML文件有哪几种方式(10分)?

答:以 DOM 方式解析 XML 文件;以 SAX 方式解析 XML 文件;

49. 自定义一个委托(15分)。

答: @protocol SimpleProtocol

-(void)doSomething:(NSString*)str;

@end

@interfaceSimpleClass:NSObject< SimpleProtocol >{

}

@end

@implementationSimpleClass

-(void)doSomething:(NSString *)str

{

NSLog(str);

}

@end

50. 类别的作用?继承和类别在实现中有何区别?

答案: category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。类别主要有 3 个作用: (1) 将类的实现分散到多个不同文件或多个不同框架中。 (2) 创建对私有方法的前向引用。 (3) 向对象添加非正式协议。继承可以增加,修改方法,并且可以增加属性。

51.通知和协议的不同之处?

答案:协议有控制链 (has-a) 的关系,通知没有。首先我一开始也不太明白,什么叫控制链(专业术语了 ~ )。但是简单分析下通知和代理的行为模式,我们大致可以有自己的理解简单来说,通知的话,它可以一对多,一条消息可以发送给多个消息接受者。代理按我们的理解,到不是直接说不能一对多,比如我们知道的明星经济代理人,很多时候一个经济人负责好几个明星的事务。只是对于不同明星间,代理的事物对象都是不一样的,一一对应,不可能说明天要处理 A 明星要一个发布会,代理人发出处理发布会的消息后,别称 B 的发布会了。但是通知就不一样,他只关心发出通知,而不关心多少接收到感兴趣要处理。因此控制链( has-a 从英语单词大致可以看出,单一拥有和可控制的对应关系。

52.关于多态性

答案:多态,子类指针可以赋值给父类。这个题目其实可以出到一切面向对象语言中,因此关于多态,继承和封装基本最好都有个自我意识的理解,也并非一定要把书上资料上写的能背出来。最重要的是转化成自我理解。

53.对于单例的理解

答案:基本能用熟悉的语言写出一个单例,以及可以运用到的场景或是你编程中碰到过运用的此种模式的框架类等。进一步点,考虑下如何在多线程访问单例时的安全性。

54. 是否在一个视图控制器中嵌入两个tableview控制器?

答案:一个视图控制只提供了一个 View 视图,理论上一个 tableViewController 也不能放吧,只能说可以嵌入一个 tableview 视图。当然,题目本身也有歧义,如果不是我们定性思维认为的 UIViewController ,而是宏观的表示视图控制者,那我们倒是可以把其看成一个视图控制者,它可以控制多个视图控制器,比如 TabbarController 那样的感觉。

55. 一个tableView是否可以关联两个不同的数据源?你会怎么处理?

答案:首先我们从代码来看,数据源如何关联上的,其实是在数据源关联的代理方法里实现的。因此我们并不关心如何去关联他,他怎么关联上,方法只是让我返回根据自己的需要去设置如相关的数据源。因此,我觉得可以设置多个数据源啊,但是有个问题是,你这是想干嘛呢?想让列表如何显示,不同的数据源分区块显示?

56. Object -c 的类可以多重继承么?可以实现多个接口么?重写一个类的方式用继承好还是分类好?为什么?

答案: Objective-c 只支持单继承,如果要实现多继承的话,可以通过类别和协议的方式来实现, cocoa 中所有的类都是 NSObject 的子类,多继承在这里是用 protocol 委托代理来实现的。

57. id 声明的对象有什么特性?

答案: id 是个很重要的类型,是个可以指向任何类型的指针或者可以理解为指向任何未知类型的指针。

58. 自动释放池跟GC (垃圾回收)有什么区别?iPhone上有GC么?[poolrelease]和[pooldrain]有什么区别?

iPhone 上没有 GC 。 iPhone 开发的时候没有垃圾回收机制。在垃圾回收环境中,release 是一个空操作。因此, NSAutoreleasePool 提供了 drain 方法,在引用计数环境中,该方法的作用等同于调用 release ,但在垃圾回收环境中,它会触发垃圾回收(如果自上次垃圾回收以来分配的内存大于当前的阈值)。因此,在通常情况下,您应该使用 drain 而不是 release 来销毁自动释放池。

59. 线程与进程的区别和联系?

答案 : 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

60. ios 平台怎么做数据的持久化?coredata 和sqlite有无必然联系?coredata是一个关系型数据库吗?

iOS 中可以有四种持久化数据的方式:属性列表、对象归档、 SQLite3 和 Core Data; core data 可以使你以图形界面的方式快速的定义 app 的数据模型,同时在你的代码中容易获取到它。 coredata 提供了基础结构去处理常用的功能,例如保存,恢复,撤销和重做,允许你在 app 中继续创建新的任务。在使用 core data 的时候,你不用安装额外的数据库系统,因为 core data 使用内置的 sqlite 数据库。 core data 将你 app 的模型层放入到一组定义在内存中的数据对象。 coredata 会追踪这些对象的改变,同时可以根据需要做相反的改变,例如用户执行撤销命令。当 core data 在对你 app 数据的改变进行保存的时候, core data 会把这些数据归档,并永久性保存。 mac os x 中sqlite 库,它是一个轻量级功能强大的关系数据引擎,也很容易嵌入到应用程序。可以在多个平台使用, sqlite 是一个轻量级的嵌入式 sql 数据库编程。与 core data 框架不同的是, sqlite 是使用程序式的, sql 的主要的 API 来直接操作数据表。 Core Data 不是一个关系型数据库,也不是关系型数据库管理系统 (RDBMS) 。虽然 Core Dta 支持SQLite 作为一种存储类型,但它不能使用任意的 SQLite 数据库。 Core Data 在使用的过程种自己创建这个数据库。 Core Data 支持对一、对多的关系。

61. obj-c 有多重继承么? 如果没有什么替代方法?

cocoa 中所有的类都是NSObject 的子类,多继承在这里是用protocol 委托代理来实现的。你不用去考虑繁琐的多继承,虚基类的概念。

62. obj-c 有私有方法么? 私有变量呢?

objective-c –类里面的方法只有两种, 静态方法和实例方法. 这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西. 如果没有了私有方法的话, 对于一些小范围的代码重用就不那么顺手了. 在类里面声名一个私有方法

@interface Controller : NSObject { NSString *something; }

+ (void)thisIsAStaticMethod;

- (void)thisIsAnInstanceMethod;

@end

@interface Controller (private) -

(void)thisIsAPrivateMethod;

@end

@private 可以用来修饰私有变量

在Objective‐C 中,所有实例变量默认都是私有的,所有实例方法默认都是公有的

63. 假定输入的字符串中只包含字母和* 号。编写函数fun,功能是,除了中间和尾部的*号外,

将字符串中其他* 号全部删除。编写时,不用c的其他函数。

例:*****A*BC*DEF*G**** 结果为:A*BC*DEF*G****

void fun (char *a)

{

int j=0;

char *p=a;

while (*p==’*’)p++;

while (*p){

a[j++]=*p;

p++;

}

a[j]=0;

}

64. 截取字符串”20 |https://www.360docs.net/doc/461104982.html,“中‘|’字符前面及后面的数据,分别输出它们(10分)。

NSString *str = “20|https://www.360docs.net/doc/461104982.html,”;

NSRange range = [strrangeOfString:@”|”];

int location = range.location;

NSString *str1 = [strsubstringToIndex:location];

NSString *str2 = [str substringFromIndex:location+1];

65. 获取项目根路径,并在其下创建一个名称为userData 的目录。(10分)。

// 获取根路径

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *documentsDirectory = [paths objectAtIndex:];

// 创建文件系统管理器

NSFileManager *fileManager = [[NSFileManageralloc] init];

// 判断userData 目录是否存在

if(![fileManagerfileExistsAtPath:[NSStringstringWithFormat:@”%@/userData”,documentsDirectory]]) {

// 不存在, 创建一个userData目录

[fileManagercreateDirectoryAtPath:[NSStringstringWithFormat:@”%@/userData”,documentsDirectory]withIntermediateDir ectories:falseattributes:nilerror:nil];

}

66. tableView 的重用机制(10 分)?

UITableView 通过重用单元格来达到节省内存的目的: 通过为每个单元格指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便重用.对于不同种类的单元格使用不同的ID,对于简单的表格,一个标识符就够了.

67. 这段代码有什么问题吗

@implementation Person

i. (void)setAge:(int)newAge

{

self.age = newAge;

}

死循环

68. 用变量a 给出下面的定义

a) 一个整型

b) 一个指向整型数的指针

c) 一个指向指针的的指针,它指向的指针是指向一个整型数

d) 一个有10 个整型数的数组

e) 一个有10 个指针的数组,该指针是指向一个整型数的

f) 一个指向有10 个整型数数组的指针

g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数

h) 一个有10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数

a) int a;

b) int *a;

c) int **a;

d) int a[10]

e) int *a[10];

f) int (*a)[10];

g) int (*a)(int);

i) int (*a[10])(int);

69. 给定一个字符串,输出本字符串中只出现一次并且最靠前的那个字符的位置?比如”abaccddeeef”则是b,输出2

int find(char *_str)

{

char *p = _str;

inti = 1;

while (*p)

{

char *temp = _str;

while (*temp)

{

if ((*p ==*temp)&&(p != temp))

{

break;

}

temp++;

if (*temp == 0) {

returni;

}

}

i++;

p++;

}

return-1;

}

#include

#include

#include

intfind_char(constchar* str)

{

staticintpos[256];

const unsigned char* p =(const unsigned char*)str;

inti = 0;

if( (!str) || (!(*str)) )return -1;

memset(pos,-1,sizeof(pos));

while(*p){

if(pos[*p] == -1){

pos[*p] = p-(const unsigned char*)str;

}else{

pos[*p] = -2;

}

p++;

}

for(i=0;i

if(pos[i]>=0)returnpos[i];

}

return -1;

}

int main()

{

constchar* p =”abaccddeeef”;

intpos = find_char(p);

printf(“%d, it is’%c’\n”,pos,pos!=-1?p[pos]:’‘);

p =”abcdefghijklmnopqrstuvwxyz “

“abcdefghijklmnopqrstuwxyz”;

pos = find_char(p);

printf(“%d, it is’%c’\n”,pos,pos!=-1?p[pos]:’‘);

return0;

}

70. objective-c 中的数字对象都有哪些,简述它们与基本数据类型的区别是什么?

在OC 中NSNumber是数字对象,可以进行拆装箱操作!

// 将int 转为NSNumber

NSNumber *num = [NSNumber numberWithInt:123];

// 得到一个int

inttestNum = [numintValue];

71. 用NSLog 函数输出一个浮点类型,结果四舍五入,并保留一位小数

NSLog(@”%0.1f”,4.4324);

72. objective-c 中的词典对象、可变词典对象是哪个,初始化一个含有两个键值对的可变词典对象,并动态的添加和删除一条记录,输出第一条记录.

词典NSDictionary ,可变词典NSMutableDictionary,

// 初始化一个可变词典,带有2 个键值对

NSMutableDictionary *dic =[NSMutableDictionarydictionaryWithObjectsAndKeys:@”value1″,@”key1″,@”value2″,@”key2″,nil];

// 添加

[dicsetObject:@”value3″forKey:@”key3″];

// 删除

[dicremoveObjectForKey:@”key3″];

// 获取(按key 获取)

[dicobjectForKey:@”key1″];

73. 获取项目根路径,并在其下创建一个名称为userData 的目录。

// 获取根路径

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*documentsDirectory = [paths objectAtIndex:];

// 创建文件系统管理器

NSFileManager *fileManager= [[NSFileManageralloc] init];

// 判断userData 目录是否存在

if(![fileManagerfileExistsAtPath:[NSStringstringWithFormat:@”%@/userData”,documentsDirectory]]) {

// 不存在, 创建一个userData目录

[fileManagercreateDirectoryAtPath:[NSStringstringWithFormat:@”%@/userData”,documentsDirectory]withIntermediateDir ectories:falseattributes:nilerror:nil];

}

74. do-while 与while-do 的区别?

do-while 先执行循环体,然后判断条件,如果条件判断为ture ,则继续执行循环体,如果判断为false,则不执行循环体while-do 是先判断条件是否正确,若正确则执行循环体,若不正确则不执行循环体。

所以do-while 至少循环一次,而while-do有可能一次也不循环。

75. 用C 语言,求2到100内的所有素数和。

#include

intisPrime(int n) // 求素数,这是最经典的算法代码。建议记住

{

inti;

for(i=2;i*i<=n;i++)

if(n%i==0)

return 0;

return 1;

}

int main()

{

inti,sum=0;

for(i=2;i<100;i++)

if( isPrime(i))

sum+=i;

printf(“%5d”,sum);

return 0 ;

}

intisPrime(int n)

{

inti;

for(i=2;i<=n/2;i++)

{

if(n%i==0)

break;

}

if(i>n/2)

return1;

else

return0;

}

76.单件实例是什么(10分)。

Foundation 和Application Kit 框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例。举例来说,NSFileManager 和NSWorkspace 类在使用时都是基于进程进行单件对象的实例化。当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配和初始化。单件对象充当控制中心的角色,负责指引或协调类的各种服务。如果类在概念上只有一个实例(比如

NSWorkspace ),就应该产生一个单件实例,而不是多个实例;如果将来某一天可能有多个实例,您可以使用单件实例机制,而不是工厂方法或函数。

77.自动释放池是什么,如何工作。

当您向一个对象发送一个autorelease 消息时,Cocoa就会将该对象的一个

100个iOS开发面试题汇总

100个iOS开发面试题汇总 关于iOS开发面试,不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会。 无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,从编程、设计、App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备。 常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发?

你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS应用开发流程。 是否熟知CocoaPods?它是什么?如何运行的? 请概括一下你对软件授权的理解,及其对软件开发的影响。 请概括一下你在构建iOS应用时的测试过程。iOS应用如何实现对其他语言、日期格式以及货币单位的支持? 请描述一下Instruments及其作用。 关于iOS技术 请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的。 iCloud包含了哪些技术与服务? iOS扩展是指?能否列举一些热门或常见的范例? HealthKit是什么? HomeKit是什么?

Apple Pay是什么?能否描述一下如何在应用中使用Apple Pay? 请解释一下iOS应用沙盒机制。 VoiceOver是什么?请举例解释一下iOS中的辅助功能(Accessibility)。开发者如何使用这些功能? iOS应用是如何实现后台多任务处理(Multitasking)的? Game Center针对iOS游戏有哪些功能? iBeacons是什么? Cocoa/Cocoa Touch是什么? 请概括一下Core Audio,Core Data以及Core Location各是什么。它们对iOS应用有何意义? 请描述SpriteKit和SceneKit的作用。 Metal是什么? 响应链(Responder Chain)是什么?它是如何发挥作用的? 按钮和其他控制方式对哪些操作做出回应? AppDelegate扮演着什么样的角色?

【8】IOS面试题--数据存储

1. 什么是谓词? 答案:谓词是通过NSPredicate,是通过给定的逻辑条件作为约束条件,完成对数据的筛选。 predicate = [NSPredicatepredicateWithFormat:@"customerID == %d",n]; a = [customers filteredArrayUsingPredicate:predicate]; 2. 什么是数据持久化?简单谈一下你所了解的IOS 中的数据持久化的方式。 数据持久化就是将内存中的数据模型转换为存储模型,以及 将存储模型转换为内存中的数据模型的统称.数据模型可以 是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。 在IOS中,少量的数据持久化可以使用属性列表、NSUserDefaults、归档等; 大量的数据持久化可以使用SQLite数据库、CoreData等,也可以使用FMDB第三方类库完成。 2. NSUserDefaults?

NSUserDefaults适合存储轻量级的本地数据,以键值对的形式进行存储,只能存储基本的OC对象(不包括自定义的对象)。 NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。 针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。 NSUserDefaults是典型的单例模式。 3. ProtocolList 属性列表,是一种用来存储串行化后的对象的文件。因为扩展名为plist,因此通常被称为plist文件。 plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,其内容为xml格式。它可以在程序运行期间动态的创建和读写,因此可以用于少量数据时候的数据持久化。 3. 归档?优缺点?

iOS笔试题教学文案

i O S笔试题

iOS笔试题 姓名_________________ 时间____________________ 一、填空题(20题) 1、与alloc对应的方法是,与retain对应的方法是。 2、@property的作用是 , @synthesize的作用是。 3、一个对象的dealloc方法在时被调用。 4、分类(categories)能够向一个已有的类中添加。 拓展(extensions)能够在当前类中增 加。 5、iOS开发者账户中,最多能够添加台设备号。 6、协议(protocal)可以分为两种,其中以关键字申明的协议可以不被实现。 7、是大多数Objective-C类继承的根类,它没有父类。 8、代理(delegate)的作用是。 9、UIViewController的didReceiveMemoryWarning方法在时会调用。 10、MVC模式中,M是指,V是指,C是指。 11、autorelase的作用 是 。 12、 iOS后台运行是在系统版本才开始支持。 13、代码: - (void)setName:(NSString *)newName{ https://www.360docs.net/doc/461104982.html, = newName; } 被调用的结果是。 14、UDID是由位十六进制字符串组成。 15、在KVC中通用的属性访问器方法是和。 16、关键字nil在Objective-C中表示。

17、#import和#include的区别是。 18、在Objective-C中是否支持运算符重载,能否在头文件里申明私有方法。 19、在Instruments工具中,用于检查内存泄露的工具是。 20、在iOS开发环境下,后缀为.a的文件又叫做。 二、单选题(20题) 1、在Objective-C中,类的成员变量默认被申明为:()A:@private B:@protected C:@public D:@package 2、iPhone、iPad、iTouch中使用的架构是()A:arm B:i386 C:x86 D:IA-32 3、下面哪个类在iPhone应用程序开发时不能使用 ( ) A:UITabViewController B:UINavigationController C:UISplitViewController D:UITableViewController 4、关于Objective-C++中的异常处理,下面说法最正确的是 () A:Objective-C不支持异常处理 B:在Objective-C++中,Objective-C的异常处理能够捕获C++的异常 C:在Objective-C++中,Objective-C的异常处理不能捕获到C++的异常 D:在Objective-C++中,Objective-C和C++的异常处理可以相互捕获异常 5、在对象的dealloc方法中,关于[super dealloc];语句说法正确的是()A:[super dealloc];有没有没有关系 B:[super dealloc];应该放在dealloc方法内的第一行 C:[super dealloc];应该放在dealloc方法内的最后一行 D:[super dealloc];位置无所谓,只要在dealloc方法里有就可以 6、下面关于方法:[[[object method1] method2] method3:[object method4]];中的method调用顺序是 ( ) A: 1 2 3 4 B: 1 2 4 3 C:4 1 2 3 D: 4 3 2 1 7、iOS开发中,HTTPS通讯是在什么位置来保障安全性()A:NSURLRequest方法里B: NSURLRequest代理方法里 C:NSURLConnection方法里D:NSURLConnection代理方法里 8、关于NSURLConnection同步通讯和异步通讯,下面说法正确的是()A: 同步通讯是指发送数据后,不等接收方回应,接着发下一个数据 B: 异步通讯时会阻塞当前线程 C: 发送同步通讯时,系统会自动创建一个单独的线程

Java面试题大全(答案版)

一个".java"源文件中是否可以包括多个类(不是内部类)?有 什么限制? 可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致 2、&和&&的区别。 &和&&都可以用作逻辑与; &&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二 个表达式; &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 3、J ava有没有goto? java中的保留字,现在没有在java中使用。 4、在JAVA中,如何跳出当前的多重嵌套循环? break+变量控制与return 5、s witch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在Stri ng 上? Switch可以作用在int上,而byte可以隐式转换为int所以能作用在byte 上 不能作用在long上,也不能作用在String上 6、s hort s1 = 1; s1 = s1 + 有什么错? short s1 = 1; s1 += 有什么错? 1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。s1+=1不会报,因为JVM会对它特殊处理(自动强转) 7、char型变量中能不能存贮一个中文汉字?为什么? 可以,char型变量是用来存储uni code(依妮Q特)编码的,而uni code编码包含了中文,所以是可以保存的

&编程题:用最有效率的方法算出2乘以8等於几? 2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方, 左移运算,CPU直接支持,所以是最有效率的 9、请设计一个一百亿的计算器 思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。 0、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 引用变量不能变 1、"=="和equals方法究竟有什么区别? ==和equals方法都可以用来比较两个对象是否是同一个对象。 ==还可以比较两个变量的值是否相等。 equals是Object类中的方法,可以由子类重写此方法,实现内容相等。 2、静态变量和实例变量的区别? 语法上不同:静态变量前要加static关键字,实例变量不需要 程序运行时不同:实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量 3、是否可以从一个static方法内部发出对非static方法的调用? 不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例 4、Integer与int的区别 int是java中的8种基本数据类型之一,默认值是0, Integer是int的包装类, 默认值是null,即Integer可以表示未赋值和赋值为0

ios面试题锦集(带答案)

iOS 面试题锦集 1.Difference between shallow copy and deep copy??浅复制和深复制的区别?? 答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。?深层复制:复制引用对象本身。?意思就是说我有个A对象,复制一份后得到A_copy 对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不 过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了 修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一 个思想。深复制就好理解了,内存中存在了?两份独立对象本身。?用网上一哥们 通俗的话将就是:?浅复制好比你和你的影子,你完蛋,你的影子也完蛋?深复 制好比你和你的克隆人,你完蛋,你的克隆人还活着。 2.What is advantage of categories? What is difference between implementing a category and inheritance??类别的 作用?继承和类别在实现中有何区别? 答案:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。?并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。?类别主要有3个作用:?(1)将类的实现分散到多个不同文件或多个不同框架中。?(2)创建对私有方法的 前向引用。?(3)向对象添加非正式协议。?继承可以增加,修改或者删除方法, 并且可以增加属性。 3.Difference between categories and extensions??类别和类 扩展的区别。 答案:category和extensions的不同在于后者可以添加属性。另外后者添加的 方法是必须要实现的。?extensions可以认为是一个私有的Category。

【精品】最全 Java 面试题:Java基础篇

【精品】最全Java 面试题:Java基础篇 Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。jdk三大版本 ?Java SE(J2SE,Java 2 Platform Standard Edition,标准版) Java SE 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java 应用程序。Java SE 包含了支持Java Web 服务开发的类,并为Java EE和Java ME提供基础。 ?Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版) Java EE 以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。

黑马程序员IOS面试宝典之iOS性能优化

黑马程序员:IOS面试宝典之iOS性能优化 1. 平时你是如何对代码进行性能优化的? 利用性能分析工具检测,包括静态Analyze 工具,以及运行时Profile 工具,通过Xcode工具栏中Product->Profile可以启动,启动后界面如下 比如测试程序启动运行时间,当点击Time Profiler应用程序开始运行后.就能获取到整个应用程序运行消耗时间分布和百分比.为了保证数据分析在统一使用场景真实需要注意一定要使用真机,因为此时模拟器是运行在Mac上,而Mac上的CPU往往比iOS设备要快。 为了防止一个应用占用过多的系统资源,开发iOS的苹果工程师门设计了一个“看门狗”的机制。在不同的场景下,“看门狗”会监测应用的性能。如果超出了该场景所规定的运行时间,“看门狗”就会强制终结这个应用的进程。开发者们在crashlog里面,会看到诸如0x8badf00d这样的错误代码。 2. 优化Table View 为了保证table view平滑滚动,确保你采取了以下的措施: ?正确使用`reuseIdentifier`来重用cells ?尽量使所有的view opaque,包括cell自身 ?如果cell内现实的内容来自web,使用异步加载,缓存请求结果 ?减少subviews的数量 ?尽量不适用`cellForRowAtIndexPath:`,如果你需要用到它,只用一次然后缓存结果?使用`rowHeight`, `sectionFooterHeight` 和`sectionHeaderHeight`来设定固定的高,不要请求delegate 3. UIImage加载图片 A:imagedNamed初始化 B:imageWithContentsOfFile初始化 imageNamed默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象. 而imageWithContentsOfFile则仅只加载图片,不缓存. 大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用imageWithContentsOfFile是最为经济的方式,这样不会因为UIImage元素较多情况下,CPU会被逐个分散在不必要缓存上浪费过多时间. 使用场景需要编程时,应该根据实际应用场景加以区分,UIimage虽小,但使用元素较多问题会有所凸显. 1>不要在?viewWillAppear 中做费时的操作 viewWillAppear: 在view 显示之前被调用,出于效率考虑,在这个方法中不要处理复杂费时的事情;只应该在这个方法设置view 的显示属性之类的简单事情,比如背景色,字体等。要不然,用户会明显感觉到view 显示迟钝。 2>在正确的地方使用reuseIdentifier table view用`tableView:cellForRowAtIndexPath:` 为rows分配cells的时候,它的数据应该重用自UITableViewCell。一个table view维持一个队列的数据可重用的UITableViewCell 对象。

Java面试题集(最全版)

目录表 第一章技巧篇 2 介绍自己2 行为2 第二章智力篇 3 微软面试题 3 第三章 Java篇5 Java基础方面--概念 5 Java基础方面—线程编程方面12 Java基础方面—编程 14 第四章 Jsp篇30 第五章 Servlet篇31 第六章应用服务器篇37 第七章 J2EE,MVC篇38 第八章设计模式方面篇40 第九章 Hibernate程序性能优化篇41 Hibernate程序性能优化 45

Hibernate 优化47 Hibernate优化的几点建议51 Hibernate性能优化52 第十章数据库篇55 第一套数据库笔试题及答案 55第二套数据库笔试题及答案 64

第一章技巧篇 介绍自己 1、自我认识 想一矢中的,首先必须认清自我,一定要弄清以下三个问题。你现在是干什么的?你将来要干什么?你过去是干什么的? 这三个问题不是按时间顺序从过去到现在再到将来,而是从现在到将来再到过去。其奥妙在于:如果你被雇用,雇主选中的是现在的你,他希望利用的是将来的你,而这将来又基于你的历史和现状。 所以,第一个问题,你是干什么的?现在是干什么的?回答这个问题,要点是:你是你自己,不是别的什么人。除非你把自己与别人区别开来,在共同点的基础上更强调不同点,否则你绝无可能在众多的应征求职者中夺魁。对于这第一个问题,自我反省

越深,自我鉴定就越成功。 随后,着手回答第二个问题:你将来要干什么?如果你申请的是一份举足轻重的工作,雇主肯定很关注你对未来的自我设计。你的回答要具体,合理,并符合你现在的身份,要有一个更别致的风格。 然后,再着手回答最后一个问题:你过去是干什么的?你的过去当然都在履历上已有反映。你在面试中再度回答这个问题时,不可忽略之处是:不要抖落一个与你的将来毫不相干的过去。如果你中途彻底改行,更要在描述你的执着、职业目标的一贯性上下些功夫。要做到这一点,又要忠实于事实和本人,最简单的方法是:找到过去与将来的联系点,收集过去的资料,再按目标主次排列。 用这样的方法,以现在为出发点,以将来为目标,以过去为证实,最重要的是加深了你的自我分析和理解。其实,在面试的时候不一定有机会或者有必要照搬你的大作,但这三个问题的内在联系点一定会体现在自我表述的整体感觉中,使你的形象栩栩如生。 2、投其所好 清楚自己的强项后,便可以开始准备自我介绍的内容:包括工作模式、优点、技能,突出成就、专业知识、学术背景等。

iOS笔试题

iOS笔试题 姓名_________________ 时间____________________ 一、填空题(20题) 1、与alloc对应的方法是,与retain对应的方法是。 2、@property的作用是 , @synthesize的作用是。 3、一个对象的dealloc方法在时被调用。 4、分类(categories)能够向一个已有的类中添加。 拓展(extensions)能够在当前类中增 加。 5、iOS开发者账户中,最多能够添加台设备号。 6、协议(protocal)可以分为两种,其中以关键字申明的协议可以不被实现。 7、是大多数Objective-C类继承的根类,它没有父类。 8、代理(delegate)的作用是。 9、UIViewController的didReceiveMemoryWarning方法在时会调用。 10、MVC模式中,M是指,V是指,C是指。 11、autorelase的作用 是 。 12、 iOS后台运行是在系统版本才开始支持。 13、代码: - (void)setName:(NSString *)newName{ https://www.360docs.net/doc/461104982.html, = newName; } 被调用的结果是。 14、UDID是由位十六进制字符串组成。 15、在KVC中通用的属性访问器方法是和。 16、关键字nil在Objective-C中表示。

17、#import和#include的区别是。 18、在Objective-C中是否支持运算符重载,能否在头文件里申明私有方法。 19、在Instruments工具中,用于检查内存泄露的工具是。 20、在iOS开发环境下,后缀为.a的文件又叫做。 二、单选题(20题) 1、在Objective-C中,类的成员变量默认被申明为:()A:@private B:@protected C:@public D:@package 2、iPhone、iPad、iTouch中使用的架构是()A:arm B:i386 C:x86 D:IA-32 3、下面哪个类在iPhone应用程序开发时不能使用 ( ) A:UITabViewController B:UINavigationController C:UISplitViewController D:UITableViewController 4、关于Objective-C++中的异常处理,下面说法最正确的是 () A:Objective-C不支持异常处理 B:在Objective-C++中,Objective-C的异常处理能够捕获C++的异常 C:在Objective-C++中,Objective-C的异常处理不能捕获到C++的异常 D:在Objective-C++中,Objective-C和C++的异常处理可以相互捕获异常 5、在对象的dealloc方法中,关于[super dealloc];语句说法正确的是()A:[super dealloc];有没有没有关系 B:[super dealloc];应该放在dealloc方法内的第一行 C:[super dealloc];应该放在dealloc方法内的最后一行 D:[super dealloc];位置无所谓,只要在dealloc方法里有就可以 6、下面关于方法:[[[object method1] method2] method3:[object method4]];中的method调用顺序是 ( ) A: 1 2 3 4 B: 1 2 4 3 C:4 1 2 3 D: 4 3 2 1 7、iOS开发中,HTTPS通讯是在什么位置来保障安全性()A:NSURLRequest方法里B: NSURLRequest代理方法里 C:NSURLConnection方法里D:NSURLConnection代理方法里 8、关于NSURLConnection同步通讯和异步通讯,下面说法正确的是()A: 同步通讯是指发送数据后,不等接收方回应,接着发下一个数据 B: 异步通讯时会阻塞当前线程 C: 发送同步通讯时,系统会自动创建一个单独的线程

2017新版JAVA面试题目汇总

详解笔试面试题集 (1)下列各题ABCD四个选顼中,只有一个选项是正确的,请将正确选项填写在答题纸上 (1)下列关于栈的描述中错误的是(B) A.栈是先进后出的线性表 B栈只能顺序存储 C栈具有记忆作用 D对栈的插入弓删除操作中,不需要改变栈底指针 正确答案:B 分析:栈是链式存储的 ⑵对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是() A 冒泡排序为n/2 B 冒泡排序为n C快速排序为n D 快速排序为n(n-1)/2 正确答案:D 分析: 想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别 进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。那么此时快速排序退化为冒泡排序了。 那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最 大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。也就 是说每次都比较了N- 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n- 1 次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数 由此最白痴的数列问题出现了,如下 1 + 2 + 3 + ........ + n - 2 + n - 1 = n(n - 1) / 2 还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必 为o(n A 2)的复杂度,答案中ABC都是线性时间复杂,显然错误 ⑶下列对于线性链表的描述中正确的是()

2012年软件评测师下午试题及答案

2012年下半年软件评测师下午试题答案 试题一(共19分)负载压力测试 【说明】 某酒店预订系统有两个重要功能,检索功能和预订功能。检索功能根据用户提供的关键字检索出符合条件的酒店列表,预订功能是对选定的某一酒店进行预订,现需要对该系统执行负载压力测试。 该酒店预订系统的性能要求为: (1)交易执行成功率100%; (2)检索响应时间在3s以内; (3)检索功能支持900个并发用户; (4)预订功能支持100个并发用户; (5)CPU利用率不超过85%; (6)系统要连续稳定运行72小时 【问题1】(3分) 简述该酒店预订系统在生产环境下承受的主要负载类型。 【问题2】(5分) 对系统检索功能执行负载压力测试,测试结果如表1-1所示。请指出响应时间和交易执行成功率的测试结果是否满足性能需求并说明原因。 表1-1 检索功能测试结果 【问题3】(5分) 对系统检索功能及预订功能执行负载压力测试,测试结果如表1-2所示。请指出服务器资源利用情况cpu占用率的测试结果是否满足性能需求并说明原因。 表1-2 系统测试结果 【问题4】(6分) 根据【问题2】和【问题3】的测试结果,试分析该系统的可能瓶颈。 参考答案:

问题1、该酒店预订系统在生产环境下承受的主要负载类型: (1)检索功能、预订功能并发用户的操作是属于并发执行负载; (2)连续运行72小时是属于疲劳强度负载; (3)大量“稿件查询”操作是属于大数据量负载。 【问题4】(5分) 对系统检索功能执行负载压力测试,响应时间和交易执行成功率的测试结果不能满足性能需求。 因为: 1、系统检索功能执行并发用户数为900时,其响应时间为3.7s与检索响应时间在3s以内不能满足性能需求,交易执行成功率为100%满足性能需求。 2、系统检索功能执行并发用户数为1000时,其响应时间为6.6s与检索响应时间在3s以内不能满足性能需求,交易执行成功率为98%不能满足性能100%需求。 【问题4】(6分) 根据【问题2】和【问题3】的测试结果,该系统的存在瓶颈。 服务器资源利用情况: 1在执行检索功能测试时并发用户为900、1000时响应时间超过3s; 2在检索功能并发用户为900,预订功能并发用户数为100时,CPU占用率(%)(平均值)达到87.3超过85%; 3在检索功能并发用户为1000,预订功能并发用户数为120时,CPU占用率(%)(平均值)达到92.6超过85%; 可能的瓶颈如下: (1)服务器CPU 性能不足; (2)数据库设计不足或者优化不够; (3)检索功能预订功能应用软件设计不足或没有优化; (4)网络带宽不足。 试题二(共15分)白盒测试 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。 Struct_ProtobufCIntRange{ Intstart_value; Unsigned orig_index; }; typedefstruct_ProtobufCIntRangeProtobufCIntRange; intint_range_lookup(unsigned n_ranges,constProtobufCIntRange*ranges,int value){

java经典面试题大全带答案

Java经典面试题带答案 一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A. Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A. B. C. D. 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.能指定编译结果要置于哪个目录(directory) 答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D. 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

iOS面试题库(四)有关GCD——北风网分享

北风网iOS面试题库(四) 写在前面:“分享”看似在输出,但实际上是获得更多。用我们北风网的口号就是“不懂得分享的人,不会很快乐;不懂得分享的教育,不是好教育”。所以,我们北风网会不定期给大家分享一些干货,所有的内容仅供学习之用,也希望大家能将“分享的精神”传递下去。 一、CGD的底层实现 (1)iOS和OS X的核心是XNU内核, GCD是基于XUN内核实现的 (2)GCD的API全部在libdispatch库中 (3)GCD的底层实现主要有Dispatch Queue 和Dispatch Source (4)Dispatch Queue——管理block操作 (5)Dispatch Source——处理事件 二、Notification是同步还是异步?Kvo 是同步还是异步? 包括代理,这些都是同步的;监听和回调都是在同一个线程中执行。 三、Objective C中的selector是什么? 可以理解@selector() 就是取类方法的编号,他的行为基本可以等同C语言中的函数指针,只不过C语言中,可以把函数名之间赋给一个函数指针,而Objective-C的类不能之间应用函数指针,这样只能做一个@selector语法来取。 它的结果是一个SEL类型,这个类型的本质是累方法的编号(函数地址).方法以selector为索引.selector的数据类型是SEL定义成char*,我们可以把它想象成int .每个方法的名字对应

一个唯一的值。 四、iOS中哪些操作是属于私有api的范畴? 私有API是指存放在PrivateFrameworks框架中的API 是苹果明确不能使用的API 也可以说,一般在官方文档和头文件中看不到,但是实际存在于框架中的API 就是私有API,具体在提交应用的时候回自动检测。 私有API的存在很大一部分是为了保护隐私和系统安全,进制开发者使用这些功能。但是由于Objective-C的动态特性,使得实际上不可能存在真正意义的阻止调用这些API。 五、frame和bounds有什么不同? frame的位置是相对父空间的左上角来说的,参照的是父类的坐标系,指的是空间在父控件内的位置和大小。 bounds的位置是相对控件自身的左上角来说的,参照的是自身坐标系,指的是自己本身的大小。 六、NSTimer和GCD的定时器有什么区别? (1)NSTimer 可以调用invalidate 进行撤销,创建和撤销必须在同一线程。 NSTimer需要将定时器添加到当前的runloop中. 它的时间单位是秒。 (2)GCD一旦执行就不能撤销。 CGD中的定时器不受runloop模式的影响。 时间单位是纳秒。

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.360docs.net/doc/461104982.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

dsp试题及答案集(附复习资料)解析

最新DSP考试试题集合外加复习资料(后) 一、填空(每空1分,共30分) 1.程序计数器的值可以通过复位操作、顺序执行指令、分支转移, 累加器转移,块重复,子程序调用,从累加器调用子程序,中断等操作改变。 2.’C54x DSP芯片采用了6级流水线的工作方式,即一条指令分为预取指、 取指、译码、寻址、读数和执行6个阶段。 3.解决MMR写操作的流水线冲突时,一般可用采用推荐指令和插入空操作 指令的方法。 4.TI公司的定点DSP产品主要有 TMS320C2000 系列、TMS320C5000系列和 TMS320C6000 系列。 5.’C54x DSP中传送执行指令所需的地址需要用到 PAB 、CAB、DAB和 EAB 4条地址总线。 6.在’C54x DSP寻址和指令系统中,Xmem和Ymem表示 16位双寻址操作数, Dmad为16位立即数,表示数据存储器地址,Pmad为16位立即数,表示程序存储器地址。 7.DSP的内部存储器类型可分为随机存取存储器(RAM)和只读存储器(ROM)。 其中RAM又可以分为两种类型:单寻址RAM(SARAM)和双寻址RAM(DARAM)。8. 9.’C54x DSP的内部总存储空间为192K字,分成3个可选择的存储空间:64K 字的程序存储空间、64K字的数据存储空间和64K字的 I/O空间。 10.从功能结构上,’C54X DSP的CPU可以划分成运算部件和控制部件两大 部分。 11.’C54x DSP的寻址方式有七种,分别为立即寻址、绝对寻址、累加器寻址、

直接寻址、间接寻址、存储器映象寄存器寻址、堆栈寻址。 12.’C54x DSP定时器由3个16位存储器映射寄存器组成:定时器寄存器(TIM)、 定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。 13. 主机接口(HPI,Host Port Interface)是TMS320C54x 系列定点芯片内 部具有的一种接口部件,主要用于DSP与其他总线或CPU进行通信。 14.’C54x DSP的指令系统有助记符指令和代数指令两种形式。 15.COFF目标文件中.text段通常包含可执行代码,.data段通常包含己初 始化的数据,.bss段中通常为未初始化的数据保留空间。 16.DSP芯片的开发工具可以分为代码生成工具和代码调试工具两类。 17、DSP芯片按照其用途分类,可以分为通用型和专用型两种。 18,在堆栈操作中,PC当前地址为4020h,SP当前地址为0033h,运行PSHM AR2后,PC= 4021h , SP= 0032h 。(PSHM AR2为单字指令) 19、TMS320C54xDSP芯片四种串行口类型是指 SP 、 BSP 、McBSP和TDMcBSP。 20、请简要说明TMS320C5402VCDSP以下引脚的功能: RS:复位引用脚,IOSTRB: I ef所定义的符号,是在当前模块中 使用,而在别的模块中定义的符号; B、.ref 所定义的符号,是当前模块中定义,并可在别的模块中使用的符号; C、.sect命令定义的段是未初始化的段; D、.usect命令定义的段是未初始化的段。 8、在采用双操作数的间接寻址方式时,要使用到一些辅助寄存器,在此种寻址方式下,下 面的那些辅助寄存器如果使用到了是非法的( D ) A、AR2 B、AR4 C、AR5 D、AR6

iOS开发高级程序员面试题-答案

一、判断题(每题2分,共20分) 1、UITableView能够绑定多个数据源。(错) 2、一个UIViewController可以管理多个UITableView。(对) 3、Object-c的类可以多重继承。(错) 4、objective-c类里面的方法只有两种, 静态方法和实例方法。(对) 5、NSFileManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。(对) 6、用类别增加方法时,不能与原来类中的方法产生名称冲突。(错) 7、frame指的是该view在本身坐标系统中的位置和大小。(错) 8、method是一个方法的名字,selector是一个组合体。(错) 9、ARC是编译特性,不是运行时特性,在编译时,编译器会自动加上释放代码。(对) 10、从iOS4之后,Safari支持全屏浏览,Siri支持普通话。(对) 二、填空题(每空2分,共20分) 1、iOS是使用Objective-C语言编写的,使用该语言开发的Cocoa是一款功能强大的用户界面工具包,也是iOS的核心。 2、数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。链表恰好相反,其中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。 3、发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作。而发送异步请求不会阻塞主线程,会建立一个新的线程来操作,之后程序可以继续运行。 页脚内容1

4、autorelease只是把Object放入了当前的autorelease pool中,当它被释放时,其中的所有Object都会被调用Release。 5、作为Objective-C导入头文件的关键字,#import<>用来包含系统的头文件,#import””用来包含用户头文件。 三、简述题(每题4分,共20分) 1、delegate和notification有什么区别,什么情况下使用? 答:delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。 notification:消息的发送者告知接收者事件已经发生或者将要发生,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。 2、Object-C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 答:线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue。 在主线程执行代码,方法是performSelectorOnMainThread。 如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone。 3、iOS有哪些数据持久化方式? 答:四种:属性列表、对象归档、SQLite3和Core Data。 页脚内容2

相关文档
最新文档