有点难的一份iOS面试题

最近我朋友给了我一份看起来有点难的题,说是他们公司的面试题。如下
1、什么是C++的虚表???
2、动态库里的类,如果新增了属性,那么在不重新编译的情况下,如iOS10升级到iOS11,那么该类的内存布局是如何兼容的?
3、OC的结构体中如何保存对象(指针)?

1、UIKit和Foundation框架是静态库还是动态库?
2、把某个类遵循的协议的实现方法都丢到一个分类里去声明和实现,可以吗?
3、分类的具体实现、扩展的具体实现

1、如何给一个类新增字面量语法?

1、编译时,声明在.h中的是如何被识别并编译的?
2、如何证明“如果一个变量既声明为static,又声明为const,那么编译器根本不会创建符号,而是会像宏预处理指令一样,把所有遇到的变量都替换为常值”?
3、什么是“全局符号表”?
4、链接阶段,全局符号表起什么作用?
5、分配常量在什么阶段?如何分配常量内存?常量是存储在哪个空间的?

1、运行时如何动态查找一个实例变量的内存偏移?
2、有哪些方法可以不让@property自动合成实例变量?
3、atomic的实现原理?
4、weak在运行时阶段是如何实现变量销毁时指向nil的?
5、atomic有什么线程不安全的地方吗?什么地方用到过atomic?

1、hash的实际作用?
2、hash是如何计算的?
3、NSArray的存储空间是连续的吗?
4、NSDictionary的存储原理?
5、NSSet的存储原理?

1、什么是占位数组?
2、占位数组如何转化为NSArray的实体数组?

1、什么是C语言的“静态绑定”?
2、函数在编译期是如何被决定的(函数在编译器会被转化为什么)?
3、什么是“内联”?
4、函数地址是如何硬编码在指令中的?
5、什么是C语言的“动态绑定”?
6、SEL的本质是什么?
7、OC方法缓存表中的内容是什么?
8、为什么要有objc_msgSend_stret、objc_msgSend_fpret函数?
9、什么是“尾调用优化”技术?

你可能感兴趣的:(有点难的一份iOS面试题)