连接:https://www.nowcoder.com/discuss/142537html
下午三点视频面:一上来怼jvm和gcmysql
https://blog.csdn.net/strawqqhat/article/details/88807835面试
标记清除,复制,标记整理,分代回收。算法
https://blog.csdn.net/strawqqhat/article/details/88817163sql
答案:都有stw。数据库
包括缓存
1.1 Young GC类算法:Serial Young GC(DefNew)、Parallel Young GC、ParNew GC;服务器
1.2 Full GC类算法:Serial Old GC、PS MarkSweep GC / Parallel Old GC、Full GC for CMS算法、Full GC for G1 GC算法;并发
1.3 G1 GC算法:Young GC/Mixed GC 是stw的;
2. CMS算法是怎么回事呢?
2.1 CMS(Old)GC算法只在初始标记(initial mark)和再标记(remark)阶段stw一下;
2.2 相似的,G1 GC算法在其标记阶段某几个时段是stop the world的,好比初始标记(initial mark)、再标记(remark)、清理(cleanup)阶段;
InnoDB 引擎
MySQL 5.5 及之后版本中的默认存储引擎,他的优势以下:
灾难恢复性好
支持事务
使用行级锁
支持外键关联
支持热备份
对于InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),主键索引和数据是在一块儿的,数据按主键的顺序物理分布
实现了缓冲管理,不只能缓冲索引也能缓冲数据,而且会自动建立散列索引以加快数据的获取
支持热备份
MyISAM引擎
特性以下:
不支持事务
使用表级锁,并发性差
主机宕机后,MyISAM表易损坏,灾难恢复性不佳
能够配合锁,实现操做系统下的复制备份、迁移
只缓存索引,数据的缓存是利用操做系统缓冲区来实现的。可能引起过多的系统调用且效率不佳
数据紧凑存储,所以可得到更小的索引和更快的全表扫描性能
MEMORY 存储引擎
提供内存表,也不支持事务和外键。显著提升访问数据的速度,可用于缓存会频繁访问的、能够重构的数据、计算结果、统计值、中间结果。
缺点以下:
使用表级锁,虽然内存访问快,但若是频繁的读写,表级锁会成为瓶颈
只支持固定大小的行。Varchar类型的字段会存储为固定长度的Char类型,浪费空间
不支持TEXT、BLOB字段。当有些查询须要使用到临时表(使用的也是MEMORY存储引擎)时,若是表中有TEXT、BLOB字段,那么会转换为基于磁盘的MyISAM表,严重下降性能
因为内存资源成本昂贵,通常不建议设置过大的内存表,若是内存表满了,可经过清除数据或调整内存表参数来避免报错
服务器重启后数据会丢失,复制维护时须要当心
若是选择合适的引擎?
是否须要事务支持
是否为高并发,InnoDB实现了行锁,这方面的表现大大优于MyISAM
索引,不一样存储引擎的索引实现不一样
是否须要外键
高效缓冲数据,InnoDB缓冲数据而MyISAM只缓冲了索引
备份,是否须要支持热备份
参考:http://www.javashuo.com/article/p-rtgonhfq-en.html
https://blog.csdn.net/strawqqhat/article/details/88818291
https://blog.csdn.net/strawqqhat/article/details/88818522
https://blog.csdn.net/zymx14/article/details/78324464
https://blog.csdn.net/strawqqhat/article/details/88818628
https://blog.csdn.net/strawqqhat/article/details/88819261
(一小时左右)
结束 面试官说三天内给消息?