黑马程序员技术交流社区
标题:
面试总结
[打印本页]
作者:
红凉梦
时间:
2016-2-25 19:27
标题:
面试总结
/*
1.NSLog和Printf的区别
1)NSLog可以自动换行,输出调试信息,printf不能
2)NSLog函数的参数是一个NSString的对象
3)printf函数的参数是一个字符串常量指针
2.#import 和 #include的区别
1)import可以防止头文件的重复包含,include不能
2)include是使用预处理指令来防止头文件的重复包含
#ifndef C7________xxx_h
#define C7________xxx_h
3.new的三件事
1)向计算机(堆区)申请内存空间;
2)给实例变量初始化;
3)返回所申请空间的首地址;
4.实例变量的修饰符 作用范围
@puplic (公开的) 作用于当前类
@protected (受保护的) 作用于当前类,子类(派生类)
@private (私有的)作用于当前类
@package (框架级别的) 作用于框架级别的
5.C和OC static的区别
在C语言中 static可以修饰
1)局部变量(延长局部变量的周期)
2)全局变量(当前变量只能在本文件中访问)
3)函数(当前函数只能在本文件中访问)
在OC中 static不能修饰方法 但是可以修饰全局变量和局部变量
6.@proprety增强做的三件事
1)在.h文件中帮我们自动生成get和set方法声明
2)在.m文件中帮我们生成私有的实例变量(前提是没有在.h文件中没有手动生成)
3)在.m文件中帮我们是实现get和set方法的
注意:
在使用@property情况下,可以重写getter和setter方法.需要注意的是,当把setter和getter方法都实现了之后,实例变量也需要手动去写.
7.NSObject和id的区别
1)NSObject和id都可以指向任何对象
2)NSObject对象会在编译时进行检查,需要强制类型转换
3)id类型不需要编译时检查,不需要强制类型转换
8.instancetype和id的区别
相同点:都可以作为返回值的类型
不同点:
1)instancetype可以返回和方法所在类相同类型的对象,id只能返回未知的对象
2)instancetype只能作为返回值,不能像id那样作为参数
9.nil , Nil ,NULL和NSNULL的区别
nil 是一个对象值;如果我们要把一个对象设置为空的时候,就用nil
Nil 是一个类对象的值,如果我们要把一个class的对象设置为空的时候,就用Nil
NULL 是一个通用指针
NSNull 是一个对象,它用在不能使用nil的场合
10.面向对象设计三个主要特征:
封装,继承,多态
封装的好处:
将变化隔离。(不管里面怎么变,使用者不需要知道)
便于使用。(使用者只需按照一定的方法使用就可以了)
提高重用性。(任何人都可以对已封装好的功能进行操作)
提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性)
继承 子类拥有了父类的所有属性和方法
多态 父类的指针指向了子类的对象(如果存在多态,父类就可以访问子类的特有方法;如果不存在多态,父类就不可以访问子类的特有方法)
11.内存分为5大区域
栈区 -- 存放局部变量,临时变量
堆区 -- 程序运行过程中,动态分配的内存
BSS区 -- 未初始化的全局变量和静态变量
数据段 -- 已经初始化的全局变量和静态变量
代码段 -- 程序编译产生的二进制的数据
12.@proprety参数
1)原子性:atmoic(原子性)noatmoic(非原子性)
2)读写属性:readwrite和readonly
3)set方法的处理:assign(修饰基本数据类型)retain(用来修饰OC对象)copy
以上是MRC的情况下 ARC的情况下多两个(strong(强指针)weak(弱指针))
13.import和@class的区别:(面试题)
作用上的区别:#import会包含引用类的所有信息(内容),包括引用类的变量和方法;
@class仅仅是告诉编译器有这么一个类,具体这个类里有什么信息,完全不知。
效率上的区别:#import编译效率会非常低,@class就不会出现这种情况。
14.关键字的命名规则
1.只能由字母,数字,下划线或者美元符号组成
2.不能以数字开头
3.不能和关键字重名
4.严格区分大小写
15.结构体与数组有什么区别?
1.结构体可以存不同类型的元素,而数组只能存同一类型
2.结构体类型需要我们自已定义.数组是用别的类型加[元素个数]
3.结构体内存分配方式很特别,使用对齐原则,不一定是所有元素的字节数和,而数组一定是所有元素的字节数和.
4.结构体指针可以指针名->结构体元素名(取元素);数组不行.
*/
复制代码
作者:
zzt244
时间:
2016-2-26 01:06
这是老师问你的?
作者:
Omess
时间:
2016-2-26 08:12
嗯嗯 ,写的都是基础,
作者:
wangpeng1
时间:
2016-2-26 12:26
调整心态,加油!
作者:
斑斑1111
时间:
2016-2-26 15:41
收藏了多谢
作者:
米阳
时间:
2016-2-28 18:40
真厉害啊 赞一个
作者:
Truth_10
时间:
2016-2-28 21:52
感谢楼主分享
作者:
zhangxiansheng
时间:
2016-2-29 09:49
收藏了!!!
作者:
梁川楠
时间:
2016-2-29 11:01
收藏了,以后看看
作者:
yzasd1
时间:
2016-2-29 14:24
收藏了 留着以后有用
作者:
Fly不忘初心
时间:
2016-2-29 17:56
楼主 面试没有写代码吗
作者:
从心开始のBean
时间:
2016-2-29 21:23
干货分享, 先mark下来
作者:
chensc
时间:
2016-3-1 21:06
学习学习!
作者:
吴振伟
时间:
2016-3-1 23:08
6666666666666666
作者:
zhuzhibo
时间:
2016-3-7 00:17
面试全是概念吗
作者:
MuziTian
时间:
2016-3-7 15:40
楼主现在写的都是正确答案么
作者:
agaoyin
时间:
2016-3-8 13:38
赞一个!
作者:
dx206
时间:
2016-3-8 13:41
收藏了。加油!
作者:
简单的爱
时间:
2016-3-8 15:37
好东西,先收藏了。
作者:
Bin-
时间:
2016-3-8 18:02
好帖 赞一个!!
作者:
信念的旗帜
时间:
2016-3-8 19:37
还在基础班学c语言中,基本都看不懂=.=
作者:
978677855
时间:
2016-3-8 21:04
谢谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2