【Android面试】数据库

Android——SQLite数据库使用详解,安卓开发面试基础 设置按钮边框填充颜色 阅读详情

文章目录

一、基础用法

1. 简述 SharedPreferences 整体使用流程,以及 apply 与 commit 核心区别和适用场景

  • SP 通过 Context 获取实例,以 XML 文件持久化键值数据,通过 Editor 执行增删改,最终提交生效。
  • commit():同步阻塞写入磁盘,有返回值,容易引发主线程卡顿、ANR,适合少量关键配置、需要结果校验的场景。
  • apply():异步后台写入,无返回值,不会阻塞主线程,是日常开发默认推荐用法。
  • SP 整体适合存储少量简单配置,不适合存大数据、JSON、频繁写入场景。

2. 讲下 MMKV 的初始化、常规存取使用流程,日常开发基础使用有哪些注意点

  • Application 中完成全局初始化,指定根目录;后续直接通过 MMKV 实例完成 String、Int、Bool、二进制、JSON等类型存取
  • 底层基于 mmap 内存映射,增量写入,无需全量序列化落地
  • 日常注意:合理使用多进程模式、敏感数据开启加密、不存储超大单条数据、避免频繁大批量循环写入。

3. 原生 SQLite 结合 SQLiteOpenHelper 的完整使用流程是什么,事务基础如何使用

  • 自定义类继承 SQLiteOpenHelper,在onCreate初始化建表语句,onUpgrade处理数据库版本升级;
  • 通过 getWritableDatabase /getReadableDatabase 获取数据库实例,执行原生 SQL 完成增删改查。
  • 事务通过 beginTransaction() 开启,操作完成后标记成功 setTransactionSuccessful(),最后 endTransaction() 提交或回滚;批量操作使用事务能大幅提升写入性能。

4. 说明 Room 核心组件与整体使用流程,以及常规增删改查的基础使用方式

  • 三大核心:Entity 数据库实体映射表结构、Dao 数据访问层定义 CURD 注解方法、Database 数据库统一管理类,单例提供Dao 实例。
  • 使用流程:定义实体类、编写 Dao 抽象方法、创建 Database 抽象类;
  • 通过注解@Insert/@Update/@Delete/@Query实现常规查询与修改,结合协程、RxJava 或 Flow实现异步操作,规避主线程数据库操作限制。

二、选型对比

5. 键值存储和关系型数据库各自有什么短板,为什么业务中不能只用一种存储方案

  • MMKV、SP 这类键值存储,无表结构、不支持联表、条件复杂查询、分页、索引,不适合海量结构化数据
  • SQLite、Room 关系型数据库,使用成本更高,轻量化简单配置存储会过度重,启动和维护成本更高
  • 业务数据类型不同:简单配置用键值库,结构化、关联、批量检索数据用关系型数据库,组合选型才能兼顾性能与开发效率。

6. 实际开发中,你如何划分 MMKV 与 Room 的使用边界,阐述判断逻辑

  • 小型、独立、无关联、简单配置类数据:登录 Token、功能开关、个性化配置、简单缓存,使用 MMKV
  • 结构化、存在关联关系、需要条件查询、分页、批量管理、海量离线数据:聊天记录、本地列表缓存、历史记录、离线业务数据,使用 Room
  • 核心判断:是否需要复杂查询、数据量级、是否需要持久化批量管理。

7. SP, MMKV, SQLITE, ROOM 数据库对比

在这里插入图片描述

三、实战场景 & 业务落地

8. 项目中频繁读写配置、埋点临时数据,容易出现卡顿、ANR,根源是什么,怎么解决?

  • 根源主要是 SP 全量文件写入 + 主线程频繁调用 commit,造成磁盘 IO 阻塞
  • 解决方案:全面替换为 MMKV、禁止主线程大批量循环写入、统一异步写入、合并高频零散埋点数据批量存储,规避频繁 IO 操作。

9. 需要本地缓存大量结构化列表数据,例如聊天记录、离线内容,用 Room 开发要注意什么?

  • 合理设计表结构、拆分大字段、关键字段建立索引;
  • 禁止一次性全量加载,使用分页查询;
  • 大批量写入使用事务;
  • 结合 Flow 做增量刷新;
  • 定时清理过期无效数据,控制数据库体积。

