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

题目

以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

最新文章

  1. html3秒跳转
  2. C#中Dynamic关键字
  3. 虚拟机guest为windows7的环境下安装破解版simplify3d_3.0.2
  4. data-icon=""图片还可以是自定义的?
  5. 为什么要关闭360云盘:新来的美工嫌我们logo太丑,所以就决定关闭了。这个理由怎么样
  6. Swift - 37 - 值类型和引用类型的简单理解
  7. git分支--branch
  8. uci随笔
  9. R语言︱文本挖掘——词云wordcloud2包
  10. Java循环和条件
  11. SQL SERVER-时间戳(timestamp)与时间格式(datetime)互相转换
  12. es 模块的基础知识,深度了解
  13. angularjs 在 iframe 里面无法正确显示 src 指定的内容
  14. IBM WebSphere MQ介绍安装以及配置服务详解
  15. cocos js 3.8.1 clippingNode 不能被 ccui.ScrollView 或者ccui.Layout裁剪的bug
  16. Asp.net MVC 通过自定义ControllerFactory实现构造器注入
  17. Sublime Text 3 个人使用总结
  18. chm格式文件,win7下用c:/windows/hh.exe打开
  19. os.path模块【python】
  20. 知识梳理——CSS篇

热门文章

  1. vue 使用Jade模板写html,stylus写css
  2. git使用基本故障
  3. PHP7 Xdebug配置方式
  4. shell实现go环境的部署搭建
  5. 彻底理解 Android 中的阴影
  6. Mock拦截ajax请求
  7. 在jdbc中使用properites文件进行使用
  8. sqlite不存在记录则插入数据
  9. 第十九章 Django的ORM映射机制
  10. nyoj940 A dp problem 打表