黑马程序员技术交流社区

标题: 面试总结 [打印本页]

作者: dhiwgijihc    时间: 2016-2-16 21:01
标题: 面试总结
1. #import的作用
#import 防止头文件重复保函

2.面向对象和面向过程的区别
面向过程:注重的是解决问题的步骤
面向对象:关注的是解决问题的去要那些对象

3.对象和类方法的区别
对象:以减号开头
只可以被对象调用,可以访问成员变量
类:以加号开头
只能用类名调用,对象不可以调用
类方法不能访问成员变量

4.self 与 super区别
self代表着当前方法的调用者

super是一个编译指令可以直接调用当前父类方法
当前类的父类的调用者
super在类方法中,它就代表了调用当前类方法的类的父类,如果在对象方法中,它就代表调用当前对象方法的对象的父类对象

5.继承和多态
当调用方法时,首先检测子类有没有实现这个的方法,如果子类没有重写这个方法,就会调用父类的方法
重写:子类重新实现父类的方法



6.多态:多态就是某一类事物的多种形态.多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作

7.点语法就是用来调用set和get的方法

8.@property 和 @syntheesize   —-森的赛
Xcode 4.4前:自动生成set和get声明方法
Xcode 4.5后:自动生成set和get的声明和实现方法 在.m文件中生成下划线开头的成员变量

在Xcode 4.4前自动生成set和get方法的实现
在Xcode 4.4可以不写

9.内存管理
管理范围:任何继承于 NSObject的对象
原理:
每一个对象都有引用计数器
当使用alloc new 和 copy创建对象时引用计数器被设置为1
给对象发送一条retain消息 ,引用计数器加1      —
给对象发送一条relrase消息,引用计数器会减1
计数器为0时,对象会被回收
只要用alloc new创建新对象,那么你就有责任做一次release
不可以再操作已经被释放的对象,不然会发生野指针错误
在对象释放前操作对象
你想使用某个对象,就应该放对象的计数器+1
你不想使用某个对象,就应该让对象的计数器-1

成员变量内存管理(如果成员变量是对象,才需要管理)
哪里有 alloc new 哪里有 release
release 旧对象
retain新对象
dealloc 方法就是释放当前拥有的所有对象

nonatomic:性能高 多线程不加锁   —诺米拖米克
atomic 性能低,多线程加锁      -啊拖你克

autorelease 会将对象放到一个自动释放池中
当自动释放池被销毁,会将池里的所有对象的一次release操作

10.分类(category)在不改变类的情况下给一个类动态添加方法,可以访问原来的成员变量和方法,但不可以添加成员变量    ——开地格瑞
继承有: 封装 继承 多态   子类继承父类的属性和行为

11.协议protocol  —泼提科了
遵守某个协议,只要遵守这个协议,就就相当于拥有了这个协议里面所有的方法和声明

@pequired是必须实现     —瑞快额特
@optional 可以选实现     —哦破神no

分类和协议只能声明方法,不可以声明变量
NSObject是基类协议


12.block的作用:封装代码,用来保存一段代码
block 内部可以访问外面的变量
默认情况下,block 内部不能修改外面的局部变量
给局部变量加上_block,这个局部变量就可以在block内部改变

13.@class 和 #import的区别
@class做一个简单的声明,并不包含 类方法的声明和成员变量的声明
@import 是把整个类的所有声明都拷贝一份

@import和@class同时在.h 和 .m中可以解决循环依赖的问题

循环retain
两个类相互包含,就会出现无法释放的问题 一边用retain 另一边用assign

作者: 写轮眼的少年    时间: 2016-2-16 21:21
这个似乎不是面试总结,而逝基础内容总结吧
作者: 大爱五花肉    时间: 2016-2-17 14:03
笔记做的不错,蛮详细的赞一个
作者: chengxinchengyi    时间: 2016-2-17 22:43
好眼熟。。。。
作者: fabiocn    时间: 2016-2-19 15:38
部分英文还有音译,神人也
作者: chuanzhang    时间: 2016-2-19 20:40
留个记号,好好学习,为以后做准备
作者: 梁川楠    时间: 2016-2-21 11:30
谢谢分享,留着看
作者: songzengyu    时间: 2016-2-21 13:04
谢谢分享
作者: youngrivers    时间: 2016-2-21 13:42
太少了,面试至少要准备50个题
作者: 今晚打老虎3000    时间: 2016-2-21 21:32
好好学习天天向上
作者: 米阳    时间: 2016-2-21 22:27
厉害厉害, 留用了   
作者: yangbin123    时间: 2016-2-21 22:37
谢谢你的笔记
作者: 若然而已    时间: 2016-2-22 12:57
受教。。。
作者: 382502038    时间: 2016-2-22 16:44
顶贴顶贴顶贴
作者: 大爱五花肉    时间: 2016-2-22 17:45
加油加油
作者: iotwhh    时间: 2016-2-22 17:52
面熟。。哈哈,都懂得。。
作者: 飘忽不定~    时间: 2016-2-22 18:59
写的很好,希望楼主加油
作者: 249661368    时间: 2016-2-22 19:54
学习一下哈。顶顶
作者: chuanzhang    时间: 2016-2-22 19:54
笔记不错,学习了,一些基本的主观题,还是不错的
作者: hezerongrocky    时间: 2016-2-22 20:13
谢谢分享
作者: yatoutou    时间: 2016-2-22 20:31
谢谢作者分享,很好用
作者: 嘻嘻哈哈就    时间: 2016-2-22 21:30
总结的很全面,留下来为以后学习做准备,赞一个
作者: XJJ    时间: 2016-2-23 18:26
涨姿势了
作者: yatoutou    时间: 2016-2-25 09:16
自学备战中,争取能进就业班吧
作者: chensc    时间: 2016-2-26 19:54
学习学习!
作者: chensc    时间: 2016-2-27 07:52
学习学习!
作者: Bin-    时间: 2016-2-27 09:29
辛苦辛苦~!!!
作者: 彼岸花开    时间: 2016-2-27 22:43
谢谢你得总结
作者: chensc    时间: 2016-2-28 07:10
学习学习!
作者: dx206    时间: 2016-2-28 08:04
留下了,前辈的经验啊,努力学习
作者: zzt244    时间: 2016-2-28 15:07
谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2