最近半年,作为部门的面试官之一,参加了许多次招聘面试。数据库知识,尤其是对数据的增删改查等操作是软件测试人员的基本功,是面试过程中的必考项。在这其中,有一道题,是我每次面试的必考题。

题目

以Mysql为例,假设有一张数据库表user_info,第一列是id,用作唯一标识;第二列是user_name,即用户姓名;第三列是some_data,这是一列存储某某数值的列,比如用户的年收入、用户的年龄、用户完成的订单数等等。需求是,找出这张表中,按第三列的数值降序排列,排在前5的所有用户记录

题解

显然,这道题中除了有基本的select语句、还有降序排序的基本用法,以及limit用法,因此,稍微有些基础的人便可以给出答案:

select * from user_info order by some_data desc limit 0,5;

即使这道题没有涉及什么难点,但精准回答率也并不高(就我面试的情况,约为60%)。然而,写出如上答案还不算完,我会再次向候选人描述问题并确认是否回答完毕。

如果候选人表示回答完毕不需要修正,我会给出提示和引导——答案是否完整?是否遗漏了某些用户记录?这时,极个别的候选人会意识到数值有重复的情况。这已经不单单是Mysql的面试题了,还涉及到需求理解能力、逻辑思维能力等。

无论是否意识得到,我都会再进一步明确地提问,在考虑重复数据的情况下,按第三列的数值降序排列,找出排在前5的所有用户的记录

必然地,能够写出来的就更少了,这里给出一个答案——先找出排在第5的第三列的值,再把大于等于该值的记录降序输出即可。

select * from user_info where some_data >=
(select distinct some_data from user_info order by some_data desc limit 4,1)
order by some_data desc;
  • 括号中的子句的作用是找出按第三列倒序排序并去重后的第5个值。
  • 括号外的order by some_data desc是为了让最终输出的结果再次按第3列降序排序。

可见,除了上面涉及到的知识点,此时的答案还涉及了子查询,distinct关键字。

总结

这种穿插在面试过程中,问题难度有递进的笔试题,不仅仅是一道非黑即白式的知识问答,它更是一个情景对话。在这个过程中,可以考察到候选人对基本知识的掌握程度,还可以考察到他们对需求的理解能力、问题的分析能力等。因此,这样的题目比单一去考数据库各个知识点的题目要有效地多。

相关知识点

  • mysql

    • select基本语法
    • order by
    • limit用法
    • 子句语法
    • distinct

招聘面试—关于Mysql的一点儿总结的更多相关文章

  1. php面试专题---mysql数据库分库分表

    php面试专题---mysql数据库分库分表 一.总结 一句话总结: 通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既攻克了写入性能瓶颈问题,同一时候也再一次提 ...

  2. php面试专题---MySQL分表

    php面试专题---MySQL分表 一.总结 一句话总结: 分库分表要数据达到一定的量级才用,这样才有效率,不然利不一定大于弊,可能会增加一次I/O消耗 1.分库分表的使用量级是多少? 单表行数超过 ...

  3. php面试专题---MySQL分区

    php面试专题---MySQL分区 一.总结 一句话总结: mysql的分区操作还比较简单,好处是也不用自己动手建表进行分区,和水平分表有点像 1.mysql分区简介? 一个表或索引-->N个物 ...

  4. php面试专题---MYSQL查询语句优化

    php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...

  5. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  6. php面试专题---Mysql索引类型、介绍及优点

    php面试专题---Mysql索引类型.介绍及优点 一.总结 一句话总结: 精品视频讲解里面的资料来源也是通过各种资料,比如博客.书等,只不过是基于讲解者的知识体系有整理的过程 1.B-Tree索引三 ...

  7. php面试专题---Mysql索引原理及SQL优化

    php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入 ...

  8. 面试之MySQL基本命令

    既然要操作数据库就从数据库链接写起,包括建库.建表.增删该查字段及约束,删库,删表的数据,以下主要是对我以往面试的总结,欢迎补充! 一.数据库连接 1.连接本机(p和密码123456之间无空格) my ...

  9. 近期安卓与IOS招聘面试有感

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.你总是想一步登天,却不知道路是一步步走出来的 大概是放年假前一个月开始招聘吧,陆陆续续到目前为止安卓面试10几个,IOS面试了15个左右,本以为 ...

随机推荐

  1. Go基础之--接口

    定义 在Go语言中,一个类只要实现了接口要求的所有函数,我们就说这个类实现了该接口 interface类型可以定义一组方法,用来表示一个对象的行为特征,interface不能包含任何变量,接口是引用类 ...

  2. Python学习-使用opencv-python提取手掌和手心及部分掌纹

    上次我们成功训练了手掌识别器http://www.cnblogs.com/take-fetter/p/8438747.html,可以成功得到识别的结果如图 接下来需要使用opencv来获取手掌,去除背 ...

  3. Oracle-11g 中使用表空间透明数据加密(TDE)

    Oracle-11g 中使用表空间透明数据加密(TDE)的限制 TDE 表空间加密方式会在数据读写过程中加解密数据.与在 SQL 层面做加解密的 TDE 列加密方式相比,其限制要大幅减少.例如:数据类 ...

  4. flex 布局 input 宽度不自适应

    flex 布局 input 宽度不自适应 解决方法: 给 input 加上min-height 解决!

  5. [Python Study Notes]实现对键盘控制与监控

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  6. PLECS_直流电机基本系统模型

    1.模型图 2.模型仿真结果 (1)Step阶跃t=1s,R=20Ω,V_dc = 120V,那么此时 电源电压波形: 电机电枢电流波形: 电机电磁转矩: 电机转速波形: (2)其他参数不变将R=30 ...

  7. PHP读取大文本文件并处理数据的思路

    //处理文件 $file = fopen($filename, "r") or exit("Unable to open file!"); $total_lin ...

  8. 微信小程序Md5加密(utf-8汉字无影响)

    微信小程序不让使用第三方jqMD5 只好改原生js咯 废话不多说直接贴代码 其实就是将原生function调用改为 module.exports = md5; 文中 红色标注 使用方法 将md5.js ...

  9. java 堆和栈

    转载自 http://blog.csdn.net/peterwin1987/article/details/7571808 博主讲的相当清楚吼吼吼

  10. 理解 Git

    Git 如何保存文件 其它版本管理系统通常会保存所有文件及其历次提交的差异(diff / revision),通过 merge 原始文件与各阶段的差异就能获取任何版本的状态 而 Git 保存的是每一次 ...