1.什么是函数式编程?
函数可以接受函数当作输入(参数)和输出(返回值)。
2.什么是ABI?
应用程序二进制接口(application binary interface,ABI) 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口 。ABI不同于API ,API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译
3.什么是MVC,请结合CocoaTouch说明?
4.什么是MVVM,请设计View moled需要考虑哪些?
-
- 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model不可以不变,当Model变化的时候View也可以不变。
-
- 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
-
- 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
-
- 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
5.swift相对于OC有哪些优点?
- 简洁的语法:
我们不得不承认的是swift语言比OC精简,整个项目中丢掉了头文件,以及头文件的引入。
- 报错精准:
报错的时候直接显示报错行。
- 定义变量简单:
定义变量不用区分整型,浮点型等等,变量使用var,常量使用let。
- 可视化互动效果:
开发工具带来了Xcode Playgrounds功能,该功能提供强大的互动效果,能让Swift源代码在撰写过程中实时显示出其运行结果。
- 函数式编程的支持:
Swift 语言本身提供了对函数式编程的支持;
Objc 本身是不支持的,通过引入 ReactiveCocoa 这个库才可支持函数式编程。
6.oc里有多少种开辟多线程的方式
OC开线程的三种方式
##7.多少种线程锁的写法
实现线程读写锁的四种方法
8.block的实质和原理
9.https的原理 为什么安全
10.谈谈事件响应链,如何响应view之外的事
11.深拷贝和浅拷贝的区别
##12.isa指针是什么,在oc中起什么用。
每个Objective-C对象都有一个隐藏的数据结构,这个数据结构是Objective-C对象的第一个成员变量,它就是isa指针。这个指针指向哪呢?它指向一个类对象(class object 记住它是个对象,是占用内存空间的一个变量,这个对象在编译的时候编译器就生成了,专门来描述某个类的定义),这个类对象包含了Objective-C对象的一些信息(为了区分两个对象,我把前面提到的对象叫Objective-C对象),包括Objective-C对象的方法调度表,实现了什么协议等等。这个包含信息就是Objective-C动态能力的根源了。
13.delegate解决了什么问题,Notification与它有什么不同?
解决对象间通信,耦合度高,易懂
14.im消息不重复 不丢失
15.LLVM与Clang的区别?
LLVM是构架编译器(compiler)的框架系统
16.lang是一个C++编写、基于LLVM、发布于LLVM BSD许可证下的C/C++/Objective-C/Objective-C++编译器。那么为什么已经有了GCC还要开发Clang呢?Clang相比于GCC有什么优势呢?
其实,这也是Clang当初在设计开发的时候所主要考虑的原因。Clang是一个高度模块化开发的轻量级编译器,它的编译速度快、占用内存小、非常方便进行二次开发。
17.Class、objc的区别是什么?
18.AFN的原理
19.死锁的理解怎么解决
资源竞争循环等待
20.开发中遇到的最大的困难,怎么解决的。如果是现在你会怎么解决。
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群