IT技术博客大学习 共学习 共进步

面试IT业界顶尖企业所应该知道的10道题(1)

idea's blog 2011-06-02 23:23:06 累计浏览 8,344 次

    题目: 现有一个包含一千万个单词的文本文件, 每个单词占一行, 每行小于1K字节. 要求找出出现次数最多的10个单词. 如果要从一千个这样的文件中找出出现次数最多的10个单词(所有单词加起来去重后不超过一千万个), 你会怎么设计?

    难度: 10K

    领域: 编码, 架构, 分布式

*** 解析 ***

    这道题没有任何算法上的难度, 最简单的思路就是, 一次读取一行, 计数. 先从单个文件来考虑, 首先考察面试者最基本的用计算机解决简单问题的能力.

    * Shell

    如果面试者的简历提到 Linux Shell, 让其用一行 Shell 命令(sort, uniq)来解.

    * 脚本语言

    要求面试者用任何一种通用的脚本语言来解决, 例如 PHP, Python. 要求其手写出无语法错误的可执行的完全正确的代码, 考察其编码能力基本功.

    * SQL

    假设单词是保存在 MySQL 数据库表中, 要求面试者用一条 SQL 语句来解, 考察其是否掌握 SQL, 以及 count(), group by, order by 等关键字的使用.

    * 多线程, 多机解决的思路

    将条件设置为有一千个或者更多的文件的情况, 如果面试者能主动想到如上方法的局限性和性能问题, 可以加分. 要求面试者分析出影响性能的瓶颈在哪.

    如果面试者能想到多线程, 多机分布式, 要求其设计一个大致的方案.

建议继续学习

  1. Java开发岗位面试题归类汇总 (累计阅读 21,763)
  2. 面试题 – 为什么我的朋友圈不见了? (累计阅读 11,804)
  3. 加州求职记 (累计阅读 11,364)
  4. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,305)
  5. 海量数据面试题举例 (累计阅读 10,827)
  6. 腾讯php程序员面试题目答案 (累计阅读 8,804)
  7. 如何在面试中发现优秀程序员 (累计阅读 8,104)
  8. 聊聊ThoughtWorks面试 (累计阅读 7,424)
  9. IBM面试记 (累计阅读 7,225)
  10. 有道面试总结 (累计阅读 6,943)