互联网大厂数据库面试真题解析

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

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

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

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

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

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

1.说一下你经常使用的sql优化方式?为何select*效率低?后端

2.什么是索引?索引为何能增长查询效率服务器

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

4.什么是ORM?为何要用ORM?网络

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


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

增删改查

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

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

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

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

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

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

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

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

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

第二部分:数据库

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?(难度四颗星)你们不只仅要说出这个概念,你要把它们的底层原理理解透彻。

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

若是你这样从底层原理开始讲,面试官对你竖大拇指!你开一个工资吧,何时来上班?

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

絮叨

若是你想去一家不错的公司,可是目前的硬实力又不到,我以为仍是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。

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

一凡发如今工做中发现我身边的人真的就是实力越强的越努力,最高级的自律,享受孤独

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

本文分享自微信公众号 - 程序员一凡(gh_6cafb826630a)。若有侵权,请删除。

相关文章
相关标签/搜索