iOS面试题(C语言,Objective C,Foundation框架等)

匿名网友 匿名网友 发布于: 2015-10-14 00:00:00
阅读 183 收藏 0 点赞 0 评论 0

C语言部分:

在C语言中,如何查看变量地址?

Char a =’A’;

Int b = 66;

Printf(“a的地址%d\n”,&a);

Printf(“b的地址%d\n”,&b);

printf和puts有什么区别

1,Printf可以输出多个字符串,Puts只能输出一个字符串

2,puts会自动换行。相对来说Printf比较灵活

 

scanf和gets的区别

Gets不安全

Scanf不能接收空格 ,tab,回车。

按作用域区分,变量可以分为哪些?

局部变量,成员变量

数组名跟指针的区别?

数组名只是一个指针常量,指针是指针变量,指针的值可以变化,但是数组常量的值不可变

变量的作用域?

从定义变量的那一行代码开始,一直到所在的代码块结束

64位编译器下int char float double所占的字节数

int 4个字节

char 1个字节

float 4个字节

double 8个字节

有函数声明没有函数定义会发生什么情况

1>编译可以通过,因为编译器只会检测语法是否合理,并不会检测函数有没有定义

2>链接会报错,因为链接的时候会检测函数是否定义

 

函数是否能重复声明,是否能重复定义?

函数可以重复声明,但是不能重复定义

c语言的运算符有哪些?

算数运算符

逻辑运算符

关系运算符

三目运算符

位运算符

赋值运算符

字符串结束的标记?

\0

 

在64位编译器中,指针所占的字节数?

8个字节

 

 

为什么指针要有类型?

存或取时按几个字节存取

局部变量的定义,作用域,生命周期,初始值?

1>定义:在函数(代码块)内部定义的变量(包含函数的形参)

2>作用域:从定义变量的那一行开始,一直到代码块结束

3>生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,被回收

4>没有固定的初始值

全局变量的定义,作用域,生命周期,初始值?

1> 定义:在函数外面定义的变量

2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)

3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁

4> 默认的初始值就是0

static用在局部变量中有什么用?

Static用在局部变量中,可以在许初始化的时候就存在这个变量,提高效率,但是没有改变作用域,作用域还是在局部的代码块中

static用在全局变量中有什么用?

Static用在全局变量中,可以限制变量的访问范围,只能在本文件中访问

 

结构体和数组的区别?

数组:只能由多个相同类型的数据构成

结构体:可以由多个不同类型的数据构成

 

 

定义结构体的3种方式?

1>先定义类型再定义变量

2>定义类型的同时定义变量