10. 业务迭代需要给数据库表新增字段、修改结构,Room 如何安全做版本迁移,实战怎么做兜底?

  • 升级数据库版本号,自定义 Migration 编写原生 SQL 完成增字段、改表操作,在 Database 注解中绑定迁移规则。
  • 实战兜底:开发环境提前测试迁移逻辑、线上提供降级策略、异常捕获数据库打开异常,必要时允许清空本地缓存避免崩溃。

11. 大批量数据批量插入、批量更新时,使用 SQLite 或 Room 有哪些必做的性能优化手段?

  • 统一使用数据库事务包裹批量操作,减少 IO 次数;
  • 避免单条循环插入;
  • 合理使用批量注解方法;
  • 关闭不必要的日志和监听;
  • 大批量操作放到子线程执行,避免 UI 卡顿。

12. 多线程并发读写数据库会引发哪些问题,原生 SQLite 和 Room 分别如何规避处理?

  • 多线程并发会触发数据库锁、读写冲突、数据错乱、抛出数据库繁忙异常
  • 原生 SQLite 需要手动加锁、控制单例数据库实例、限制并发操作
  • Room 内部做了线程调度优化,结合协程单调度器、避免并发写入,配合事务降低冲突概率

13. 如何通过 Room 实现数据实时监听,适用于哪些常见业务场景?

  • Dao 层查询方法返回 Flow 或 LiveData,可自动感知表数据变化,数据更新自动回调
  • 适用场景:本地收藏列表、聊天会话列表、历史记录、离线缓存页面自动刷新,无需手动刷新页面。

14. App 长期使用后本地数据库文件体积膨胀、冗余过多,实战中有哪些清理优化方案?

  • 定期清理过期、失效、已删除标记的冗余数据;
  • 大字段单独拆分或文件存储;
  • 定时执行数据库碎片整理;
  • 限制本地缓存最大条数,自动淘汰老旧数据;
  • 版本迭代中清理废弃数据表和字段

15. 项目同时混用 MMKV + Room 两套存储,日常开发如何保证本地数据一致性与维护性?

  • 分层设计:配置层统一封装 MMKV 工具类,业务数据统一走 Room;
  • 约定数据修改入口,禁止跨层随意读写;
  • 关键联动数据修改时,同步更新两端缓存;
  • 统一封装本地存储管理类,方便后期维护和替换;
  • 制定开发规范,明确两类存储的使用边界。
android 读取本地数据库db文件(Android sqlite),2021华为Android面试真题解 content provider SQLite数据库存储 文件存储 今天我们主要说 本地数据库sqlite这种方式,实现读取一个本地数据库db文件的功能。为了方便说明,我举个例子来讲: 我们创建一个本地数据库,里面包含两张表 一个用户表user  一个性别表 gender 要求:1.将用户表中用户查询出来,性别需要显示男女,用listView展示出来。 2.修改 将用户表中  王杰修改为李四 3.增加长按删除功能 非常简单的功能,那么我们实现这个需要做以下几步操作。 1.. 阅读详情

相关推荐

android 读取本地数据库db文件(Android sqlite),初面蚂蚁金服

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

m0_57077948的博客 1395

