iOS 一些概念性面试题

1.类和对象的区别

类是对象的抽象,对象是类的具体实例。

类是抽象的,不占用内存,而对象是具体的,占有内存空间。

例如:类就是水果,对象就是苹果。

2.SSL握手流程

  1. 客户端向服务器发送 ClientHello 消息,说明它支持的最高TLS协议版本,随机数、密码算法列表及压缩方法。
  2. 服务器回复 ServerHello 消息,包含基于客户端 ClientHello 消息所选择的TLS协议版本,随机数、密码算法列表及压缩方法。服务器选择的协议版本为客户端和服务器都支持的最高版本。
  3. 当双方知道了连接参数,服务器向客户端发送证书。
  4. 客户端验证服务器证书的合法性,包括:服务器证书是否过期、发行服务器证书的CA是否可靠、发行CA的公钥能否正确解开服务器证书的发行CA的数字签名、服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第5步。
  5. 客户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤3中的服务器证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。
  6. 如果服务器要求客户端的身份认证(在握手过程中为可选),客户端可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户端自己的证书以及加密过的“预主密码”一起传给服务器。
  7. 如果服务器要求客户端的身份认证,服务器必须检验客户端证书和签名随机数的合法性,具体的合法性验证包括:客户端证书是否过期,发行客户端证书的CA是否可靠,发行CA的公钥能否正确解开客户端证书的发行CA的数字签名,检查客户端证书是否在证书废止列表(CRL)中。如果合法性验证没有通过,通讯立刻中断;如果合法性验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
  8. 服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL协议的安全数据通讯的加解密通讯。同时在SSL通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
  9. 客户端向服务器发出信息,指明后面的数据通讯将使用的步骤8中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
  10. 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤8中的主密码为对称密钥,同时通知客户端服务器的握手过程结束。
  11. SSL的握手部分结束,SSL安全通道的数据通讯开始,客户端和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

3.堆和栈的区别  

  一、堆栈空间分配区别:
  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
  二、堆栈缓存方式区别:
  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
  2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
  三、堆栈数据结构区别:
  堆(数据结构):堆可以被看成是一棵树,如:堆排序。先进先出(FIFO—first in first out);
  栈(数据结构):一种先进后出的数据结构。

4.iOS9 新特性

  • nonnull:表示不能为空
  • 泛型:指定类弄
  • __kindof:一般用在方法的返回值,表示当前类或者子类
  • https

5. 如何重写类方法

  • 1、在子类中实现一个同基类名字一样的静态方法
  • 2、在调用的时候不要使用类名调用,而是使用[self class]的方式调用。原理,用类名调用是早绑定,在编译期绑定,用[self class]是晚绑定,在运行时决定调用哪个方法。

后续需要总结

iOS 核心框架

  • CoreAnimation
  • CoreGraphics
  • CoreLocation
  • AVFoundation
  • Foundation

iOS核心机制

  • UITableView 重用
  • ObjC内存管理;自动释放池,ARC如何实现
  • runloop
  • runtime
  • Block的定义、特性、内存区域、如何实现
  • Responder Chain
  • NSOperation
  • GCD

数据结构

  • 8大排序算法
  • 二叉树实现
  • 二分查找实现

面向对象编程

  • 封装、继承、多态
  • 设计模式6个原则
  • 设计一个类的功能,如何划分粒度(单一职责)
  • 接口隔离。
  • 如果有一个鸟类,有飞的动作,一个鸵鸟继承它是合适的吗(里氏替换)
  • 类之间的依赖如何依赖偶合度最小(依赖倒转)
    高层依赖低层,低层不能依赖高层。依赖接口,不能依赖具体的类。
  • 如果A要调用C函数,但C是B的成员类,应该如何设计?(迪米特)
  • 如何设计类,能做到只增加代码,而不修改代码,有哪些经验(开放封闭)
    通过设计模式解决。

计算机技术

  • 计算机网络: TCP/IP、HTTPCDN、SPDY
  • 计算机安全: RSA、AES、DES
  • 操作系统:线程、进程、堆栈、死锁、调度算法

