iOS基础面题试之网络篇

前言:年底了,木木提醒一下正在找工作的小伙伴们(特别是女孩子),当心骗子。找工作的时候一定要注意地点啥的,别上当受骗了~

网络七层协议(http,tcp/ip处于哪一层)?

  • (由下至上)物理层->数据链路层->网络层->传输层->会话层->表示层->应用层
  • http属于应用层协议
  • tcp/ip属于传输层协议

什么是HTTP?

超文本传输协议,是Web联网的基础

什么是HTTPS?

  • HTTPS = HTTP + SSL/TLS, 也就是在HTTP上又加了一层处理加密信息的模块, 传输的数据都是加密后的数据
  • SSL
  • TLS

HTTP与HTTPS的区别?

  • 使用https协议需要申请证书, 需要交费
  • http是明文传输, https则是具有安全性的加密传输
  • 两者使用的是完全不同的连接方式

HTTPS的加密原理

  1. 服务器端用非对称加密(RSA)生成公钥和私钥
  2. 然后把公钥发给客户端, 服务器则保存私钥
  3. 客户端拿到公钥后, 会生成一个密钥, 这个密钥就是将来客户端和服务器用来通信的钥匙
  4. 然后客户端用公钥对密钥进行加密, 再发给服务器
  5. 服务器拿到客户端发来的加密后的密钥后, 再使用私钥解密密钥, 到此双方都获得通信的钥匙

TCP和UDP的区别?

  • 相同点
    • 都属于传输层协议
  • 不同点
    • TCP面向连接, 提供可靠传输, UDP面向无连接, 无法提供可靠性传输
    • TCP必须要和服务器交互,需要和服务器进行三次握手和四次挥手

GET和POST的区别

  • GET通常用于从服务器获取数据,POST通常用于向服务器发送数据
  • 相同点:
    • 都可以用于请求数据
  • 不同点:
    • 上传参数的方式不一样
      • GET的参数是追加到url后面
      • POST的参数是添加在HttpBody中的
    • 对上传的参数的大小限制不一样
      • GET有限制
      • POST没有限制
    • 安全性不一样
      • POST比GET更安全
    • 效率不一样
      • GET效率高于POST

md5和base64是什么,有什么区别?

  • md5是不可逆的加密算法,可以把任意长的字符串加密为固定长度的字符串
  • base64是可逆的加密算法, 一般用于url的编码

简单谈谈UDP和TCP/(http和https)

  • 两者都是传输层的协议, 可以应用于即时通讯
  • 两者的区别
    • TCP面向连接,安全可靠,
    • TCP需要和服务器的Socket对接, 连接过程需要三次握手
    • UDP面向无连接, 不可靠,
    • UDP不需要服务器也能进行数据传输, 适合用于高速传输和实时性较高的广播通信

NSURlConnection断点下载的思路

  • 先判断是否已经下载完成
  • 已下载完成的情况:
  • 未完成下载的情况:
    • 若根本没下载过,则从头下载
    • 若下载了一部分,先读取下载了多少数据,在告诉服务器从哪个地方开始继续下载
    • 核心代码

SSL加密流程

  • 服务器用非对称加密(RSA)产生一对公钥和私钥
  • 服务器将公钥发送给客户端(即使消息被拦截也需要用私钥解密,私钥不会离开服务器)
  • 客户端收到公钥后,用对称加密产生一个密钥,并且用公钥加密传回给服务器
  • 服务器用私钥解密,得到密钥,这个密钥就是以后通信的钥匙

网络加密方式有哪些,各自的原理

  • md5(哈希算法):把任意长度的字符串加密成一个128bit的大整数,并且是不可逆的
  • RSA(非对称算法加密):产生一对非对称的公钥和私钥,公钥加密,私钥解密。私钥加密,公钥解密
  • AES(对称加密):加密和解密的密钥是同一个
  • base64(现代密码学的基础):原本8 bit一组的数据改为6bit一组,不足的地方补0,每两个0用一个 = 表示

说下你对Socket的理解?

  • Socket就是对TCP/IP协议的封装,一组接口

对xmpp的理解

  • xmpp是基于XML流传输协议,它用于即使消息以及在线现场侦探。
  • XMPPStream用于连接服务器,设置主机名,服务器域名,设置代理,注册、登陆和发消息所有时间的回调。
  • 通过jid与服务器进行连接。连接成功做登陆或注册的操作。用XMPPPresence做上线的操作。
  • 通过发送命令获取好友。
  • XMPPMessage类做消息的发送与消息的获取。
  • XMPPRoster负责好友的添加,好友的获取。
  • XMPPRoom 提供多用户的聊天支持

客户端安全性处理方式?

  • 敏感数据加密,存储到keyChain

网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?

  • 图片的名字就是url的md5.所以判断url的md5是否存在本地即可

现在有一个资源网址(资源是什么未知),要请求这个资源你会考虑哪些问题?

  • 根据响应头判断数据类型(conten-type)
  • 如果文件比较大,可以考虑断点下载
  • 子线程中下载
  • 如果加密了要进行相应的解密

客户端安全性处理方式?

  • 敏感数据加密,存储到keyChain

iOS缓存方案?

  • 网络优先:开始总是从网络获取,如果获取失败,从本地获取。
  • 本地优先:在一段时间内从本地获取,当超过这个时间,然后重新请求网络数据。
  • 混合(智能):打开程序先从本地获取展示,然后请求数据,请求完成后刷新界面。

仅供木木学习,以及有需要的伙伴们阅读~可转载,不可复制粘贴哟~

你可能感兴趣的:(iOS基础面题试之网络篇)