美文网首页
iOS 面试基础知识篇

iOS 面试基础知识篇

作者: Edviin_2de8 | 来源:发表于2024-05-06 11:43 被阅读0次

    1,介绍常用的设计模式,例如中介者模式,外观模式,MVC MVVM 模式

    • 单例模式
      能确保在程序运行期间只有一份实例,使用简单,方便全局的状态和资源管理,缺点是这个对象的生命周期过长,常驻内存,增加了内存的开销,系统的[UIApplication sharedApplication]就是一个例子
    • 观察者模式
      通常适用于对象之间一对多的依赖关系时,例如通知中心 kvo 等,任何位置都可以发送,注册观察这对象可以就可以接受,但也要注意过多的注册和发送会导致的一些问题
    • 代理模式
      最用户实现对象之间的通信和解耦,常见的就是UITableview UIcollectionView 通过delegate ,但是也会导致代码分散,可能增加了阅读的理解和难度
    • 工厂模式
      适用于根据不同条件创建不同类型的对象的情况,但是当设计多个工厂或者产品是,也会增加代码的复杂性
      当然还有一些 例如中介者模式,通常用于几种处理多个对象之间的通信,避免对象之间的互相依赖,常用语及时通讯中的用户之间的发送下消息, 外观模式通常就是简化接口,便于客户端与子系统之间的访问和交互

    不同的的设计模式的目的就是,简化设计 避免造很多的轮子,,降低代码的耦合度,便于维护和扩展,增加代码的灵活性,促进代码的复用,以及增加代码可读性,提高工作效率

    MVC和MVVM
    model-即数据模型,view-视图展示,controller进行UI展现和数据交互的逻辑控制,MVVM 其实是一个mvc 的增强版,从controller的讲逻辑控制的代码分离到的viewmodel中用户管理view和model之间的逻辑控制,更加抽象,减少了controller 的复杂性,MVC 提供了明确的逻辑控制,而MVVM更注重数据的绑定和解耦吧

    2, cpu 以及GPU介绍,cpu 如何调用gpu

    cpu是中央处理器,主要负责大多数的计算和逻辑控制,适用于顺序执行的任务以及一些复杂逻辑的运算,在ios中通常用户程序的逻辑控制,数据处理ui交互,以及一些一般计算任务
    gpu是图形处理器,最初设计用户处理图形和渲染任务,更擅长并行的计算,在ios中通常用用于图形渲染,图像处理,
    iOS主要是通过 UIKit,core animation, metail , scencekit 等底层库通过cpu 将指令传输到gpu进行渲染和处理

    • UIkit 是iOS的UI框架,负责用户界面,core animation 是底层图形渲染引擎,通过UIkit cpu 处理ui事件,将界面元素传递给 core animation 再转换成gpu 可处理的格式,交给gpu 渲染
    • Metal 是Apple的低级图形和计算api,允许开发人员直接与GPU交互,可以直接创建队列 缓冲区 着色器 计算管线等参数,直接发送到GPu
    • OPen gl cpu能通过 OpenGL ES 传递指令到GPU
    • SceneKit Sprite kit,是3D 和 2D的高级框架,基于metal实现的

    3,Get 和 Post的区别,http 个版本有什么区别,?http协议和Tcp 协议有什么区别

    Get 和 post 是http协议中的两种请求方法,都用于客户端与服务器之间数据传输,区别在于

    • get多用于资源和数据的请求,post常用语提交数据或者操作
    • 数据的传输,get 是明文的通过拼接url 提交,有长度限制,易于缓存,而post将数据放在body中,通常用户较大数据或者铭感数据的交互
    • get 请求是幂等的,也就是说多次请求不会修改服务器数据,结果是一直的,而post不是

    http 是应用层协议,定义客户端和服务器之间的通信规则,报错请求/响应的格式,方法状态码等
    https 相对于HTTP在安全性能上通过SSL/TLS进行了增强,对数据进行了加密,和认证

    http和https 的区别
    • 安全性上,http是明文,https 是使用了加密确保了数据的安全
    • 认证,http不提供认证机制,https 使用了证书验证了服务器的身份
    • 性能上说,由于https 需要加密和认证,性能稍低于https,但是现代技术使得这个差异不大
    • 端口,http 使用的是80端口,https 使用的是443端口
    • 应用场景上,https 通常适用于更高安全性的场景,如电子商务,网上银行等 http更多用于不涉及敏感信息的场景
    http 特点
    • 无状态,每个请求都是独立的,服务端不记录客户端状态,可以使用session cookie 维持状态
    • 面向文本,使用明文传输,通信内容不加密
    • 多重方法,支持 get post put delete 等多种方法,进行请求
    • 是一种请求-响应的模式
    https 特点
    • 加密,使用了ssl/tls 对传输内容进行了加密,防止数据被窃听
    • 认证,使用了数字证书,验证了服务器身份,防止中间人攻击或者伪造服务器
    • 数据完整性,通过消息验证码(MAC)确保了数据在传输过程中的没有被篡改
    • 安全的请求-响应,https 是基于http 的请求-响应模式,但在通信内容的传输上过程中时安全的

    tcp 是传输层协议,负责数据的传输,包括对数据报的分段,传输,重传确认等
    在http1/2中,客户端和服务器是tcp进行的通信,http3是基于QUIC协议,QUIC是基于UDP的传输协议,是结合TCP和UDP的一种传输协议

    3次握手和4次挥手是描述网络协议中的链接建立和中止的过程,特别是tcp

    • 三次握手
      确保双方都同意连接,并且收到序列号,避免网络问题引起的错误连接
      SYN
    • 客户端向服务器发送SYN报文,表示建立想建立链接,并包含一个初始化序列号
      SYN-ACK
    • 服务端收到SYN之后,回应一个SYN-ACK报文,表示接受链接请求,同时也发送一个自己的初始化序列号
      ACK
    • 客户端收到SYN-ACK报文的之后,发送一个ACK报文,确认自己收到了服务器的序列号,表明连接的可靠建立,做了数据传输的准备
    • 四次挥手
      关闭链接过程,确认双方都能正常释放资源,避免数据丢失

    FIN

    • 客户端向服务器发送Fin报文,表明希望关闭链接,并且中止数据的数据的发送
      ACK
    • 服务器收到FIn后,回应一个ACK报文,确认客户端请求,这时候服务器可能还有数据要发送
      FIN
    • 服务器处理完剩余数据,想客户端发送FIN报文 ,表示服务器也希望关闭连接
      ACK
    • 客户端收到FIN,发送一个ACK报文,确认关闭请求,此时TCP连接才算中止

    4.内存缓存策略有哪些,NSCache 使用的是什么缓存策略

    • FIFO(first in first out )
      按照收据进入缓存的时间顺序,最先进入的最先被淘汰
    • LIFO (last in first out)
      最先进入最后被淘汰
    • LRU (last rencetly used ) 时间有限
      最近最少使用的数据先淘汰,维护一个访问时间排序的列表,每次访问更新,最少使用的排在最后
    • LFU (last frequtly used)访问优先
      淘汰访问次数最少的数据,通常使用计数器记录数据的访问评率
    • ARC
      根据LRU LFU 的有点动态调整的策略
    • TTL (time to live)
      为每个缓存数据设置有效期,过期自动淘汰

    NSCache 应该使用的LRU,有内存压力下,淘汰最近最少使用的数据,还支持自动内存管理,及自动释放数据环节内存压力,还可以兹定于缓存限制,线程安全,支持弱应用,能够保证对象的自动释放

    5,图片格式有哪些,有什么区别

    常见的图片格式有 jpg,png,bmp ,TiFF,webp,svg等,JPEG适用于照片和复杂图像,PNG适用于需要透明度的图像,GIF常用于简单动画,BMP 和 TIFF适用于高质量图像,webp 适用于网页图片,svg适用于矢量图和可缩放的图像。

    6,如何计算一个像素点的大小以及一张图片的大小

    像素点的存储大小一般是 颜色深度除以8,颜色深度表示需要多少位来表示颜色,通常是8位 16位 24 或者32位,常用的RGB 是24位,红绿蓝各8位,而RGBA 这是32位 多了一个透明度,
    图片的代销这是宽度X高度X像素点大小 ,例如一张1920 * 1080的rgb颜色深度为24位, 图片大小为 1920 * 1080 * (24/8) = 2220800字节 约等于 8M

    相关文章

      网友评论

          本文标题:iOS 面试基础知识篇

          本文链接:https://www.haomeiwen.com/subject/jzslfjtx.html