两道比较难的面试题(急盼指点)
面试一家电信方面的公司的职位,题目多注重性能的考查,如下:
第一题:假设某应用程序,需要实现如下功能:
1. 保存用户话单,并提供按照主叫电话号码和被叫电话号码两个条件查询话单的功能,此外并无其他要求
2. 每天话单量在500G左右
3. 需要保存30天的数据
4. 要求按天查找的响应控制在5秒
5. 支持100查询并发
请给出一个概要的架构设计,包括软件和硬件
(这个题目主要是考查怎样处理海量数据方面的内容,本人比较菜,没有这方面的经验,顺便说一本人的几个疑惑:
a,是不是要根据主叫电话号码和被叫电话号码两个字段建立索引?
b,每天话单量在500G左右,还要保存30天的数据,应该建立多个数据库吧?然后每个数据库根据时间段建立多张表,如每一小时建立一张表。我知道oracle一个库最大能建256张表,一张表最大是多少个G?一个库最大是多少G,有没有限制?
c,响应控制在5秒,肯定要并发查询了,这个没什么好讨论的
d,对于硬件有什么要求?)
第二题:假设需要读取大量操作系统的文件,文件大小在5M左右(只读)。请给出Java代码,描述您认为最高效的方法。
(这个问题应该注意什么?我的想法是这样的,对于读取大量文件,就要用多线程了,为了提高效率,也就是使用线程池了,对于读的时候有什么提高效率方法,我就不知道了,我就知道用io流去读就行,再就是使用bufferInput.大家还有什么提高效率方法吗?麻烦指点一下)
希望大家就以上两题,特别是第一题发表一下意见。