IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

百姓网公开笔试题:查询条件的子集判断

王建硕 2010-05-05 12:38:40 累计浏览 3,537 次
本机暂存

    百姓网需要最聪明,最有潜力的技术牛人来帮助我们给世界惊奇。为了让我们互相找到的过程变得更加直接了当,我这里有一个公开的笔试题目。这是我们日常的工作中遇到的一个典型问题。如果你有答案,请直接寄到 geeks @ baixing.com而不需要使用 shhr @ baixing.com。

    题目

    请写一个算法,判断一个查询表达式是不是另外一个查询表达式的子集。

    稍微加一点解释

    就拿SQL语句为例,如果查询A是age > 21查询B是age > 20 AND height > 160我们知道,A所代表的集合是B所代表的集合的子集。凡是满足A的条件的记录,也一定满足B的条件。我需要一个算法,在给出任意两个表达式以后,判断一个是不是另外一个的子集。if($queryA->isSubSet($queryB)) {

    echo "A is subset of B"

    }

    为了简单起见,只需要实现最简单的AND, OR逻辑操作,大于,等于,小于三种比较操作就好。

    这有什么用呢?

    这是个我们不到10人的技术团队日常典型需要解决的问题。给个例子:百姓网为了应付更大的搜索数据量,把搜索分布在多个城市的多台服务器上。系统管理员可以根据数据的使用频度等规律,配置几个不同的数据库(MySQL的,和Solr的)。这样,当有一个新的广告出来后,子集算法根据搜索库的配置查询就可以决定,它更新到哪一个或多个库里面。

    查询的时候,如果确认给定的查询条件是以前配置的一个库的子集,就可以只从那个库里查询了。这可以让我们轻松地配置几十个搜索库,而不用改一行代码。

    热切期待优秀的你和我们联系。重复一遍:邮件请发到:geeks @ baixing.com

同分类推荐文章

  1. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
  2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  3. 除法的意义 (2026-04-12 20:52:17)

查看更多 算法 文章 →

建议继续学习

  1. 红黑树并没有我们想象的那么难(上) (累计阅读 21,494)
  2. 为什么算法这么难? (累计阅读 12,397)
  3. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,902)
  4. 加州求职记 (累计阅读 11,561)
  5. 海量数据面试题举例 (累计阅读 11,114)
  6. 基于Redis构建系统的经验和教训 (累计阅读 10,521)
  7. 谷歌(Google)2011年校园招聘笔试题 (累计阅读 9,573)
  8. 浅谈redis数据库的键值设计 (累计阅读 9,353)
  9. 最常被程序员们谎称读过的计算机书籍 (累计阅读 9,156)
  10. 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,873)