黑马程序员技术交流社区

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

作者: songxuefeng    时间: 2016-4-1 12:24
标题: 点招面试总结

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.结构体指针可以指针名->结构体元素名(取元素);数组不行.









作者: x_starry    时间: 2016-4-1 19:28
收藏一下
作者: tdwydan1    时间: 2016-4-1 20:55
收藏了,说不定能碰到
作者: vvvisa    时间: 2016-4-1 22:06
收藏前感谢楼主
作者: 木木木木木木    时间: 2016-4-2 09:33
感谢感谢
作者: 蜗牛的未来    时间: 2016-4-2 19:43
给力,收藏
作者: shuide    时间: 2016-4-2 23:05
学到了                                         




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