但凡有职场经验的兄弟都知道,大厂的面试真是一言难尽,不光看你面试时的临场发挥能力,还要分N次考你对公司业务核心技术的熟悉度。

你要没有扎实的基本功,想忽悠住面试官可太难了。你去翻翻大厂那些30、40K的岗位就懂了:

关于数据库,我认为是软件测试工程师第一个要学的技术也是最重要的基础。

不仅你做功能测试要用到数据库;接口测试、很多接口的返回值它是动态的,那么你要去数据库拿数据来校验;还有自动化,怎么去做一些数据驱动,都要从数据库里去拿。你做性能测试是不是也和数据库有关。比如慢查询,都和数据库有关。

所以说,你要去面试软件测试工程师。数据库这一关你得要有底。

掌握sql查询增删改查、子查询、关联查询、分组查询、分组过滤

1.说一下你常用的sql优化方式?为什么select*效率低?

2.什么是索引?索引为什么能增加查询效率

3.索引是建的越多越好吗?

4.什么是ORM?为什么要用ORM?

5.如何将查询的数据汇总到excel,txt文件?6.关系型数据库和非关系型数据库的区别?

首先如果你要去面试,你得首先保证你掌握了sql的基本查询

增删改查

第一部分:软件测试基础理论、流程还有项目管理

增删改查大家基本都会吧,Select、Delete、Update、还有一个子查询、关联查询、分组查询、分组过滤。

子查询:就是一个嵌套在查询语句中的查询

关联查询:内连接、外连接(左连接、右连接)

我相信每次去面试的时候很多小伙伴都会去百度。搜素什么是什么子查询?什么是关联、分组查询?什么是分组过滤……经过熬夜看完了几篇“深度好文”可能面试官问,你也会胸有成竹。

如果以上的内容都不熟悉,就不要在简历中写:“我熟悉数据库的语句”

大家可能比较陌生的可能是分组查询( group by)和分组过滤(having)

分组查询( group by)是一个按照表中一个或者多个字段,将数据进行分组,一般用于数据进行分类汇总。

如果读这一块还不是很熟悉的伙伴,可以去观看我录制的分组查询教学视频。

第二部分:数据库

1.说一下你常用的sql优化方式?为什么select*效率低?

优化方式比如说你用到了select*,那么我就会问你为什么select*效率低?

可能你会说因为*是查询所有的。

面试官:那还有呢?还有什么要补充的吗?

我:(抓抓头发,手儿无处安放)面试官,你干脆把简历还给我吧,我都不想再说下去了。

有很多时候是这样子的 ,当面试官问到你一个问题,如果你只知道一点点,你说出来一点点,面试官问你还有没有其他要补充的……

select*为什么效率低?

第一个你需要根据你理解的原理,具体分析。有时候做测试你会去看一些Mysql的书籍,它会告诉你,一律不要用*作为查询的字段的列表。

为什么呢?

第一个,不需要的列会增加数据传输时间和网络开销。有些数据库和应用不在一台服务器。

比如我的应用数据库肯定是有一个服务器的,那你的后端前端可能不在同一台服务器上,会有很多网络开销。因为有时候我们在前端的操作都会用到数据库,如果你都用select* 那么就大大增加了网络开销,它会去解析很多的内容。特别一些select语句比较复杂解析比较多的时候,会给数据库造成沉重的负担。

特别有一些大类型的字段,比如有一个叫做text 、 它是非常大的

varchar(字符串类型)比如还有一些加密的、日之类的字段,增加网络消耗是非常明显的。即使这个Mysql服务器和客户端在同一台机器上,使用的协议tcp通信也需要额外的时间,所以说这个传输时间和网络开销肯定会加大。

那么对于这些无用的大字段,可能还会增加一些IO操作。(如果长度超过一定字节,它会把一些超出的速率数据化到另一个地方,然后再去读取这些记录就会增加一次IO操作)

