Android并发编程高级面试题汇总最全最细面试题讲解持续更新中👊👊
👀你想要的面试题这里都有👀
👇👇👇
谈谈你对Http的post与get请求区别的理解
这道题想考察什么?
对Http协议的掌握,并可能会进一步关联到TCP协议的问题。
考察的知识点
- Http协议
- 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到页面加载,发生的顺序如下:
-
DNS解析
-
TCP连接,SSL握手
-
发送HTTP/HTTPS请求
-
Server处理HTTP请求并返回HTTP报文
-
浏览器解析并渲染页面
-
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机器人小福利哦!!大家不要错过)
目录
第一章 Java方面
- Java基础部分
- Java集合
- Java多线程
- Java虚拟机
第二章 Android方面
- Android四大组件相关
- Android异步任务和消息机制
- Android UI绘制相关
- Android性能调优相关
- Android中的IPC
- Android系统SDK相关
- 第三方框架分析
- 综合技术
- 数据结构方面
- 设计模式
- 计算机网络方面
- Kotlin方面
第三章 音视频开发高频面试题
- 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
- 怎么做到直播秒开优化?
- 直方图在图像处理里面最重要的作用是什么?
- 数字图像滤波有哪些方法?
- 图像可以提取的特征有哪些?
- 衡量图像重建好坏的标准有哪些?怎样计算?
第四章 Flutter高频面试题
- Dart部分
- Flutter部分
第五章 算法高频面试题
- 如何高效寻找素数
- 如何运用二分查找算法
- 如何高效解决雨水问题
- 如何去除有序数组的重复元素
- 如何高效进行模幂运算
- 如何寻找最长回文子串
第六章 Andrio Framework方面
- 系统启动流程面试题解析
- Binder面试题解析
- Handler面试题解析
- AMS面试题解析