Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)

📅 发布时间:2026/7/4 15:22:28 👁️ 浏览次数:
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
一、前言在实际开发和面试中经常会遇到这样一类问题JSON 文件数据很大读取卡顿怎么办JSON 能不能当存储方案SQLite 能不能存 JSON大数据应该用 JSON / KV / SQLite写文件时断电数据如何保证安全这些问题的本质不是 API而是❗数据存储设计能力 工程可靠性能力本文将从实际工程角度系统讲清楚这些问题。二、JSON 文件的本质JSON 文件是什么JSON 是一种数据交换格式 文件只是它的载体。 所以❗JSON ≠ 存储方案JSON 文件适合什么场景配置文件初始化数据导入导出小规模数据缓存❌ 不适合大数据量高频更新复杂查询三、JSON 文件为什么会卡问题本质全量加载 全量解析❌ 常见错误String json readAll(); // 一次读完 parse(json); // 一次解析问题内存占用高解析慢UI 卡顿甚至 OOM四、JSON 优化方案核心1️⃣ 拆分大 JSON一个大 JSON → 多个小 JSON 降低单次处理成本2️⃣ JSON Lines重点什么是 JSON Lines每一行是一个 JSON 对象示例{id:1,name:A} {id:2,name:B} {id:3,name:C}3️⃣ 流式解析重点什么是流式解析逐步读取 → 逐步处理 → 不全量加载示例BufferedReader reader new BufferedReader(new FileReader(file)); String line; while ((line reader.readLine()) ! null) { parse(line); }本质❗避免一次性加载全部数据五、SQLite 能不能存 JSON结论可以存但不推荐存“大 JSON”❌ 为什么不推荐需要整块解析无法利用索引无法局部更新性能差✅ 正确方式JSON → 拆结构 → 表结构六、KV 是什么❓KV 存储Key-Value键值对 类似 HashMap但可持久化❓适用场景配置状态小数据高频读写❌ 不适合大数据复杂结构查询需求七、JSON / KV / SQLite 如何选型选型原则JSON小数据 低频 KV简单数据 高频 SQLite结构化数据 查询❗关键判断是否结构化 是否需要查询 是否需要局部更新八、大 JSON 正确处理方案❌ 错误方式超大 JSON → SQLite TEXT✅ 正确方案1️⃣ 拆结构推荐JSON → 表结构2️⃣ 分片文件data_1.json data_2.json3️⃣ JSON Lines 流式处理九、断电数据安全面试重点问题写文件过程中断电怎么办❌ 错误方式直接覆盖原文件 风险文件损坏数据丢失✅ 正确方案核心1. 写入临时文件 2. fsync 确保落盘 3. rename 原子替换核心原理❗rename 原子替换文件保证要么旧数据在 要么新数据完整 不会损坏十、面试高分总结 三大核心性能避免全量加载 安全避免直接覆盖 架构选择合适存储方案 一句话总结❗JSON 决定数据格式KV/SQLite 决定存储能力架构决定是否合理。十一、结语这类问题的本质不是❌ 会不会用 JSON / SQLite而是✅是否具备数据建模 工程设计能力