Java面试问题20190915[精校版]

链接:https://www.nowcoder.com/discuss/77?type=&order=0&pos=357&page=1
来源:牛客网

1,mysql的三大引擎是啥?

 

mysql常用的引擎有InnoDB,MyISAM,Memory,默认是InnoDB

InnoDB:磁盘表,支持事务,支持行级锁,支持外键,B+Tree索引

ps:优点: 具有良好的ACID特性。适用于高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。

缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。

 mysql的4大特性+4种隔离级别:https://www.cnblogs.com/xuanzhi201111/p/4103696.html 

MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引

ps: 优点:占用空间小,处理速度快(相对InnoDB来说)

缺点:不支持事务的完整性和并发性

MEMORY(Heap):内存表,不支持事务,表级锁,Hash索引,不支持Blob,Text大类型

ps: 优点:速度要求快的,临时数据

缺点:丢失以后,对项目整体没有或者负面影响不大的时候。

参考:  mysql数据库引擎常用总结    MySQL数据库引擎详解  Mysql四种常见数据库引擎

2,redis的hash算法用的是啥?

 

redis应该是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率优点,google改进的版本cityhash也是redis中用到的哈希算法。现有的主流的大数据系统都是用的 MurmurHash本身或者改进

参考: 电商系统学习笔记之重要的hash算法MurmurHash

 

3,nosql为啥比sql快?

Nosql是非关系型数据库,因为不需要满足关系数据库数据一致性等复杂特性所以速度快;

sql是关系型数据库,功能强大,但是效率上有瓶颈

 

4,什么是索引为啥nosql没索引?nosql有索引滴

 

索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。

聚簇索引:有主键时,根据主键创建聚簇索引;没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引;如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引

非聚簇索引:非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引

 

5,B+树和B树区别?

 

B树的非叶子节点存储实际记录的指针,而B+树的叶子节点存储实际记录

B+树的叶子节点通过指针连起来了, 适合扫描区间和顺序查找。

参考: 红黑树性质   B树和B+树

 6,hadoop2.0跟1.0相比有啥区别?

 

1、hadoop2.0的NameNode有热备份,1.0没有热备份,NameNode挂掉整个系统就瘫痪了

2、2.0采用yarn平台,mapreduce被剥离开,可以支持mapreduce,storm,spark等计算框架 2.0有多个namenode,避免了单点瓶颈。 将jobtracker拆分成资源调度和监控。全局资源管理为resourcemanager,单个作业监控管理为appplicationmaster。nodemanager监控资源占用情况,并且和rm通信。更细粒度的资源管理container,包括了cpu,内存等。

你可能感兴趣的:(考试/面试/笔试,JAVA)