之前面试过很多家企业,一直没有时间总结一把,今天把面试中遇到的一些经典题目列出来,答案则会稍后补充,以供大家学习:
1、ARC中weak和assign区别,分别用在什么场景,weak的实现原理是什么?
weak 用来修饰弱引用的属性,在ARC环境下,所有指向这个对象的weak指针都将被置为nil。
asssign 相于于指针赋值,不对引用计数进行操作,注意原对象不用了,一定要把这个设置为nil;简单赋值,对基础数据类型
(例如NSInteger,CGFloat)和C数据类型(int, float, double,
char, 等) 适用简单数据类型。
2、GB2312,UTF-8,UTF-16,Unicode的区别和联系,NSString内部存储用的什么编码,为什么选择这种编码?
3、NSSet和std::map中的key是以什么数据结构存储的?设计理由是什么?为什么没有NSStack,NSQueue这两种容器?
4、一台IPV4的电脑能直接和一台IPV6的电脑通过IP协议直接通信么?
5、写一段用GET方式请求地址为 http://qq.com/1.mp3的文件的第一个字节数据的Request Message 内容,内容从字母GET开始,包含一系列的Request field。
6、函数void dispatch_async(dispatch_queue_t queue,dispatch_block_t block)中第一个参数函数queue是什么意思,和线程优先级有什么关系?
7、编译器是如何做到让block块内的代码访问到block块外的变量的,如果修改block外的变量,给变量增加__block前缀的意义是什么?
8、实现字符串比较函数,如果两个指针指向的字符串内容一样,返回ture
bool strcmp(const char*psz1,const char *psz2)
9、实现一个OC类,这个类中可以保存Int类型的数据,要求实现如下接口:可以向类中pop一个Int型数据,数据按照pop的时间顺序存储;可以从类中push出一个Int型数据,每次push出的数据都是最新时间插入的数据;可以从类中获取最大的那个Int型数据。要求实现时间复杂度O(1)