• 面试整理——数据库篇


    数据库大致分为关系型数据库和非关系型两种。在面试过程中问到的比较多的就是mysql和redis了,在这里整理了一下,分享给大家。

    主要问的问题可以分为以下几类:搭建、使用、原理。

    1、搭建

    搭建的问题主要以某个细节来考察你是否真的操作和应用过,来看你的学习能力和动手实践能力。



    比如:在你搭建完mysql,他就已经支持事务吗?


    对于这个问题,你直接回答是或者不是,都是不对的。首先对于mysql常用引擎innodb和myisam来说,只有innodb是支持事务的。所以只有在mysql的默认存储引擎是innodb的时候才是支持事务的。


    mysql不同版本的默认存储引擎是不同的。在ITOO中,我们使用的数据库是5.1.57,他是默认myisam的。但在mysql-5.6中,就变成了innodb了。具体的版本支持功能可以看mysql的官网 http://www.mysql.com/



    当然redis方面也会问一些操作的问题,比如搭集群的时候需要配置哪些参数,出现哪些问题,是如何解决的等等。


    小结:多操作多了解很重要


    2、使用

    使用方面可以分为基本操作和高级应用。基本操作一般不会问,有点太浪费大家的时间了,主要集中在高级应用方面。

    mysql侧重于优化、主从复制、读写分离、分区分表等等,redis主要还是问集群,也会问与memcached的比较。


    比如:项目中mysql的读写分离是怎么做的?


    千万不能简单粗暴的说主写从读,这样就掉坑里了。比如主宕机了没办法写怎么办,从宕机没办法读了怎么办,主从都没宕机复制延迟了怎么办?对于写完数据马上要读的操作如何处理?


    比较好的例子是一台读写数据库和一台读数据库,只能做到缓解一定程度的读的压力,而更多的读的压力一般都靠redis这样的nosql产品来缓解。


    另外一种就是项目中使用的数据库中间件myCat,这样开发人员不需要考虑哪个库是读哪个库是写,将这些事情统统交给myCat去做。



    比如:项目中分区分表是怎么做的?


    多大的数据量要考虑分区分表?为什么要用?是横切还是纵切?


    比如:有没有用mysql集群,数据量多大考虑用集群,用几个?


    基本上只有主备。


    小结:不要把高深的技术都罗列上去,你要判断自己了解的程度


    3、原理



    这部分内容在平时项目中很少能接触到,但了解这部分原理,既能体现自己的学习深度和能力,也能帮助我们解决项目中遇到的问题。


    比如:redis和memcached的设计思想?


    redis的哈希槽设计,现在有三主,如果加一台进来,哈希槽怎么分配?


    redis如何实现一个key的值可以超过1M


    主要涉及到了redis内存分配、LRU算法、数据存储、分片集群等内容,这些东西如果只从网上看博客的话,有点不太靠谱了,还是看官方的文档。最好自己学一下源码,毕竟代码是最不会骗人的。


    而且这部分内容蕴含了很多设计的思想,很值得一看。

  • 相关阅读:
    Winform中在ZedGraph中最多可以添加多少条曲线(转)
    c#委托的含义和用法
    vs2010打开vs2017工程
    C# Socket编程资源
    C# 调用打印机 打印 Excel (转)
    NPOI 教程
    C# 调用C++ DLL 的类型转换(转载版)(转)
    进程间通信(网络阅读笔记)
    NPOI 第二篇 设置样式与合并单元格(转)
    分布式事务的 6 种解决方案,写得非常好!
  • 原文地址:https://www.cnblogs.com/saixing/p/6730196.html
Copyright © 2020-2023  润新知