3>定义类型的同时定义变量(省略类型名称

 

结构体的作用域?

1>定义在函数外面:全局有效(从定义的那行开始,一直到文件结尾)

2>定义在函数(代码块)内部:局部有效(从定义类型的那行开始,一直到代码块结束)

typedef的作用?

给已经存在的类型起一个新的名称

typedef的适用场合?

1> 基本数据类型

2> 指针

3> 结构体

4> 枚举

5> 指向函数的指针

递归的2个条件?

1>函数自己调用自己

2>有明确的返回值

编写c语言程序的4个步骤?

编辑->编译->链接->运行

c语言标识符的命名规范?

1>只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成

2>严格区分大小写,同一段英文字母的大写和小写是两个不同的标识符

3>不能以数字开头

4>不可以使用关键字作为标识符

注释的作用?

1>被注释的代码不会参与运算

2>检查代码的作用

3>排除错误

signed和unsigned的取值范围?

Signed是-2的31次方到2的31次方-1

Unsigned是0到2的32次方-1

 

 

return的作用

1>退出函数2>返回一个具体的值给函数调用者

不写返回值的函数默认返回什么类型

int

 

32.数组元素的访问方式?

1>数组名[下标]

2>指针变量[下标]

3>*(p+i)

一个汉字在mac操作系统中占几个字节?

3个

指针p+1返回的是什么?

返回的时下一个元素的地址,具体取决于指针类型

结构体所占空间如何计算?

结构体所占空间是最大成员字节数的倍数

如何使宏失效?

#undef

外部变量整个程序都能用但是为什么还需要声明?

因为.c是单文件编译,要想使用变量还是需要声明否则提示没有定义变量

全局外部变量如何区分定义和声明?

变量前面有extern的是全局外部变量

没有extern的是全局内部变量

 

 

这种写法是否正确?

int test(int a,int b)

{

    int a = 20;

    int b = 30;

    return a+b;

}

不正确,因为函数体内部不能定义和形参一样的变量

定义不声明函数是否报错?

报错

不定义不声明但是使用函数是否报错?

不报错,因为c语言语法是弱类型

函数是否可以同名?何种情况下可以同名?

函数一般不能同名,默认函数都是外部函数,如果是内部函数且在两个文件中可以同名

include后面的<>和””作用?

<>是只寻找c语言函数库的头文件,””是先在本文件中找,再在函数库中找

函数不写返回值默认是什么类型?

Int类型

 

函数返回值写void,在函数体内部还可以写return么?

可以写,但是不能写具体返回的数据,否则会报错

 

函数返回值为int的时候,可以不可以不写return?可不可以返回double类型的数据?

可以不写,也可以返回double类型的数据

 

46.printf中八进制,十进制,十六进制的占位符分别是什么?

%o 八进制

%i/%d 十进制

%

 

int的前缀(long) (long long) 代表什么意思?是否数据数据类型?分别代表多少个字节?

不属于数据类型,他们是类型说明符,long 8个字节,long long 8个字节

 

 

 

 

OC语言部分

  1. OC中.h与.m文件的作用?

oc中类分为2个文件:.h声明类中的变量和方法;.m实现类中的方法;

 

  1. 什么是静态调用,什么是动态调用?

‘-‘表示动态调用;’+’静态调用常有的表现形式是【类名 静态方法】

 

3.OC对象中的变量关键字有哪些,作用域?

@public(全局可访问)

@protected(类内部和之类)(默认的可以省略不写)

@private(只能在内部访问)

@package 框架内可以访问

 

4.OC中的property和synthesize分别有什么用?

property用在.h文件synthesize用在.m文件中

可以自动生成set和get方法,property用来生成set方法,synthesize用来生成get方法

5.内存管理的范围

内存管理的范围:任何继承了NSObject的对象,对基本数据无效;

6.引用计数器在内存中几个字节

4个字节

 

7.retain,release对引用计数器的作用?

Retain对引用计数器+1.release引用计数器-1

 

8.如何获得对象的引用计数器?

可以给对象发送retainCOunt消息获得当前计数器值

 

9.分类的作用

分类是给类增加方法的,分类不能增加成员变量

 

10.什么是野指针

指向了僵尸对象的指针(指向了已经被回收了的内存空间)

11.什么是僵尸对象

已经被系统回收内存的对象

12.什么是野指针错误

野指针向僵尸对象发送消息

13.set方法的作用?

提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤

14.set方法的命名规范

1> 方法名必须以set开头

2> set后面跟上成员变量的名称,成员变量的首字母必须大写

3> 返回值一定是void

4> 一定要接收一个参数,而且参数类型跟成员变量类型一致

5> 形参的名称不能跟成员变量名一样

 

15.get方法的规范?

返回对象内部的成员变量

 

16.get方法的命名规范

1> 肯定有返回值,返回值类型肯定与成员变量类型一致

2> 方法名跟成员变量名一样

3> 不需要接收任何参数

 

17.对象方法的特点?

1> 减号开头

2> 只能由对象来调用

3> 对象方法中能访问当前对象的成员变量(实例变量)

 

18.类方法的特点?

1> 加号 + 开头

2> 只能由类(名)来调用

3> 类方法中不能访问成员变量(实例变量)

 

19.类方法的好处和适用场合?

1> 不依赖于对象,执行效率高

2> 能用类方法,尽量用类方法

3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法

 

20.是否允许类方法和对象方法同名?

可以允许类方法和对象方法同名

 

21.self的用途?

1> 谁调用了当前方法,self就代表谁

self出现在对象方法中,self就代表对象

self出现在类方法中,self就代表类

2> 在对象方法利用“self->成员变量名访问当前对象内部的成员变量

[self 方法名]可以调用其他对象方法\类方法

 

22.什么是工具类?

基本没有任何成员变量,里面的方法基本都是类方法

 

23.继承的好处?

1> 抽取重复代码

2> 建立了类之间的关系

3> 子类可以拥有父类中的所有成员变量和方法

 

24.所有类的基类是什么?

NSObject

 

25.基协议是什么?

NSObject

 

26.什么叫重写?

子类重新实现父类中的某个方法,覆盖父类以前的做法

 

27.在xcode中添加注释的方法?

#pragma mark

 

28.NSLog配合%@打印的对象默认调用对象的哪个方法

评论列表
文章目录