其实还有一个非常重要的点,Mysql有一个概念:覆盖索引(业界极为推崇的查询优化方式)

如果你用到了select*,你将失去Mysql优化器覆盖索引策略优化的可能性。

2.什么是索引?索引为什么能增加查询效率

索引是和性能息息相关的一个东西

如果我们把数据库当做一本“新华字典”索引就是这个字典的目录。一般会针对where(id等于多少)条件后面的字段

索引既然是一个目录,那么它就可以分为很多级。(目录下面又有一个目录)

图中的id是一个int类型,那么图中的“钥匙”代表什么?主键。所以说id可能是主键,其他的一些就是字段名称、字段类型、字段的长度

SHON INDEX fromorderl (查询某个表索引语句)
SHON INDEX from orderl (查询某个表索引语句)

大家记住一个概念,主键本身就是一种唯一索引。

比如你要去查询select * from where id=4 id等于多少,它就用到了一种索引。所以说索引就是这个字典的目录,一般会针对where条件后面的字段。

所以说这样去查,如果你不是主键,那么会慢很多,如果你是主键是索引,就会快很多。

为什么索引能让查询变快?

数据结构

btree:二叉树算法

举个例子:

这个数据库表刚好有11行,当我想查询小六,比如说select * from where id=4 的时候,这个时候如果不加索引。执行这行语句做的什么动作?就是一个一个查下去,查到4的时候还会往下查询,查11次。

如果一般的有百万级的数据,它就会去查百万次。

如果我们用二叉树算法(索引)它会去查询多少次呢?

二叉树的原理:取中间一个数,大于的右移,小于的左移。每次减半。

11个数据,二叉树的一个经典的算法,取中间的一个数,11最中间的一个数是什么?是6对吧。那么它会把小于6的12345放一边,然后这里7891011也会放一边,他就会这样去进行。

我们来看一看如果它加了索引,它会查询几次。比如它第一次查id等于4,它会取中间一个数等于6,我们要的不是等于6。根据原理,它就又会去取中间一个值,大于的右移,小于的左移6的中间值是3,12放左边,45放右边。

那么它可能查三到四次就可以查到了。这就是索引的效率,是不是会快很多?数据量大的时候提高效率可想而知。

更多测试教学视频资源可以来群里找我,备注公众号。

还有很多问题,比如什么是ORM?为什么要用ORM?(难度四颗星)大家不仅仅要说出这个概念,你要把它们的底层原理理解透彻。

面试中高级测试,往往三颗星的面试问题就刷了一大批人。

如果你这样从底层原理开始讲,面试官对你竖大拇指!你开一个工资吧,什么时候来上班?

听说点赞的人都拿了大厂offer

絮叨

另外,阿沐把自己的面试文章整理成了一本电子书,共 216页!目录如下,还有我复习时总结的面试题以及简历模板

现在免费送给大家,链接: https://pan.baidu.com/s/10w3q4agGVh4R–HOvEYV-w 提取码: 3y8t

文章首发于公众号:程序员阿沐

絮叨

如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。

如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。

阿沐发现在工作中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独

