大家好,感谢邀请,今天来为大家分享一下最新汇总:iOS开发面试必备题库的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
一次HTTP可以看作一个事务,其工作过程分为4步:
客户端与服务器建立连接后,客户端向服务器发送请求。服务器收到消息后,给出响应操作。客户端收到消息后,将其显示在屏幕上并断开连接。
2.说一下 http中的 get 和 post 区别?
get一般用于从服务器获取数据。 Post用于向服务器发送数据。 get参数拼接成url地址,post参数放在它的包体中。 Post 比get 稍微安全一些。 Secret get可以缓存并存储在浏览器中以供浏览。历史上
3. 一次完整的HTTP请求过程?当我们在浏览器的地址栏输入 "http://www.baidu.com,然后回车,回车这一瞬间到看到页面到底发生了什么呢?
域名解析- 发起TCP 3次握手- 建立TCP连接后发起http请求- 服务器响应http请求,浏览器获取html代码- 浏览器解析html代码并请求html代码资源(如js 、css、图片等)——浏览器渲染页面并将其呈现给用户
4.请求报文简要说明?
。请求消息主要包括:请求行、请求头、请求体。
请求行: 请求行包括请求方法(Method)、请求统一资源标识符(URI)和HTTP版本号。请求头:主要存储客户端想要给服务器的附加信息。 Host: 目标服务器的网络地址。 Accept: 让服务客户端知道客户端可以接收的数据类型,如text/html /Content-Length: 正文的长度等。 请求正文: 真正需要发送到服务器的数据010- 1010 响应消息也包括三部分: 响应行、响应头和响应实体
1、状态行:是服务器返回给客户端的状态信息,包括HTTP版本号、状态码以及状态码对应的英文名称。
2.响应头:附加信息与请求头类似
3、响应体:是服务器返回的真实数据
5.响应报文简要说明?
HTTP是一种面向对象的协议,属于应用层。 HTTP协议有五个主要特点:
支持客户端/服务器模式。简单、快速:客户端向服务器请求服务时,只需要传输请求方法和路径。常用的请求方法有GET、HEAD、POST。每种方法指定客户端和服务器之间的不同类型的联系。由于HTTP协议的简单性,HTTP服务器的程序体积很小,通信速度很快。灵活:HTTP 允许传输任何类型的数据对象。正在传输的类型由Content-Type标记(Content-Type是HTTP数据包中用于指示内容类型的标识符)。无连接:无连接的含义是限制每个连接只能处理一个请求。服务器处理完客户端的请求并收到客户端的响应后,就断开连接。这种方法可以节省传输时间。无状态:HTTP 协议是无状态协议。无状态意味着协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要先前的信息,则必须重新传输,这可能会导致每个连接传输的数据量增加。另一方面,当服务器不需要先前的信息时,响应速度会更快。
6.HTTP的特点有什么?
HTTP1.0定义了三种请求方法:GET、POST和HEAD方法。
HTTP1.1添加了五种新的请求方法:OPTIONS、PUT、DELETE、TRACE和CONNECT方法。
GET 请求指定页面信息并返回实体主体。 HEAD 与get 请求类似,只不过返回的响应中没有具体内容。它用于获取标头。 POST 将数据提交到指定的资源以处理请求(例如提交表单或上传文件)。数据包含在请求正文中。 POST 请求可能会导致创建新资源和/或修改现有资源。 PUT 将数据从客户端传输到服务器以替换指定文档的内容。 DELETE请求服务器删除指定的页面。 CONNECT HTTP/1.1 协议是为可以更改管道连接的代理服务器保留的。 OPTIONS 允许客户端查看服务器性能。 TRACE回显服务器收到的请求,主要用于测试或诊断。
7.常用的HTTP方法有哪些?
tcp(传输控制协议)是一种面向连接、可靠、基于字节流的传输层通信协议。它是专门为在不可靠的Internet网络上提供可靠的端到端字节流而设计的,面向字节流。建立连接时会有三次握手,数据传输过程中会有确认、窗口、重传和拥塞控制机制。数据传输完毕后,将断开连接以节省系统资源。
8.TCP是什么?
UDP(用户数据报协议)是与TCP相对应的协议。它是一种非面向连接的协议。它不与对方建立连接,而是直接向对方发送数据包! UDP适用于一次只传输少量数据、可靠性要求不高的应用环境。 UDP
9.UDP是什么?
TCP 面向连接(三向握手); UDP是无连接的,即发送数据之前不需要建立连接。 TCP提供可靠的服务。也就是说通过TCP连接传输的数据是无差错、不丢失、不重复、按顺序到达的; UDP 会尽最大努力来传送,即不保证可靠传送。 Tcp 使用校验和、重传控制和序列号识别。滑动窗口和确认响应可实现可靠传输。例如,数据包丢失时的重传控制也可以用于控制乱序数据包的顺序。 UDP比TCP具有更好的实时性和更高的工作效率。适用于需要高速传输和实时性的通信或广播通信。每个TCP连接只能是点对点的; UDP支持一对一、一对多、多对一和多对多交互通信。 TCP需要较多的系统资源,而UDP需要较少的系统资源。
10.TCP和UDP区别
所谓三次握手,就是建立TCP连接。意味着建立TCP连接时,客户端和服务器总共需要发送3个数据包来确认连接的建立。
第一次握手:客户端向服务器发送syn包(syn=j),并进入SYN_SEND状态,等待服务器确认;第二次握手: 服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时还发送SYN包(syn=k),即SYN+ACK包。此时服务器进入SYN_RECV状态;第三次握手: 客户端收到服务器发来的SYN+ACK 数据包,并发送确认包ACK(ack=k+1),此数据包发送后,客户端和服务器进入ESTABLISHED 状态,完成三次握手。握手过程中传输的数据包不包含数据。三次握手完成后,客户端和服务器正式开始传输数据。参考:https://www.jianshu.com/p/2eec9eea967b
11.什么是三次握手?
由于TCP 连接是全双工的,因此必须单独关闭每个方向。原理是当一方完成其数据发送任务后,可以发送FIN来终止该方向的连接。收到FIN仅意味着该方向没有数据流。 TCP连接在收到FIN后仍然可以发送数据。先执行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
TCP 客户端发送FIN 来关闭从客户端到服务器的数据传输。当服务器收到这个FIN时,它会发回一个ACK,其确认号等于收到的序列号加1。与SYN一样,FIN也会占用一个序列号。服务器关闭客户端的连接并向客户端发送FIN。客户端发回ACK报文进行确认,并将确认序列号设置为收到的序列号加1。
12.什么是四次挥手?
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer或Hypertext Transfer Protocol Secure)是一种HTTP通道旨在安全。简单来说,它是HTTP 的安全版本。即在HTTP的基础上增加了SSL层。 HTTPS的安全基础是SSL,因此加密的细节需要SSL。
13.什么是HTTTS?
客户端向服务器发起https请求(需要申请ca证书),并将证书(包含公钥)返回给客户端。客户端使用根证书来验证服务器证书的有效性并确认身份。客户端生成对称密钥。通过公钥传递密码,发送到服务器,使用私钥解密,得到对称密钥,使用对称加密的数据进行通信
14.HTTPS连接过程简述
对称加密是最快、最简单的加密方式(加密)和解密(decryption)使用相同的秘密密钥(secret key)。对称加密算法有很多种。由于它非常高效,因此被广泛应用于许多加密协议的核心。
常见的有AES、DES、3DES等。
15.什么是对称加密
非对称加密为数据加密和解密提供了一种非常安全的方法。它使用一对密钥:公钥和私钥。私钥只能由一方安全保管,不能泄露,而公钥可以发送给任何有请求的人。非对称加密使用一对密钥中的一个进行加密,而解密则需要另一个密钥。
常见: RSA算法
16.非对称加密
HTTPS和HTTP的主要区别有以下四点:
https协议需要向CA申请证书。一般免费证书很少,需要付费。 http是超文本传输协议,信息以明文形式传输,而https是安全的SSL加密传输协议。 http 和https 使用完全不同的连接方法并使用不同的端口。前者是80,后者是443。http连接非常简单,无状态; HTTPS协议是由SSL+HTTP协议构建的可以进行加密传输和身份认证的网络协议。它比http协议更安全。
17. http 与https区别
Session是服务端用来认证和跟踪用户数据结构,通过判断客户端发送的信息来确定用户,并确定用户的唯一标识就是客户端发送的SessionId。 Cookie是客户端用来保存用户信息的机制。在第一次会话期间,http协议会在Cookie中记录一个SessionID。会话ID 在每个会话期间发送到服务器。 Session一般用于用户认证。默认情况下它存储在服务器上的文件中。当然,也可以存储在内存中。如果客户端禁用了数据库中的cookie,客户端将用URL重写它。技术,即在会话期间在URL末尾添加SessionID,发送到服务器
18.说一下Session 和 Cookie 的概念?
。网络上的两个程序通过双向通信连接交换数据。该连接的一端称为套接字。建立网络通信连接至少需要一对端口号(套接字)。 Socket本质上是一个编程接口(API),它封装了TCP/IP。 TCP/IP还为程序员提供了用于网络开发的接口。这就是Socket编程接口; HTTP 是一种提供封装或显示数据方式的汽车。具体形式; Socket是引擎,提供网络通信的能力。
19.什么Socket?
域名系统(DomainNameSystem,缩写:DNS)是[Internet]的一项服务。作为一个将域名和IP地址相互映射的分布式数据库,它可以让人们更轻松地访问[互联网]
20.什么是DNS?
DNS劫持又称(域名劫持),是指在被劫持的网络范围内拦截域名解析请求,对请求的域名进行分析,在审核范围之外释放请求,否则返回虚假的IP地址或什么也不做。使请求无响应的后果是无法访问特定网络或者访问的地址是假URL。
解决方案: 使用HTTPDNS
21.DNS劫持问题?
OSI模型有7层结构,每层可以有多个子层。 OSI的7层从上到下分别是7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层;其中,上面的层(即第7、6、5、4层)定义了应用程序的功能,下面的三层(即第3、2、1层)主要面向终端——数据通过网络流向终端。
应用层
网络服务和最终用户之间的接口。
这些协议包括: HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层
数据表示、安全性、压缩。 (五层模型中已合并到应用层)
格式包括JPEG、ASCll、DECOIC、加密格式等。
3、会话层
创建、管理和终止会话。 (五层模型中已合并到应用层)
对应于主机进程,是指本地主机和远程主机之间正在进行的会话传输层。
定义传输数据的协议端口号,以及流量控制和错误检查。
这些协议是: TCP UDP。数据包一旦离开网卡,就进入网络传输层。
进行逻辑地址寻址,实现不同网络之间的路径选择。
这些协议有: ICMP IGMP IP (IPV4 IPV6) ARP RARP 数据链路层
建立逻辑连接,执行硬件地址寻址、错误检查[2]等功能。 (协议由底层网络定义)
将位组装成字节,然后组装成帧,使用MAC 地址访问媒体,检测到错误但不纠正。物理层
建立、维护和断开物理连接。 (协议由底层网络定义)
22.网络七层是什么?
尝试使用https。不要传输明文密码。 Post 并不比Get 更安全。不要使用301跳转。 HTTP请求都带MAC。 HTTP 请求使用临时密钥。 AES 使用CBC 模式。
23.项目中网络层如何做安全处理?
通过HTTP,可以很方便的实现断点续传下载。
断点续传主要依赖于HTTP header中定义的Range。应用程序可以通过某个返回或者部分HTTP请求获取失败的资源来恢复下载资源。当然,并不是所有的风服务器都支持Range,所以不支持Range的我们就不考虑了。范围以字节为单位计算。请求时不要给我结束字节数,因为请求者不一定知道资源的大小。通过这个关键字,你可以告诉服务器返回什么数据给我。
例如:
bytes=500-999 表示第500 到第999 个字节bytes=500- 表示从第500 个字节开始的所有字节。然后我们根据服务器返回的数据将获取到的数据数据拼接到文件的后面。已实现断点续传。
24.断点续传如何实现?
WebSocket是应用层第七层的应用层协议。它必须依赖HTTP协议来执行握手。握手成功后,数据直接从TCP通道传输,与HTTP无关。
Websocket数据传输采用帧的形式。例如,一条消息会被分成几个帧并按顺序传输。这样做有几个好处:
大数据的传输可以分片传输,无需考虑数据大小导致的长度不足标志。与HTTP chunk一样,可以在传输数据的同时生成消息,从而提高传输效率。
简而言之:WebSocket的实现分为握手、数据发送/读取、关闭连接。
25.什么是WebSocket,解决了什么问题?
Heartbeat用于检测TCP连接双方是否可以使用客户端发起心跳Ping(一般是客户端)。如果设置为10秒,没有收到回调,则说明服务器或者客户端出现问题。这时候我们就需要主动断开连接。
26.什么是心跳?
解决方法:将公钥放入数字证书中。只要证书可信,公钥就可信。
27.如何保证公钥不被篡改?
解决方案:对于每个会话,客户端和服务器都会生成一个“会话密钥”(session key)并用它来加密信息。由于“对话密钥”是对称加密的,运算速度非常快,而服务器公钥(非对称加密)仅用于加密“对话密钥”本身,减少了加密运算所消耗的时间。
28. 公钥加密计算量太大,如何减少耗用的时间?
使用单例创建线程并将其添加到runloop中,并添加NSMachPort以防止新创建的线程因没有活动而直接退出。 [使用MachPort 和RunLoop 来保持线程存活]
为什么AF3.x 不再需要常驻线程?
NSURLConnection的一大痛点是发起请求后,这个线程不能随风而去,而是需要等待回调。
NSURLSession发起的请求不再需要在当前线程中回调代理方法!你可以指定回调的delegateQueue,这样我们就不必为了等待代理回调方法而保持线程处于活动状态。
同时请注意,指定接收回调的Queue的maxConcurrentOperationCount设置为1。这里的目的是为了让并发请求能够串行回调。
为什么要串行回调?
- (AFURLSessionManagerTaskDelegate *)delegateForTask:(NSURLSessionTask *)任务{
NSParameterAssert(任务);
AFURLSessionManagerTaskDelegate *委托=nil;
【自锁锁】;
//锁定要访问的资源,防止数据混乱
delegate=self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)];
[自锁解锁];
返回委托;
}这里锁定了self.mutableTaskDelegatesKeyedByTaskIdentifier的访问,保证多线程环境下的数据安全。
面试官可能会问你:为什么AF3.0需要设置self.operationQueue.maxConcurrentOperationCount=1;但AF2.0没有?
---
AF3.0的operationQueue用于接收NSURLSessionDelegate回调。鉴于一些多线程数据访问的安全考虑,设置maxConcurrentOperationCount=1,以达到串行回调的效果。
---
AF2.0的operationQueue用于添加操作和并发请求,所以不要设置为1。
29.AF中常驻线程的实现
XMPP 是一种基于XML 的协议。 XMPP 是一个去中心化的通信网络。可扩展性强。 XMPP中定义了三种角色:客户端、服务器和网关。这三者中的任何两个之间都可以进行双向通信,并且它们的传输是XML 流。 XMPP 的工作原理: 从一个客户端到另一客户端的所有消息和数据都必须通过服务器。 XMPP 允许在客户端和服务器端建立并行TCP Socket 连接。持久套接字连接使XMPP 能够在带宽和处理资源使用方面更有效地支持高级的在线应用程序。概括:
XMPP 的核心部分是一种流协议,它通过网络以片段形式发送XML。该流协议是XMPP即时消息指令传输的基础。也是一个非常重要的可以进一步利用的网络基础协议。所以可以说XMPP使用TCP来传输XML流。
30. XMPP是什么?
MAC地址是媒体访问层使用的地址。也称为物理地址、硬件地址或链接地址。当网络设备制造商生产硬件时,它被写入到硬件内部。 IP是指使用TCP/IP协议分配给主机的32位地址。 IP 地址由四个用点分隔的8 位组组成。例如,192.168.0.1 是一个IP 地址。这种写法称为点分十进制格式。 IP地址相当于你现在的地址,会随着你的移动而改变,而mac地址相当于你的身份证号等个人信息,是唯一的,不会改变。
31.MAC地址和ip地址的区别?
需要做的就是将服务器伪装成客户端,将客户端伪装成服务器。具体来说
拦截真实客户端的HTTPS请求,假装客户端向真实服务器发送HTTPS请求,接受真实服务器响应,并利用Charles自己的证书伪装服务器将数据内容发送给真实客户端。当没有配置HTTPS证书时,即使是HTTPS请求,也可以Capture数据。如果APP中配置了https证书,则不会捕获数据。
32 .抓包工具抓取HTTPS的原理
Ping也属于一种通信协议,是TCP/IP协议的一部分。使用“ping”命令检查网络是否连通。
PING(Packet Internet Groper),互联网数据包浏览器,用于测试网络连接量的程序。 Ping发送ICMP(Internet Control Messages Protocol),即互联网消息控制协议;回显请求消息被发送到目的地并报告是否收到所需的ICM 回显(ICMP 回显响应)。该命令用于检查网络是否畅通或者网络连接速度。作为生活在网络上的管理员或黑客,ping命令是必须掌握的第一个DOS命令。它使用的原理是这样的:利用本机IP地址在网络上的唯一性,向目标IP地址发送消息。一个数据包,然后要求对方返回一个相同大小的数据包,以确定两个网络机器是否连接以及延迟是多少。
包含|原地址
33.Ping是什么协议
再次说一声,对于答案,不一定都合适,欢迎大家积极讨论;整理不易,如果您觉得还不错,麻烦在文末 “点个赞” ,或者留下您的评论“Mark” 一下,谢谢您的支持
结语
BAT等各个大厂iOS面试真题+答案大全 iOS面试题大全-附答案 iOS中高级开发必看的热门书籍(经典必看)
好了,文章到这里就结束啦,如果本次分享的最新汇总:iOS开发面试必备题库和问题对您有所帮助,还望关注下本站哦!
【最新汇总:iOS开发面试必备题库】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于找到一个更新的游戏了,准备好好背知识点!
有12位网友表示赞同!
iOS面试难到爆炸,希望这篇文章能给我一些指引
有9位网友表示赞同!
感觉自己离iOS开发越来越远了,看了这篇标题好期待可以更进一步!
有11位网友表示赞同!
哪个平台可以下载这份 iOS 面试题文档?
有10位网友表示赞同!
我最近在准备iOS面试,希望能在这份资料里找到一些重点突破口!
有11位网友表示赞同!
iOS的面试真的特别考察实战能力,这篇文章能帮我了解一下哪些技能最重要吗?
有9位网友表示赞同!
做iOS开发需要学习的东西真多啊,这份题目整理真是及时雨!
有7位网友表示赞同!
ios面试真的很难,需要提前准备好各种知识点。
有17位网友表示赞同!
感觉自己备考的知识太片面了,希望这份整理能够全面补充我的经验!
有14位网友表示赞同!
想要跳入iOS开发领域,这篇文章绝对是必看资料!
有10位网友表示赞同!
这些面试题内容够生动的吗? 想更直观地了解一下实际应用情况。
有14位网友表示赞同!
这篇整理能不能包括最新版本的 iOS 知识点?
有13位网友表示赞同!
希望能看到一份涵盖各个模块的面试题整理。
有20位网友表示赞同!
iOS开发越来越热门了,这份面试题整理真是太棒啦!
有12位网友表示赞同!
看完标题就忍不住摩拳擦掌想去准备iOS面试了!
有18位网友表示赞同!
分享一下你从哪些角度入手准备iOS面试,这篇文章看起来很不错。
有18位网友表示赞同!
希望这些面试题能够帮助我更好地理解iOS开发的原理。
有6位网友表示赞同!
学习iOS开发是一段奇妙且充满挑战的过程,这份整理值得期待!
有13位网友表示赞同!
想了解更多关于iOS开发的信息,除了这篇文章还有什么资源推荐?
有15位网友表示赞同!
准备一份高质量的面试题清单太不容易了,佩服作者的用心!
有16位网友表示赞同!