iOS新特性、新技术

    • iOS7 UIDynamic、SpritKit、新布局、扁平化
    • iOS8 应用程序扩展、HealthKit、SceneKit、CoreLocation、TouchID、PhotoKit
    • iOS9
    • Apple Watch
    • 第三方库:SDWebImage、AFNetwork、JSONKit、wax
    • swift
时间: 2024-08-29 13:37:45

iOS 一些概念性面试题的相关文章

上星期IOS的一个面试题。

美丽说面试题 1,IOS是怎样进行内存管理的,什么是ARC. 2,声明Property时,assign,nonatomic,readonly,retain,copy(各什么意思,括号里没打印出来,我猜得) 3,delegate需要retain吗? 4,什么是designated initlalizer?执行[super init]后会发生什么事? 5,isKindOfClass和isMemberOfClass有什么区别? 6,简述UIViewController的生命周期,比较重要的几个方法分别

iOS开发工程师笔试题

iOS开发工程师笔试题 分类: IOS 面试题2013-01-17 10:28 820人阅读 评论(0) 收藏 举报 随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1.   Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承:可以实现多个接口,通过实

iOS开发-基础面试题(一) 分类: 面试题

iOS开发-基础面试题(一) 1.Difference between shallow copy and deep copy??浅复制和深复制的区别?? 答:浅层复制:只复制指向对象的指针,而不复制引用对象本身.?深层复制:复制引用对象本身.?意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们

QQ群里收集的外企iOS开发的笔试题

一组外企iOS开发的笔试题,您能回答出来吗?从群里收集来的. 1 why can't NSArray contain NSInteger Instance? with which extra step can you do it?2.complete this code so that it becomes syntacticallty correct using no more than one additional word and  square branckets NsInteger [

iOS基础问答面试题连载(三)-附答案

「Tim的博客」iOS基础问答面试题连载(一)-附答案 「Tim的博客」iOS基础问答面试题连载(二)-附答案 「Tim的博客」iOS基础问答面试题连载(三)-附答案 「Tim的博客」iOS基础问答面试题连载(四) 这次的问题是网络多线程相关的哟,面试的时候也是必问的,大家多看看 11月24日修正一处错误:18.19题目一样,答案不一样(其实是两种理解,修改为最优的一种放上来.多谢读者提醒) 以下是一些自己收集的网络多线程方面比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基

iOS基础问答面试题连载(一)-附答案

「Tim的博客」iOS基础问答面试题连载(一)-附答案 「Tim的博客」iOS基础问答面试题连载(二)-附答案 「Tim的博客」iOS基础问答面试题连载(三)-附答案 「Tim的博客」iOS基础问答面试题连载(四) 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便大家木有网的时候也可以用移动设备观看. 1.简单的描述下类扩展和分类的区别?(说2点) 类扩展没有名字,分类有名字. 类扩展可以为某个类增加额

外企iOS开发的笔试题

一组外企iOS开发的笔试题,您能回答出来吗?从群里收集来的. (miki西游@mikixiyou的文档,原文链接: http://mikixiyou.iteye.com/blog/1546376  转载请注明出处和作者) 1 why can't NSArray contain NSInteger Instance? with which extra step can you do it? 2.complete this code so that it becomes syntacticallty

MyBatis概念性面试题整理汇总

MyBatis概念性面试题整理汇总 MyBatis常见的概念性面试题 一.概念性填空题 1.#{}和$ {}的区别是什么?#{}是_____,${}是_____. 2.四个核心接口是()用于执行CRUD操作.()处理SQL的参数.()处理返回结果集.()用于执行SQL语句. 3.MyBatis中提供了一级缓存和二级缓存,其中()默认存在,不可控制,同一SqlSession范围内的操作共享该缓存,增.删.改后将(). 4.Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

iOS一些基础面试题

Part One 别人问你你都感觉这尼玛说啥的基础面试题 1.UIWindow和UIView和 CALayer 的联系和区别? 答:UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象: UIwindow是UIView的子类,UIWindow的主要作用:一是提供一个区域来显示UIView,二是将事件(event)的分发给UIView,一个应用基本上只有一个UIWindow. 万物归根,UIView和CALay