如何保证下载文件的完整性(网易面试题)

该问题很简单吧,都会吧?不会吧不会吧,你还不会?

以Android程序进行更新升级为例,一般情况下,APP启动都会请求服务端:是否有新版本APK?

如果有升级需要,那么服务端可能会返回如下数据:

arduino 复制代码
{'msg':'更新日志','url':'下载地址','version':'版本号',......}

那么此时我们通过服务端响应的json数据中新版本APK的URL地址对APK文件进行下载,然而在互联网中进行文件传输过程中,可能由于各种原因导致文件的不完整。此时我们程序中若无法进行APK文件完整性的判断,直接请求安装此APK文件,很显然会显示:无法安装。

为了解决这个文件,服务端的响应数据中需要增加文件校验码( MD5、SHA1、CRC32)。以MD5为例,服务端在响应的数据中新增了:md5字段。

arduino 复制代码
{'msg':'更新日志','url':'下载地址','version':'版本号','md5':'xxx',......}

每个文件都可以用 MD5 验证程序算出一个固定的 MD5 码。当客户端下载了文件后,可以计算所下载的文件的 MD5 码,和服务端响应的 MD5 码比较。如果计算出来的和服务端响应的不匹配,那么下载的APK文件不完整,或是被别人动过手脚。

因此可以通过文件校验的方式保证下载文件的完整性。

答案虽短(和你一样???)但很精确(短小精悍???)开玩笑别当真
今日分享到此结束,对你有帮助的话,点个赞再走呗,每日一个面试小技巧
关注公众号:Android老皮

解锁 《Android十大板块文档》 ,让学习更贴近未来实战。已形成PDF版

内容如下

1.Android车载应用开发系统学习指南(附项目实战)
2.Android Framework学习指南,助力成为系统级开发高手
3.2023最新Android中高级面试题汇总+解析,告别零offer
4.企业级Android音视频开发学习路线+项目实战(附源码)
5.Android Jetpack从入门到精通,构建高质量UI界面
6.Flutter技术解析与实战,跨平台首要之选
7.Kotlin从入门到实战,全方面提升架构基础
8.高级Android插件化与组件化(含实战教程和源码)
9.Android 性能优化实战+360°全方面性能调优
10.Android零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` ) 🤔

相关推荐
有意义12 分钟前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
测试工坊2 小时前
Android 视频播放卡顿检测——帧率之外的第二战场
android
我叫黑大帅2 小时前
Go 语言中处理「未知类型数据」的两大核心手段
后端·面试·go
Kapaseker3 小时前
一杯美式深入理解 data class
android·kotlin
鹏多多3 小时前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter
Carson带你学Android3 小时前
OpenClaw移动端要来了?Android官宣AI原生支持App Functions
android
拉不动的猪3 小时前
重温Vue异步更新队列
前端·javascript·面试
黄林晴3 小时前
Android 删了 XML 预览,现在你必须学 Compose 了
android
三少爷的鞋4 小时前
Android 面试系列 | 内存泄露:从"手动配对"到"架构自愈"
android
恋猫de小郭4 小时前
什么 AI 写 Android 最好用?官方做了一个基准测试排名
android·前端·flutter