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

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

以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零基础入门到精通,高手进阶之路

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

相关推荐
Rain的Java大神之路1 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
Dr.kangder1 小时前
嵌入式面试总结(十八)——JTAG调试
嵌入式硬件·面试·职场和发展·架构·嵌入式
小孔龙3 小时前
GraphicBuffer 跨进程共享
android
行业研究员4 小时前
Android内置GPS与腾讯地图定位技术对比分析
android·android定位·腾讯地图定位
Dr.kangder4 小时前
嵌入式面试总结(十六)——AMBA总线
面试·职场和发展·架构·嵌入式·虚拟化·总线
Dr.kangder4 小时前
嵌入式面试总结(十九)——内存泄露
单片机·算法·面试·职场和发展·架构·硬件架构
Dr.kangder4 小时前
嵌入式面试总结(十七)——DMA总线
面试·职场和发展·架构·嵌入式·总线
Android-Flutter4 小时前
android WMS 详解(二)
android·kotlin
游戏开发爱好者85 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone