码迷,mamicode.com
首页 > 其他好文 > 详细

也许不是全世界错了,也许不是我错了,只是题目出错了

时间:2014-11-27 12:56:01      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:php   面试题   全世界   mysql   数据库   

前段时间收到一个朋友的邮件,推荐去参加个某论坛的答题活动.
活动地址:http://bbs.phpthinking.com/thread-305-1-1.html
最后的结果竟然是答错一道题目,和该论坛负责人讨论未果,并被指责"不可能全世界都错了,就你对了".
导致心情很是糟糕,不得不跑51上来吐个槽.
现在把出错的题目发上来:
【单选】user表中对字段name(varchar类型)创建了普通索引,下列查询语句可以使用索引是?
A. SELECT * FROM users where name not in (‘a‘,‘b‘);
B. SELECT * FROM users where name like ‘%a%‘;
C. SELECT * FROM users where name between ‘a‘ and ‘b‘;
D. SELECT * FROM users where name = age;
根据分析,大家一般都选C了哈.
在大多数情况下,test1:
create table user (
id int(11) auto_increment,
name varchar(20) not null,
primary key (id)
);
alter table user add index idx_name (name);
并插入几条数据,explain4个选项之后发现,只有C是"完美"的答案.

但是,本题目中并未提到是否存在其他字段,也并未规定是否允许创建其他主键,那么其他的字段和主键是否会对测试结果造成影响呢?
下面,我们来进行test2:
create table user2(
name varchar(20) not null
);
alter table user2 add index idx_name (name);
继续explain...


好的,各位亲爱的小伙伴,经过测试,会发现a-c竟然都使用了索引,当然D一如既往的语法错误.
该负责人在跟我强调大多数的情况下C是如何如何的正确,但我想说,证明一道题目出的有问题,只需要一个反例就足够了.
最后,获悉该题目竟然还是某著名公司的面试题,出题人乃是经由百万年薪的经理之手.
我想,某公司啊,本着对面试尊敬的态度,还是先完善下该题目吧!
----答案一般大多数人是对的,而真理往往掌握在少数人手中.

也许不是全世界错了,也许不是我错了,只是题目出错了

标签:php   面试题   全世界   mysql   数据库   

原文地址:http://grogonboxer.blog.51cto.com/1377574/1583105

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!