iOSiOS笔试面试iOS面试题

可能碰到的iOS笔试面试题(16)--网络

2016-05-04  本文已影响2966人  b485c88ab697

网络

http请求方式?

通常,HTTP的请求方式有3种,分别是:POST、GET、HEAD。POST和GET方法是用于数据发送的。

POST:它将要发送的数据单独放在一个流中进行发送,而不是附加在URL地址后面,这样做的好处是这些数据不会出现在URL地址中。

GET:它将要发送的数据直接添加在URL后面,如:www.sina.com.cn?username=""&password="",这样的好处是可以直接将数据加在URL后,而不需在用另外的流来发送这些数据,但是缺点也显而易见,它将用户的信息显示出来了。

HEAD:它是请求资源的元数据方法。在具体的应用中,我暂时还没遇到过,也不去对它进行研究,需要是在学习。

Http定义了与服务器交互的不同方法,最基本的方法有?

socket编程简述

它是基于TCP/IP协议,Socket就是一个可以连通网络上不同计算机程序之间的管道,把一堆数据从管道的A端扔进去,则会从管道的B端(也许同时还可以从C、D、E、F……端冒出来)。管道的端口由两个因素来唯一确认,即机器的IP地址和程序所使用的端口号。

Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也首先创建套接字,然后将该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。如同读出文件中的数据一样。

TCP/IP的socket提供下列三种类型套接字。 流式套接字、数据报式套接字、原始式套接字。

客户端编程步骤:

1:加载套接字库,创建套接字(WSAStartup()/socket());

2:向服务器发出连接请求(connect());

3:和服务器端进行通信(send()/recv());

4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。

常用第三方库:1,Asyncsocket库

asihttp代码原理,异步请求的原理,异步请求最大数目,为什么只能这么多?

ASIHTTPRequest是一个简易使用的类库,通过包装CFNetwork API 来简化 和服务器端的通讯. 它编写的语言是Objective-C 能够应用于Mac OS X and iPhone 平台的应用程序.

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕这个数量是跟cpu有关的,并发性取决于cpu核数,每个核只能同时处理一个任务.4核cpu理论上可以并发处理4个任务,如果按http来算就是4个请求,但是cpu是抢占式资源,所以一般来说并发量是要根据任务的耗时和cpu的繁忙度来计算4个左右只是个经验值你开10个短耗时的任务和几个长耗时任务的效率是不同的。

JSONKit、SBJson、TouchJSON和原生的区别?

JSONKit、SBJson、TouchJSON(性能从左到右,越右越差,主要就是性能上的差别)

App需要加载超大量的数据,给服务器发送请求,但是服务器卡住了如何解决?

1> 设置请求超时
2> 给用户提示请求超时
3> 根据用户操作再次请求数据

HTTP的通信的 发送请求、接收响应 包含哪些内容?OC中是怎样实现的?

  1. 请求:一个请求包含以下内容:
  2. 请求行:包含了请求方法、请求资源路径、HTTP协议版本
    GET /XXServer/resources/images/1.jpg HTTP/1.1
  3. 请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息
    • Host: 192.168.1.105:8080 // 客户端想访问的服务器主机地址
    • User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0
      // 客户端的类型,客户端的软件环境
    • Accept: text/html, / // 客户端所能接收的数据类型
    • Accept-Language: zh-cn // 客户端的语言环境
    • Accept-Encoding: gzip // 客户端支持的数据压缩格式
  4. 请求体:客户端发给服务器的具体数据,比如文件数据
  5. OC中请求NSURLRequest
    • 发送给服务器的请求包含:
    • 请求行: 包含了请求方法、请求资源路径、HTTP协议版本
    • 请求头: 对客户端的环境描述、客户端请求的主机地址等信息
    • 请求体: 客户端发给服务器的具体数据
    • 默认超时时常:60s
  6. 响应:
    • 一个响应包括:
    • 状态行:包含了HTTP协议版本、状态码、状态英文名称 HTTP/1.1 200 OK
    • 响应头:包含了对服务器的描述、对返回数据的描述
    • Server: Apache-Coyote/1.1 // 服务器的类型
    • Content-Type: image/jpeg // 返回数据的类型
    • Content-Length: 56811 // 返回数据的长度
    • Date: Mon, 23 Jun 2014 12:54:52 GMT // 响应的时间
    • 实体内容:服务器返回给客户端的具体数据,比如文件数据
    • OC中响应用NSURLRespose:返回给客户端的回应包含:
      • 状态行 : 包含了HTTP协议版本、状态码、状态英文名称

      • 响应头 : 包含了对服务器的描述、对返回数据的描述

      • 实体内容:服务器返回给客户端的具体二进制数据

      • 常用属性: expectedContentLength (下载时返回文件的长度)
        suggestedFilename(建议保存的文件名)

