面试题目1
面试题目
1:JDK讲解
JDK:java development kit
JRE: java RunTime Environment
二进制 | 八进制 | 十六进制 |
---|---|---|
0b | 0 | 0x |
0b10101010 | 01237 | 0x137ADF |
float f = 0.1f;
double d = 0.1/10;
System.out.println(f==d);
输出:false
结论:float 有限、离散、舍入误差、大约、接近不等于
银行小数:Meth中的BigDecimal方法
float f = 0.1f;
double d = 1.0/10;
System.out.println(d==f);// 输出false
char c = '\u0061';// unicode编码
System.out.println(c);// 输出a
System.out.println((char) 65);// ASCII码 输出A
2、MySql索引讲解
索引是帮助MySql高效获取数据的 “排好序” 的数据结构
数据结构有:二叉树、红黑树、B-Tree、B+Tree,根据键值对去找值
select * from user where id = 7;
通过遍历数据库的表,找到该条数据的地址位置,慢查询(数据亿万时)?
如何解决
添加索引
二叉树:开始于根节点,左小右大
缺点:当数据库是递增的时候,就等于链表查询
改进二叉树
红黑树(平衡二叉树):右边节点不能大于左边2个阶层
缺点:数据量大时,树的高度太高
更进一步的升级二叉树
B-Tree
给根节点分配更多的地址空间,多个根节点(16k)
B+Tree(冗余索引)增加效率 >=左边 <右边
非叶子节点不存储data,只有最下层的叶子节点才有data(特点:更多的根节点)
一个索引 8+6=14b
16kb/14b = 1170个索引元素
3层= 1170x1170x16—>两千万条
最下层得到地址指针
Hash索引
最快的方法,通过一次hash运算的值变成指针,再将值存到另外一个表中
缺陷:不能进行范围查找!!!
hash运用:MD5、CRC16加密运算
索引存放的位置
存储引擎形容的是表,而不是Mysql
-
(B-Tree) mysiam引擎—>.frm后缀的是表结构 .MYD是表数据 .MYI是表索引
-
(B+Tree)innodb引擎—>.frm后缀的是表结构 .idb的是表数据和索引
3、联合索引
MySql索引优化最佳方案???
联合索引底层结构长什么样?
例如:最左前缀原则
3、联合索引
MySql索引优化最佳方案???
联合索引底层结构长什么样?
例如:最左前缀原则
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8tfmgV8-1596540491081)(C:\Users\海角天涯S\Desktop\狂神说java\面试题目\4.png)]