Android网络编程面试题汇总(含详细解析 六)

Android并发编程高级面试题汇总最全最细面试题讲解持续更新中👊👊
👀你想要的面试题这里都有👀
👇👇👇

谈谈你对Http的post与get请求区别的理解

这道题想考察什么?

对Http协议的掌握,并可能会进一步关联到TCP协议的问题。

考察的知识点

  1. Http协议
  2. TCP协议

考生应该如何回答

GET和POST是HTTP请求的两种常用的基本方法, 他们之前的区别有:

  • GET在浏览器回退时是无害的,而POST会再次提交请求。

  • GET产生的URL地址可以被Bookmark,而POST不可以。

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。

  • GET请求只能进行url编码,而POST支持多种编码方式。

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

  • GET请求在URL中传送的参数是有长度限制的,而POST么有。

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

  • GET参数通过URL传递,POST放在Request body中。

但是站在TCP的角度来看,GET和POST本质上没有区别。HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。之所以出现这些区别是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

输入一串URL到浏览器都经历过什么? (美团)

这道题想考察什么?

这是一道经典的面试题,主要考察的是对网络知识的掌握情况。

考察的知识点

DNS解析、TCP/IP模型与通信过程,HTTP/HTTPS等

考生如何回答

总的来说,当你输入在浏览器里输入一个URL到页面加载,发生的顺序如下:

  1. DNS解析

  2. TCP连接,SSL握手

  3. 发送HTTP/HTTPS请求

  4. Server处理HTTP请求并返回HTTP报文

  5. 浏览器解析并渲染页面

  6. HTTP连接断开

DNS解析
DNS解析流程

DNS解析一般指域名解析。互联网中的地址是数字的IP地址,域名的作用主要就是为了便于记忆。 域名解析就是域名到IP地址的转换过程,让人们通过注册的域名可以方便地访问到网站的一种服务。

假设输入的URL域名,那肯定会涉及到DNS解析;而如果URL本身就是IP,那就不需要进行DNS解析。

解析的步骤大致如下图:

在这里插入图片描述

本地域名服务器可能存在对应的域名缓存记录,首先在本地域名服务器中根据域名查询IP地址,如果没有找到的情况下,本地域名服务器会向根域名服务器发送一个请求。如果根域名服务器也不存在该域名时,本地域名会向com顶级域名服务器(TLD)发送一个请求,依次类推下去。直到最后本地域名服务器得到对应的IP地址并把它缓存到本地,供下次查询使用。

TCP连接

DNS解析返回域名的IP之后,接下来因为HTTP是基于TCP上的,因此浏览器要和该IP进行TCP三次握手,建立连接。TCP三次握手过程见:TCP三次握手四次挥手

SSL握手

如果我们使用的是HTTPS。对于HTTPS,需要有一个SSL/TLS的鉴权/认证,才能进行后续数据的交互。握手完成后,基于此TCP连接的通信数据都会经过SSL协商的加解密方式来完成数据加解密。

HTTP/HTTPS请求和响应

TCP连接已经建立好了,意味着桥已经搭好了,下一步就该传输HTTP(HTTPS与HTTP的区别只是多了一步加解密)消息了。从代码的角度上来说,就是使用套接字Socket,完成与服务器的连接,然后使用Socket的OutputStream发出一段字符串数据,就完成了一次请求,服务器经过处理返回HTTP响应字符串。这些字符串就是HTTP报文,它们的格式如下:(请求头+请求体,响应头+响应体)

在这里插入图片描述

浏览器解析和渲染页面

浏览器接收到了服务器的返回内容,接下来浏览器该把内容呈现给用户了。服务器返回的内容可能是HTML页面,也可能是JSON数据、XML数据、文件等数据。浏览器根据响应头中的Content-Type,来识别服务器响应的不同类型数据,进行最终的显示或下载等处理,如上图中的:“Content-Type:application/json;charset=utf-8”,则表示json数据,目前chrome浏览器默认会显示响应体中的JSON数据。

结束

在完成显示之后,根据HTTP协议规则,从HTTP1.1开始,默认会在请求头中加入:“Connection:keep-alive”,浏览器可以将其设置为:“Connection:close”,但是几乎没有浏览器会这样去做。这个请求头的意思是:是否保持长连接。同时响应头中也会存在此字段,如果双方都为:“keep-alive”,则会保持此TCP连接,否则完成请求之后,直接进入TCP四次挥手阶段断开连接。

由于面试题内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要2023年Android中高级最全面试真题答案 完整文档的可扫描下方卡片免费获取~

PS:(文末还有使用ChatGPT机器人小福利哦!!大家不要错过)

目录

img

第一章 Java方面

  • Java基础部分
  • Java集合
  • Java多线程
  • Java虚拟机

img

第二章 Android方面

  • Android四大组件相关
  • Android异步任务和消息机制
  • Android UI绘制相关
  • Android性能调优相关
  • Android中的IPC
  • Android系统SDK相关
  • 第三方框架分析
  • 综合技术
  • 数据结构方面
  • 设计模式
  • 计算机网络方面
  • Kotlin方面

img

第三章 音视频开发高频面试题

  • 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
  • 怎么做到直播秒开优化?
  • 直方图在图像处理里面最重要的作用是什么?
  • 数字图像滤波有哪些方法?
  • 图像可以提取的特征有哪些?
  • 衡量图像重建好坏的标准有哪些?怎样计算?

img

第四章 Flutter高频面试题

  • Dart部分
  • Flutter部分

img

第五章 算法高频面试题

  • 如何高效寻找素数
  • 如何运用二分查找算法
  • 如何高效解决雨水问题
  • 如何去除有序数组的重复元素
  • 如何高效进行模幂运算
  • 如何寻找最长回文子串

img

第六章 Andrio Framework方面

  • 系统启动流程面试题解析
  • Binder面试题解析
  • Handler面试题解析
  • AMS面试题解析

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值