2024年最全数据库还可以这么看?(Android Studio 4(2),高级安卓面试题及答案2024

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的14套腾讯、字节跳动、阿里、百度等2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2401_84563179的博客 904

SAP IDOC实战:如何用EDI实现跨公司采购订单自动生成销售订单(附完整配置步骤)

本文详细解析了如何利用SAP IDOC与EDI技术,实现跨公司采购订单自动生成销售订单的完整流程。通过实战案例,从业务蓝图设计、输出条件配置、伙伴参数设定到IDOC消息类型处理,提供了清晰的配置步骤与故障排查指南,帮助企业打通内部业务流,构建高效的自动化闭环。

weixin_29215815的博客 728

2024年Android最全android 读取本地数据库db文件(Android sqlite),2024年最新字节跳动 面试难度

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2019-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。还有高级架构技术进阶脑图、高级进阶架构资料帮助大家学习提升进阶,也可以分享给身边好友一起学习。一起互勉~网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!

2401_84545747的博客 971

数字IC时序约束实战:深入解析clock_uncertainty的设置策略与后端影响

本文深入探讨数字IC设计中clock_uncertainty的设置策略及其对后端实现的影响。通过分析时钟不确定度的组成(包括clock_skew、clock_jitter和margin),并结合实际项目经验,详细介绍了在不同设计阶段(综合、布局布线、签核)的动态调整方法。文章还提供了工程化处理参数来源、跨时钟域特殊处理以及优化时序收敛的实用技巧,帮助工程师提升数字IC设计的可靠性和性能。

weixin_29284657的博客 227

c语言串口编程详解

串口: 一种异步通信接口,通常用于低速数据传输。RS-232: 最常见的串口标准,定义了电气特性、连接器和信号线。UART: 通用异步收发传输器,是实现串口通信的硬件模块。通过以上内容,你应能够理解并实现C语言在Windows和Linux平台上的串口编程。希望这本手册能帮助你在实际项目中顺利进行串口通信开发。如果有任何疑问或需要进一步的帮助,请随时提问。

jkzyx123的博客 2223

Android Realm数据库使用,安卓开发面试技能介绍

Realm数据库, 目前有Java, Objective‑C, React Native, Swift, Xamarin的几种实现, 是一套用来取代SQLite的解决方案.本文面向Android开发, 所以只讨论Java实现.目前Realm Java的最新版本是2.3.1.官方文档在此:, 花一个下午就可以基本过一遍, 之后随时查用.我写了一个小程序, 使用Realm做数据库实现的一个To-do应用, 在实际使用的过程中也有一些发现.

2401_84149381的博客 916

PPO(Proximal Policy Optimization)算法原理及实现,详解近端策略优化

接着上面的讲,PG方法一个很大的缺点就是参数更新慢,因为我们每更新一次参数都需要进行重新的采样,这其实是中on-policy的策略,即我们想要训练的agent和与环境进行交互的agent是同一个agent;与之对应的就是off-policy的策略,即想要训练的agent和与环境进行交互的agent不是同一个agent,简单来说,就是拿别人的经验来训练自己。举个下棋的例子,如果你是通过自己下棋来不断提升自己的棋艺,那么就是on-policy的,如果是通过看别人下棋来提升自己,那么就是off-policy的。

weixin_41106546的博客 9万+

Android 数据库框架ormlite 使用精要,安卓面试问题

TableUtils.createTable(connectionSource, Img.class); } catch (SQLException e) { e.printStackTrace(); } } /** 这里进行更新表操作 */ @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {

m0_61362539的博客 461

【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略

本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。

green的博客 994

ElasticSearch读写性能调优

深层次理解,虽然是每隔一秒就会将内存中的segment数据刷新到segment file中,但实际上这里并没有直接到磁盘文件,而是先写入到OS Cache中。以refresh_interval为间隔时间,将保存在ES 内存缓存区中的数据 刷新到 os的文件系统缓存中,定期清空es的buffer,生成segment。注意:ES 的默认设置,已经综合考虑了数据可靠性,搜索的实时性,写入速度,一般不要盲目修改。将segment刷新到os cache中,并开放了查询权限,以提升搜索的实时性。

qq_44027353的博客 1811

Android——LitePal第三方数据库框架详解,我的头条面试经历分享

LitePal简介 LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,可以不用写一行SQL语句就可以完成创建表、增删改查的操作。并且很轻量级,jar包不到100k,几乎零配置。 使用步骤如下 android studio中可以直接添加依赖: // litepal数据库 compile ‘org.litepal.android:core:1.6.1’ 下面的操作eclipse和android studio都是一样的了。 eclipse中在项目中新建

m0_65145113的博客 401

在blender中安装vtk插件

Blender 是一个开源的、功能强大的3D计算机图形软件,广泛用于创建动画片、视觉效果、艺术作品、3D打印模型、互动3D应用程序和视频游戏。Blender 是由 Blender 基金会开发和维护的,具有丰富的功能和灵活的扩展性。在github上下载zip插件。

如果想成为中心,那么就到中心去吧。 294

Android最全Android 安卓DataBinding(四)·单向绑定 ObservableField(1),android数据库面试题

这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容除了这份笔记,还给大家分享Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~

2301_82244718的博客 438

【android bluetooth 案例分析 01】【HiCar 详解 3】【hicar时如何交换Wifi参数的】

如果直接使用 L2CAP(不经过 RFCOMM),会需要额外的协议来保证可靠性,而 RFCOMM 天然支持。BLE 广播的数据长度受限(31 字节 / 255 字节扩展),不适合传输复杂的 Wi-Fi 连接参数。使用 RFCOMM 传输参数,可以兼容不同厂商的车机和手机,而无需依赖特殊的蓝牙功能。手机解析这些参数,并使用 Wi-Fi Direct 连接到车机。,然后才能让 Wi-Fi Direct 进行真正的数据传输。,适合传输 Wi-Fi 连接参数等关键数据。,可以安全地交换 Wi-Fi 连接信息。

奔跑吧 android 的博客 1740

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android数据库升级,Android面试你必须要知道的那些知识

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。点击此处,与我们一起交流学习文件夹有以下学习笔记,自行下载!BAT大厂面试题、独家面试工具包,资料免费领取,包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter,。

2501_90914473的博客 800

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

网易有道Android面经:211本科,无安卓实习经验,二面凉了----(1)

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。还有高级架构技术进阶脑图、高级进阶架构资料帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。一起互勉~《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!一起互勉~

2401_84046876的博客 1476

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android数据库的使用(增删改查),oppoAndroid面试题

一、前言 以下不作为Android学习路径,只是汇总的社招Android客户端开发面试考点(因为还有笔试考点,后面结合在一起给大家学习路径),后续会为大家更新10w+字数的Android校招面试题库,还有其他岗位的相关题库和资料,想要什么岗位的可以留言哦~ 本篇根据各个公司的面试问的问题的大数据进行总结,后面还会更新面试中考察所占比例,当然,本文只包括技术面,不包括hr面或者一些其他谈人生理想的。 } //用于更新数据库 @Override public void onUpgrade(SQLiteDatab