【软件测试】数据库大厂面试真题解析(二叉树算法纯干货!)相关推荐

  1. Android大厂面试真题解析大全,安卓未来路在何方

    前言 经常会有人问:"现在学习Android开发还有前景?"我的看法是现在只是市场趋于平稳了,对开发人员的要求越来越好了,这并不代表没有前景了. 移动开发不等于App开发,所有新的 ...

  2. 软件测试面试题:数据库大厂面试真题

    一.数据库 1.为什么select *  这种方式效率低? 1.1不需要的列会增加时间传输时间和网络开销,尤其是大类型的字段:text  varchar 1.2对于无用的大字段,会增加IO操作 1.3 ...

  3. 2021全新Android大厂面试真题解析(含网络、Java、Android

    5.TCP和UDP的区别? 6.HTTP的几种请求方法具体介绍 7.HTTP请求和响应报文的格式,以及常用状态码 8.一个 TCP 连接上面能发多少个 HTTP 请求 第二章 Java面试题 1.Ha ...

  4. Java大厂面试真题解析大全,附详细答案解析

    01 如何理解高并发? 高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验. 我们常见的高并发场景有:淘宝的双11.春运时的抢票 ...

  5. 一起看看这些大厂面试真题查漏补缺吧,专题解析

    前言 职场的金三银四跳槽季又来了,不同的是今年比往年「冷」一些,形式更加严峻一些,大家多多少少可能都听到或看到一些信息,就是好多公司在优化裁员,作为求职者来说,面试是一道坎,很多人会恐惧面试,即使是工 ...

  6. android广告页白屏_年度整理!2056页《大厂安卓岗面试真题解析合集》火爆全网...

    前言 2020年还有最后一个月就结束了,时间一眨眼就过去了.今年面试有没有被面试官虐呢,明年跳槽想跳去哪个大厂呢,这是个问题.说实话,今年我面试也被虐了,为了明年能找到一份心怡的工作,特地的从朋友那里 ...

  7. android手机模拟器!手持4个大厂offer的我,面试真题解析

    前言 说起IT行业,大多数人脑海里反应出的第一个标签一定是"高薪",而说起程序员,大家更多想到的可能是: 秃顶.木讷.格子衫: 加班多.能赚钱.不花钱: 没对象-- 这难道就是传说 ...

  8. 2020Android大厂高频面试题(字节跳动+阿里+华为+小米等20家大厂面试真题)附面经!

    Android大厂高频面试题 1.        下列哪些语句关于内存回收的说明是正确的? ( )  A. 程序员必须创建一个线程来释放内存   B.内存回收程序负责释放无用内存    C.内存回收程 ...

  9. 安卓手机游戏开发培训!万字长文轻松彻底入门Flutter,面试真题解析

    在GitHub找到大神整理的一份学习Android非常好的资料,分享给大家. 题库非常全面包括: Android基础知识: 基本涵盖Android所有知识体系,四大组件,Fragment,WebVie ...

最新文章

  1. python必背内容-python必背函数
  2. 实用的IDE工具助力你学好Python
  3. vue可视化拖拽组件模板_基于 Vue 丝滑般拖拽排序组件VueSlicksort
  4. Mariadb----字符类型 (五)
  5. Tensorspace一款神奇的神经网络可视化应用
  6. LayUI表单验证select定位失效问题
  7. vue3+ts封装echarts
  8. Leetcode no. 347
  9. Docker容器下安装ubantu,其中 command not found 的问题(已经解决)
  10. Android Nginx Retrofit+Okhttp.HTTP 504 Unsatisfiable Request (only-if-cached)
  11. 电脑增加机械硬盘计算机管理,电脑新增加一块硬盘安装并使用的教程
  12. C/C++编程:long long类型
  13. 【OpenCV + Python】Hough 圆环变换
  14. tail命令,实时查看日志文件
  15. 手动搭建 React 项目
  16. Rosalind Python|Inferring mRNA from Protein
  17. ios应用数据存储方式(偏好设置)
  18. 【Unity项目】仿《空洞骑士》项目
  19. 对高数值孔径显微镜下不同样品研究
  20. PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】

热门文章

  1. python3 判断素数
  2. net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
  3. LaTex 之 数学运算符号
  4. 新浪出输入法了,深蓝词库转换更新到1.3.1——增加对新浪拼音输入法的支持...
  5. Android开发——简单计算器实现
  6. tar tar.gz
  7. 【图像去雾】基于matlab颜色衰减先验图像去雾【含Matlab源码 2036期】
  8. 第7章:OFDM 信道估计与均衡(4)
  9. floor ceil fract 函数的区别
  10. C# DataGridView控件选中某行和获取单元格数据