1、有一个2G的文件,如果只有300m内存,应该怎么反置文件?
2、如何在内存中快速从2亿QQ用户中通过号码快速得到用户的信息?
3、很多用户进行查询和更新用户信息的操作怎么办?
4、同时有10W个连接请求,该如何处理?
我来发答案:
一、
1、我觉得:
1、NIO内存映射
2、Cache,哈希表(Map接口)
3、缓存,事务处理
3、线程池+I/O多路复用+集群均衡负载
二、分机器。qq我觉得其实是最容易扩容的,按照qq号分就可以了。每10万个号进入一组,分组处理,硬件几乎可以无限增加,毫无性能问题可言。
三、1、NIO内存映射
2、Cache,哈希表(Map接口)
3、缓存,事务处理
3、线程池+I/O多路复用+集群均衡负载
这个回答基本是靠谱的,如果你面试的普通程序员, 应该是很优秀的回答了。 但是, 对于一个架构师级别的面试, 这个回答, 可能是不满意的。
如果使用一个不存在的QQ号码进行冲击系统, 这个是很严重的问题, 去看看BloomFilter. 对于问题3, 事务一般不会使用,可以考虑使用日志类事务检查, 或者使用事务规范, 自己完成分布式事务。
同时有10W个连接请求,该如何处理? 这是个10K问题, 不是问你怎么做, 而是问你系统对于大规模连接, 对于单一机器的处理办法, 以及规模扩展的办法。
实际上, 这些问题都是目前QQ在大规模环境下真实问题。 这些问题不是回答的来就成的, 关键是是否一定的某些问题的实际操作解决能力。