C语言 - 1. 数据类型有哪些
- 整型 单精度浮点型 双精度浮点型 字符型
- 2. 选择结构有哪些,循环结构有哪些
- if语句 switch case 语句
- 3. 全局变量,局部变量
- 全局变量:定义在所有函数之外的变量。
- 局部变量:定义在函数内部的变量。
- 相同点:都是变量,都能存储数据。
- 不同点:定义位置不同,作用与不同,初始值不同,局部变量的初始值是一个随机数。全局变量的初始值是0.创建和回收时间不同。
- 局部变量:程序运行到定义这个局部变量的这行代码的时候才创建,在作用域结束的时候就回收了。
- 全局变量:程序已启动创建,就在程序结束的时候才回收。
- 4. break,continue(能否使用在switch中),return的作用
- break 可以在switch中使用。 continue只能用在循环体中。break 和continue
- 只能作用于当前循环。
- 在无返回值的函数的中,使用return 代表立即结束这个函数。后面不能跟数据。
- 在有返回值的函数中,使用return 代表,结束函数的执行,并返回制定的数据。
- 5. 如何产生随机数
- 6. while循环和for循环能否转换
- 可以
- 7. 函数的作用
- 8. static和const的作用
- 被const修饰的变量我们叫做只读变量职能取值,不能改值。
- 9. 预处理指令
- 编译之前执行的指令。
- 分类:文件包含指令 #include
- 宏定义:#define
- 条件编译指令#if
- 特点:都是以#开头,预处理指令后边没有分号。在编译的时候,检查语法之前。
- 10. 函数如何返回多个值
- 11. 格式控制符
- 地址:%p 字符:%c double用%lf float :%f unsigned long %lu
- 12. 如何在堆区开辟空间
- 关于开辟空间的三个函数: malloc()向堆内存申请多个连续的字节空间 calloc() realloc() 他们的头文件都是#include<stdlib.h>
- 申请空间也许户失败,失败的话,返回的指针就是null值。
- 申请完一定要记得释放。
- 步骤:申请 使用 释放 free()
- 13. 结构体能否嵌套,枚举能否嵌套
- 结构体可以嵌套。 枚举不可以嵌套。
- 14. 宏有哪几种,分别怎么使用
- 首先:宏是一个预处理指令,所以它在编译之前执行。
- 宏分为带参数的宏,和布袋参数的宏。
- 在c代码中,直接使用宏的名称就可以。
OC语言 - 什么是类
- 具有相同特征和行为的一类事物的统称。
- 2. 面向对象的三大特性
- 封装,继承,多态。
- 封装分为代码的封装和方法的封装。
- 继承:子类拥有父类中的所有成员变量,而不用自己定义。特点:但根性 传递性。本质:拥有所有父lei的属性,而不是方法。
- 多态:同一种行为,对于不同的事物的而言,具有完全不同的表现形式。
- 3. 属性的访问修饰符(修饰后,子类能否继承,能否访问)
- 可以继承。
- @private 修饰的属性,在子类的内部和 外部都不可以直接访问,但可 i通过get set 方法访问。
- 4. 多态是重点********(会问到编译检查和运行检查)
- 编译检查:主要是检查代码是否符合语法规范。具有编译器特性。
- 运行检查:检查对象中有没有这个方法。
- 5. 点语法
- 其实就是快速的调用getter setter 方法。所以有点语法为属性赋值,本质声还是调用的setter 方法。所以,如果属性没有封装set get 方法 是无法使用点语法的。
- 6. @property的作用(4.4版本以后的功能)
- 自动生成set get方法的声明。
- 在类的。h文件中生成属性xxxx对应的标准set get 声明。
- 在类的。m中榜我们生成_xx这个属性的定义
- 在类的。m中帮我们生成_xx这个属性的set get 的实现。
- 在类的。
- 7. @property的参数有哪些,不要忘记setter和getter的重命名
- 多线程相关的参数:
- atomic:安全 但是性能低下。
- noatomic:不安全 但是效率高。
- 推荐使用noatomic,
- 与生成setter 方法实现相关的参数:
- assign:默认值 使用assign生成的setter方法的实现中就是直接 赋 值。
- retain:生成的setter方法中,是标准的mrc内存管理代码。
- 并不会在delay中也生成release代码。所以de l lo c的release 还要自己去写。
- 当对象的类型是oc对象的时候,就使用retain
- 当属性的类型是非oc对象的时候,就使用assign。
- 是否生成只读,只写的封装:
- readwrite:默认值。同时生成getter setter
- readonly:只生成getter 不生成setter
- 指定生成的getter setter 方法的名称:
- getter:
- setter:
- 无论什么情况下都不要改setter方法的名字,只有属性是bool类型的时候,我们才改gettter 的名字,以is 开头 提高代码阅读行。
- 8. MRC下@property的参数分别有什么作用(copy,retain是重点)
- retain职能在mrc下使用,在mrc模式下:当属性是oc对象的时候绝大多数场景之下使用retain,
- 9. ARC下@property的参数(copy,strong是重点)
- strong只能用在arc模式下。
- 10. MRC和ARC下的循环引用
- arc 就是自动计数。
- 在mrc模式下,出现循环引用的时候,一边使用assign,一边使用retain。
- 在arc模式下,当出现循环引用的时候,一边使用strong 一边使用weak。
- 11. 分类和延展的作用
- 分类的作用:将一个类分为多个模块,将这个类似功能的方法放在同一个模块之中。方便后期维护和管理。
- 延展:是一个特殊的分类。
- 是一个匿名的分类,没有名字。
- 只有声明没有实现,和本类共享一个实现。
- 12. block的作用
- 专门用来存储一段代码。推荐使用noatomic,
- 13. 协议的作用,修饰符
- 14. 字符串的截取
- 15. 字符串的删除
- 16. 字典的插入
|
|