软件测试工程师面试秘笈之数据库基础

网友投稿 937 2022-11-28

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

软件测试工程师面试秘笈之数据库基础

数据库

数据库基础

数据库基础是对数据库的基本了解,通过来说考察的是一些概念性问题。

示例1:关系型数据库和非关系型数据库的区别是什么?

此题主要考察面试者对关系型数据库和非关系型数据库的理解。如果两种类型的数据库都在实际项目中使用过,则很好作出解答。常见的关系型数据库有MySQL、PostgreSQL和SQLite等,常见的非关系型数据库有MongoDB、CouchDB、Redis和Apache Cassandra等。

解答:

关系型数据库的优点:

容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。

使用方便:支持SQL语句,可用于复杂的查询。通用的SQL语言使得操作关系型数据库非常方便。

易于维护:实体完整性、参照完整性和用户定义的完整性很大地降低了数据冗余和数据不一致的概率。

支持事务。

关系型数据库的缺点:

表结构固定。

不支持高并发读写需求。

不支持海量数据的高效率读写。

为了维护一致性所付出的巨大代价就是其读写性能比较差。

非关系型数据库的优点:

NoSQL的存储格式都是(key, value)。

数据没有耦合性,容易扩展存储数据的格式。

无须经过SQL层的解析,读写性能很多基于键值对。

非关系型数据库的缺点:不支持SQL语言。

综上特点,非关系型数据库适合需要大量写入的地方,例如日志记录或过渡数据,而非关系型数据库适合没有大量数据插入或偶尔插入数据的业务数据存储,例如报告、客户管理等。

示例2:主键、超键、候选键和外键分别是什么?

此题主要考察面试者对数据库中主键、超键、候选键和外键的基本概念知识,如果是面试官直接提问,则在回答时结合项目中的实际应用实例回答更能显示出自己在这方面的知识储备及其运用。

解答:

主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

候选键:最小超键,即没有冗余元素的超键。

外键:在一个表中存在的另一个表的主键。

示例3:事务的四大特性是什么?

解答:事务的四大特性(ACID)是原子性、一致性、隔离性、持久性。

原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性:如果事务执行之前数据库是一个完整的状态,那么事务结束后,无论事务是否执行成功,数据库仍然是一个完整的状态。

隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间的数据要相互隔离。

持久性:一个事务一旦被提交,它对数据库的影响就是永久性的。

示例4:什么是事务?MySQL如何支持事务?

解答:事务是由一步或几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行。MySQL的事务处理主要有两种方法:

begin:开始一个事务。

rollback:事务回滚。

(2)直接用set来改变MySQL的自动提交模式。MySQL默认是自动提交的,也就是你提交一个语句就直接执行。可以通过下面两种设置来进行:

示例5:什么叫视图?

解答:视图是一种虚拟的表,是一组数据的逻辑表示,通常是有一个表或者多个表的行或列的子集,具有和物理表相同的功能。视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化时,视图数据也会随之变化。

示例6:索引设计的原则?

解答:适合索引的列是出现在where子句中的列,或者连接子句中指定的列。基数较小的类,索引效果较差,没有必要在此列建立索引。使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间。不要过度索引,索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以,只保持需要的索引有利于查询即可。

示例7:简单地说说Redis。

解答:Redis是一款NoSQL技术,面向Java Web。它就是一个简单的基于内存的数据库, 并提供持久化服务。Redis和MongoDB是当前使用最广泛的NoSQL,主要应对每秒几十万的读写操作,其性能远远超过数据库,并且在高并发下保证数据的一致性和安全性。Redis具有很多优势:性能优秀,数据在内存中,读写速度非常快,支持并发10W QPS;单进程单线程,是线程安全的,采用IO多路复用机制;丰富的数据类型,支持字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等;支持数据持久化;可以将内存中数据保存在磁盘中,重启时加载;主从复制,哨兵,高可用;可以用作分布式锁;可以作为消息中间件使用,支持发布订阅。

上一篇:软件测试工程师面试秘笈之职责
下一篇:渗透测试之信息收集
相关文章

 发表评论

暂时没有评论,来抢沙发吧~