iOS面试题:socket 连接和 Http 连接的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS面试题:socket 连接和 Http 连接的区别相关的知识,希望对你有一定的参考价值。

参考技术A

http 是基于 socket 之上的。 socket 是一套完整的 tcp,udp 协议的接口。

TCP/IP是传输层协议 ,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如何包装数据。

Socket是对TCP/IP 协议的封装 ,它本身不是协议,而是一个调用接口,通过 Socket ,我们才能使用 TCP/IP协议 。

http 是客户端用 http 协议进行请求,发送请求时候需要封装 http 请求头,并绑定请求的数据,服务器一般有 web 服务器配合。 http 请求方式为客户端主动发起请求,服务器才能给响应,一次请求完毕后则断开连接以节省资源。服务器不能主动给客户端响应。 iPhone 主要使用的类是 NSUrlConnection 。 socket 是客户端跟服务器直接使用 socket“套接字” 进行拼接,并没有规定连接后断开,所以客户端和服务器可以保持连接,双方都可以主动发送数据。一般在游戏开发或者股票开发这种即时性很强的并且保持发送数据量比较大的场合使用。主要类是 CFSocketRef。

更多: iOS面试题 答案合集

Java高频面试题

网络相关

1.http1.0和http1.1的区别?

2.http和https的区别?

3.TCP三次握手和四次握手的流程,为什么断开连接是四次,如果握手只有两次会出现什么?

为什么是四次:服务器收到客户端的FIN报文时,仅仅表示客户端没有数据再发送给服务端了,但是服务端可能还有数据没有完整发送给了客户端,所以不会马上关闭socket连接,等数据发送完毕后再发送FIN报文给客户端,告诉客户端同意关闭连接。

4.TCP/IP如何保证可靠性,数据包有哪些数据组成?

5.http get请求和post请求的区别?以及数据包格式?

6.长连接和短连接?

7.TIME_WAIT和CLOSE_WAIT?

8.说出你知道的几种http响应码?

 

缓存相关

1.redis持久化的几种方式,优缺点是什么,怎么实现的?

2.redis的缓存失效策略?

3.缓存穿透和缓存雪崩的解决办法?

4.redis集群,高可用,原理?

5.mysql里有20万条数据,如何保证redis中的数据都是热点数据?

6.redis的数据淘汰策略?

7.redis的并发竞争问题如何解决?了解redis事务的CAS操作吗?

 

数据库相关

1.MySql InnDB存储的文件结构?

2.索引树是如何维护的?

3.数据库自增主键可能的问题?

4.MySql的几种优化?

5.MySql为什么使用B+树?

6.数据库锁表的相关处理?

7.索引失效的场景?

8.高并发下如何做到安全的修噶同一行数据,乐观锁和悲观锁是什么?InnDB的行级锁有哪两种,解释其含义?

9.数据库会死锁吗,举一个例子,mysql如何解决死锁?

 

分布式相关

1.接口的幂等性概念?

2.消息中间件如何解决消息丢失的问题?

3.对分布式事务的理解?

4.如何实现负载均衡,有哪些算法可以实现?

  https://i.cnblogs.com/EditPosts.aspx?postid=10578883

5.zookeeper的用途,选举的原理是什么?选举的时候能提供服务吗?

6.zookeeper的原理和适用场景?

7.zookeeper的watch机制?

8.redis/zk节点宕机如何处理?

9.分布式集群下如何做到唯一序列号?

10.如何做一个分布式锁?

11.用过哪些MQ,怎么用的?和其他MQ比有什么优缺点,MQ的连接是线程安全的吗?

12.MQ系统的数据如何保证不丢失?

13.列举你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题?

 

以上是关于iOS面试题:socket 连接和 Http 连接的区别的主要内容,如果未能解决你的问题,请参考以下文章

python 网络编程面试题

面试题:每发送一个http请求就要建立一个tcp连接吗(非持久连接/持久连接)

大厂面试题:http 为什么要有keap-alive?http长连接和短连接详解

使用 HTTP keep-alive 和 websockets (socket.io) 时的 TCP 连接数

计算机网络面试题

更改请求标头 SOCKET.IO(无需断开连接和重新连接)