Android并发编程高级面试题汇总最全最细面试题讲解持续更新中👊👊 👀你想要的面试题这里都有👀 👇👇👇
断点续传原理(腾讯)
这道题想考察什么?
是否掌握断点续传原理
考察的知识点
HTTP协议
IO处理
考生如何回答
在基于HTTP协议的通信中,断点续传功能最核心的原理就是利用HTTP请求中Range字段。
当请求服务器上的一个文件时,通过在请求头中设置"Range: bytes=x- "
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection();
httpConnection.setRequestProperty("RANGE","bytes=200");
Range表示需要服务器返回的文件字节数据从第x字节开始,指定需要传输的文件数据范围。
当需要对服务端传输的文件数据进行保存(下载)。在Java中也可以借助RandomAccessFile的seek方法访问记录并读取指定位置的数据。
RandomAccess rafile = new RandomAccessFile("down.zip","rw");
// 定位文件指针到 200 位置
rafile.seek(200);
// 前200字节不改动,从200字节开始写入数据到文件
rafile.write(...)
7.9 如何保证下载文件的完整性(网易)
这道题想考察什么?
文件下载程序鲁棒性
考察的知识点
文件校验
考生如何回答
以Android程序进行更新升级为例,一般情况下,APP启动都会请求服务端:是否有新版本APK?
如果有升级需要,那么服务端可能会返回如下数据:
{'msg':'更新日志','url':'下载地址','version':'版本号',......}
那么此时我们通过服务端响应的json数据中新版本APK的URL地址对APK文件进行下载,然而在互联网中进行文件传输过程中,可能由于各种原因导致文件的不完整。此时我们程序中若无法进行APK文件完整性的判断,直接请求安装此APK文件,很显然会显示:无法安装。
为了解决这个文件,服务端的响应数据中需要增加文件校验码( MD5、SHA1、CRC32)。以MD5为例,服务端在响应的数据中新增了:md5字段。
{'msg':'更新日志','url':'下载地址','version':'版本号','md5':'xxx',......}
每个文件都可以用 MD5 验证程序算出一个固定的 MD5 码。当客户端下载了文件后,可以计算所下载的文件的 MD5 码,和服务端响应的 MD5 码比较。如果计算出来的和服务端响应的不匹配,那么下载的APK文件不完整,或是被别人动过手脚。
因此可以通过文件校验的方式保证下载文件的完整性。
更多Android面试题 可以详细Vx关注公众号:Android老皮 解锁 《2023最新Android中高级面试题汇总+解析》
目录
第一章 Java方面
- Java基础部分
- Java集合
- Java多线程
- Java虚拟机
第二章 Android方面
- Android四大组件相关
- Android异步任务和消息机制
- Android UI绘制相关
- Android性能调优相关
- Android中的IPC
- Android系统SDK相关
- 第三方框架分析
- 综合技术
- 数据结构方面
- 设计模式
- 计算机网络方面
- Kotlin方面
第三章 音视频开发高频面试题
- 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
- 怎么做到直播秒开优化?
- 直方图在图像处理里面最重要的作用是什么?
- 数字图像滤波有哪些方法?
- 图像可以提取的特征有哪些?
- 衡量图像重建好坏的标准有哪些?怎样计算?
第四章 Flutter高频面试题
- Dart部分
- Flutter部分
第五章 算法高频面试题
- 如何高效寻找素数
- 如何运用二分查找算法
- 如何高效解决雨水问题
- 如何去除有序数组的重复元素
- 如何高效进行模幂运算
- 如何寻找最长回文子串
第六章 Andrio Framework方面
- 系统启动流程面试题解析
- Binder面试题解析
- Handler面试题解析
- AMS面试题解析