code8889的博客 273

2024年最全【面试准备】数据库部分,android面试常问项目难点

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

2401_84545804的博客 1026

Android最全Android 如何导入已有的外部数据库,2024年最新百度安卓面试题

当我们出去找工作,或者准备找工作的时候,我们一定要想,我面试的目标是什么,我自己的技术栈有哪些,近期能掌握的有哪些,我的哪些短板 ,列出来,有计划的去完成,别看前两天掘金一些大佬在驳来驳去 ,他们的观点是他们的,不要因为他们的观点,膨胀了自己,影响自己的学习节奏。基础很大程度决定你自己技术层次的厚度,你再熟练框架也好,也会比你便宜的,性价比高的替代,很现实的问题但也要有危机意识,当我们年级大了,有哪些亮点,与比我们经历更旺盛的年轻小工程师,竞争。无论你现在水平怎么样一定要。

2401_84562425的博客 262

2024年安卓最全Android Realm数据库使用(1),Android面试问题和答案技巧,安卓开发者成功指南

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84562425的博客 1061

Android面试终极指南:Room数据库面试难题突破秘籍

在竞争激烈的Android开发岗位面试中,Room数据库作为Jetpack组件的核心成员,常常成为面试官考察的重点。本文将帮助你系统梳理Room数据库的核心知识点、常见面试题及解题思路,让你在面试中轻松应对各种挑战,脱颖而出。 [![Android面试问题封面图](https://raw.gitcode.com/gh_mirrors/an/android-interview-questions/

gitblog_00499的博客 939

Android Sqlite数据库升级时注意事项,看我如何一步一步攻克面试官

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

m0_60144796的博客 935

【面试必备】Android中老生常谈的三级缓存框架问题你都了解了吗?

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84544461的博客 1034

2024年Android最全Android数据库(SQLite)的简单使用——增、删,2024年最新阿里+头条+腾讯等大厂Android面试题分享

这里我希望可以帮助到大家提升进阶。Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!

2301_82242990的博客 859

熬夜整理Android高频面试题,Android开发中你是怎么查看sqlite数据库的,渣本逆袭大厂面经分享

希望大家能有一个好心态,想进什么样的公司要想清楚,并不一定是大公司,我选的也不是特大厂。当然如果你不知道选或是没有规划,那就选大公司!希望我们能先选好想去的公司再投或内推,而不是有一个公司要我我就去!还有就是不要害怕,也不要有压力,平常心对待就行,但准备要充足。最后希望大家都能拿到一份满意的 offer!如果目前有一份工作也请好好珍惜好好努力,找工作其实挺累挺辛苦的。这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。

2401_83977530的博客 780
上一篇: 【Android面试】Java专题
下一篇: 【Android Kotlin】协程知识体系
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值