http 的post与get区别与联系,实践中如何选择它们?

GET POST
用途 从服务器上获取数据 向服务器传送数据提交方式
服务器解析 Request.QueryString获取变量的值 Request.Form获取提交的数据
数据大小 最大1024字节 无限制
安全性 URL中能看到提交的数据 隐藏在请求头中

知道TCP/UDP吗?说说关于UDP/TCP的区别?

TCP UDP
发送与接收 安全送达 只管发送
建立连接 是(三次握手) 否(有数据包,无需连接)
数据大小 无限制 每个数据报64k
可靠性 可靠 不可靠
速度 慢(三次握手才能完成连接 快(无需连接)
应用 流媒体 qq

什么是三次握手与四次挥手?

分析json、xml的区别?json、xml解析方式的底层是如何处理的?

  1. Json与xml的区别:

    • 可读性方面:基本相同,xml的可读性比较好
    • 可扩展性方面:都具有很好的扩展性
    • 编码难度方面:相对而言:JSON的编码比较容易
    • 解码难度:json的解码难度基本为零,xml需要考虑子节点和父节点
    • 数据体积方面:json相对于xml来讲,数据体积小,传递的速度跟快些
    • 数据交互方面:json与JavaScript的交互更加方面,更容易解析处理,更好的数据交互
    • 数据描述方面:xml对数据描述性比较好
    • 传输速度方面:json的速度远远快于xml
  2. JSON底层原理:

    • 遍历字符串中的字符,最终根据格式规定的特殊字符,比如{}号,[]号, : 号 等进行区分,{}号是一个字典 的开始,[]号是一个数组的开始, : 号是字典的键和值的分水岭,最终乃是将json数据转化为字典,字典中值可能是字典,数组,或字符串而已。
  3. XML底层原理:

    • XML解析常用的解析方法有两种:DOM解析和SAX解析。
    • DOM 采用建立树形结构的方式访问 XML 文档,而 SAX 采用的事件模型。
    • DOM 解析把 XML 文档转化为一个包含其内容的树,并可以对树进行遍历。
    • 使用 DOM 解析器的时候需 要处理整个 XML 文档,所以对性能和内存的要求比较高。
    • SAX在解析 XML 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。
    • SAX 对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。
  4. (补充)其他解析方式有自定义二进制解析,就是按字节去解析,电话会谈就是如此,还可以是字符串之间用特殊符号连接的数据,将此数据用特殊符号可以分割成所用数据。

http和scoket通信的区别?socket连接相关库,TCP,UDP的连接方法,HTTP的几种常用方式?

  1. http和scoket通信的区别:
    • http是客户端用http协议进行请求,发送请求时候需要封装http请求头,并绑定请求的数据,服务器一般有web服务器配合(当然也非绝对)。 http请求方式为客户端主动发起请求,服务器才能给响应,一次请求完毕后则断开连接,以节省资源。服务器不能主动给客户端响应(除非采取http长连接技术)。iphone主要使用类是NSUrlConnection。
    • scoket是客户端跟服务器直接使用socket“套接字”进行连接,并没有规定连接后断开,所以客户端和服务器可以保持连接通道,双方都可以主动发送数据。一般在游戏开发或股票开发这种要求即时性很强并且保持发送数据量比较大的场合使用。主要使用类是CFSocketRef。

通信底层原理(OSI七层模型)

all people seem to need date processing这一句话的意思是所有的人似乎都需要处理数据

| | |
| ------------ | |
| Application | all |
| Presentation | people |
| Session | seem |
| Transport | to |
| Network | need |
| Data| date |
| Physical| processing |

设计一套大文件(如上百M的视频)下载方案

HTTP协议的特点,关于HTTP请求GET和POST的区别?

HTTP协议的特点:
- HTTP超文本传输协议,是短连接,是客户端主动发送请求,服务器做出响应,服务器响应之后,链接断开。HTTP是一个属于应用层面向对象的协议,HTTP有两类报文:请求报文和响应报文。
- HTTP请求报文:一个HTTP请求报文由请求行、请求头部、空行和请求数据4部分组成。
- HTTP响应报文:由三部分组成:状态行、消息报头、响应正文。

即时聊天App不会采用的网络传输方式

A UDP
B TCP 
C HTTP 
D FTP
参考答案:D
理由:FTP是文件传输协议,是File Transfer Protocol的简称,它的作用是用于控制互联网上文件的双向传输,因此一定不会是即时聊天使用的;UDP是面向无连接的传输层协议,数据传输是不可靠的,它只管发,不管收不收得到;TCP是面向连接的,可靠的传输层协议;HTTP是超文本传输协议,对应于应用层,而HTTP是基于TCP的。

在App中混合HTML5开发App如何实现的。在App中使用HTML5的优缺点是什么?

在iOS中,通常是用UIWebView来实现,当然在iOS8以后可以使用WKWebView来实现.有以下几种实现方法:
通过实现UIWebView的代理方法来拦截,判断scheme是否是约定好的,然后iOS调用本地相关API来实现:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
在iOS7以后,可以直接通过JavaScripteCore这个库来实现,通过往JS DOM注入对象,而这个对象对应于我们iOS的某个类的实例。更详细请阅读:
OC JavaScriptCore与js交互
WKWebView新特性及JS交互
Swift JavaScriptCore与JS交互
可以通过WebViewJavascriptBridge来实现。具体如何使用,请大家去其它博客搜索吧!
优缺点:
iOS加入H5响应比原生要慢很多,体验不太好,这是缺点。
iOS加入H5可以实现嵌入别的功能入口,可随时更改,不用更新版本就可以上线,这是最大的优点。

介绍一下XMPP?有什么优缺点吗?

XMPP(Extensible Messaging and Presence Protocol,前称)是一种以XML为基础的开放式实时通信协议,是 经由互联网工程工作小组(IETF)通过的互联网标准。简单的说,XMPP就是一种协议,一种规定。就是说,在网络上传 东西,要建立连接,TCP/IP连接,建立后再传东西,而XMPP就是规定你传的东西的格式。XMPP是基于XML的协议。 优点
开放:
XMPP协议是自由、开放、公开的,并且易于了解。 而且在客户端 、 服务器 、 组件 、 源码库等方面,都已经各自有多种实现。 标准:
互联网工程工作小组( IETF )已经将Jabber的核心XML流协议以XMPP之名,正式列为认可的实时通信及Presence技术。 而XMPP的技术规格已被定义在RFC 3920及RFC 3921 。 任何IM供应商在遵循XMPP协议下,都可与Google Talk实现连接。 证实可用:
第一个Jabber(现在XMPP)技术是Jeremie Miller在1998年开发的,现在已经相当稳定;数以百计的开发者为XMPP技术而努 力。 今日的互联网上有数以万计的XMPP服务器运作着,并有数以百万计的人们使用XMPP实时传讯软件。
分散式:
XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有 中央主服务器。 任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。
安全:
任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自 带于核心XMPP技术规格中。
可扩展:
XML 命名空间的威力可使任何人在核心协议的基础上建造定制化的功能;为了维持通透性,常见的扩展由XMPP标准基金会 。 弹性佳:
XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。 多样性:
用XMPP协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域;用XMPP技术开发软件,资源及支持的 来源是多样的,使得使你不会陷于被“绑架”的困境。
缺点
数据负载太重:
随着通常超过70%的XMPP协议的服务器的数据流量的存在和近60%的被重复转发,XMPP协议目前拥有一个大型架空中存在的 数据提供给多个收件人。 新的议定书正在研究,以减轻这一问题。
没有二进制数据:
XMPP协议的方式被编码为一个单一的长的XML文件,因此无法提供修改二进制数据。 因此, 文件传输协议一样使用外部的 HTTP。 如果不可避免,XMPP协议还提供了带编码的文件传输的所有数据使用的Base64 。 至于其他二进制数据加密会话 (encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

NSURLConnection的几个常用的代理?

NSURLConnection&NSURLSession的区别?

XML是什么? XML与HTML的区别?

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

利用字典(图片地址为key,下载操作为value)

sip是什么?

1>  SIP(Session Initiation Protocol),会话发起协议
2>  SIP是建立VOIP连接的 IETF 标准,IETF是全球互联网最具权威的技术标准化组织
3>  所谓VOIP,就是网络电话,直接用互联网打电话,不用耗手机话费

TCP/IP四层模型

文章如有问题,请留言,我将及时更正。

满地打滚卖萌求赞,如果本文帮助到你,轻点下方的红心,给作者君增加更新的动力。

上一篇 下一篇

猜你喜欢

热点阅读