阅读 345

手撕面试官系列(四 ):MongoDB+Redis 面试专题

MongoDB

(面试题+答案领取方式见个人主页)

  1. 你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用NoSQL 数据库?说一说 NoSQL 数据库的几个优点?
  2. NoSQL 数据库有哪些类型?
  3. MySQL 与 MongoDB 之间最基本的差别是什么?
  4. 你怎么比较 MongoDB、CouchDB 及 CouchBase?
  5. MongoDB 成为最好 NoSQL 数据库的原因是什么?
  6. 32 位系统上有什么细微差别?
  7. journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?
  8. 分析器在 MongoDB 中的作用是什么?
  9. 名字空间(namespace)是什么?
  10. 如果用户移除对象的属性,该属性是否从存储层中删除?
  11. 能否使用日志特征进行安全备份?
  12. 允许空值 null 吗?
  13. 更新操作立刻 fsync 到磁盘?
  14. 如何执行事务/加锁?
  15. 为什么我的数据文件如此庞大?
  16. 启用备份故障恢复需要多久?
  17. 什么是 master 或 primary?
  18. 什么是 secondary 或 slave?
  19. 我必须调用 getLastError 来确保写操作生效了么?
  20. 我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?
  21. 分片(sharding)和复制(replication)是怎样工作的?
  22. 数据在什么时候才会扩展到多个分片(shard)里?
  23. 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?
  24. 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?
  25. 我可以把 moveChunk 目录里的旧文件删除吗?
  26. 我怎么查看 Mongo 正在使用的链接?
  27. 如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?
  28. 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?
  29. 当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?
  30. MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?
  31. 如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?
  32. MongoDB 支持存储过程吗?如果支持的话,怎么用?
  33. 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?

Redis (一)

  1. redis 和 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?
  2. redis 主从复制如何实现的?redis 的集群模式如何实现?redis 的 的 key 是如何寻址的?
  3. 使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?
  4. 知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?
  5. redis 过期策略都有哪些?LRU 算法知道吗?写一下 java 代码实现?
  6. 缓存穿透、缓存击穿、缓存雪崩解决方案?
  7. 在选择缓存时,什么时候选择 redis ,什么时候选择
  8. 缓存与数据库不一致怎么办
  9. 主从数据库不一致如何解决
  10. Redis 常见的性能问题和解决方案
  11. Redis 的数据淘汰策略有哪些
  12. Redis 当中有哪些数据结构
  13. 假如 Redis 里面有 1 亿个 key ,其中有 10w 个 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
  14. 使用 Redis 做过异步队列吗,是如何实现的
  15. Redis 如何实现延时队列

Redis (二)

  1. 什么是 Redis?简述它的优缺点?
  2. Redis 相比 memcached 有哪些优势?
  3. Redis 支持哪几种数据类型?
  4. Redis 主要消耗什么物理资源?
  5. Redis 的全称是什么?
  6. Redis 有哪几种数据淘汰策略?
  7. Redis 官方为什么不提供 Windows 版本?
  8. 一个字符串类型的值能存储最大容量是多少?
  9. 为什么 Redis 需要把所有数据放到内存中?
  10. Redis 集群方案应该怎么做?都有哪些方案?
  11. Redis 集群方案什么情况下会导致整个集群不可用?
  12. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis
  13. Redis 有哪些适合的场景?
  14. Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
  15. Redis 和 Redisson 有什么关系?
  16. Jedis 与 Redisson 对比有什么优缺点?
  17. Redis 如何设置密码及验证密码?
  18. 说说 Redis 哈希槽的概念?
  19. Redis 集群的主从复制模型是怎样的?
  20. Redis 集群会有写操作丢失吗?为什么?
  21. Redis 集群之间是如何复制的?
  22. Redis 集群最大节点个数是多少?
  23. Redis 集群如何选择数据库?
  24. 怎么测试 Redis 的连通性?
  25. Redis 中的管道有什么用?
  26. 怎么理解 Redis 事务?
  27. Redis 事务相关的命令有哪几个?
  28. Redis key 的过期时间和永久有效分别怎么设置?
  29. Redis 如何做内存优化?
  30. Redis 回收进程如何工作的?