java面试笔记

https://www.bilibili.com/video/BV1QE411N7kP?p=58

 

索引:
索引的定义: 索引是mysql中为了快速查询而创造的一种数据结构
索引: B+Tree
形容一下B+Tree , 数据都保存在叶子节点,在其他节点只是保存多个元素和指针
数据存储模型engine = mySarm 或者 InNoDB
mysql索引如何优化:1.找到慢sql,2.explain 一下 3.联合索引要有最左原则等
---------------------------------------------------------------------------------------------
jvm:
jvm的组成:类装载区,运行时内存数据模型,字节码执行引擎
内存模型:堆,栈,本地方法栈,方法区,程序计数器
栈是什么:每一个线程都会在栈里面开辟一个地址,线程里面的每个方法都对应一个栈帧,先进后出原则
栈里面有:局部变量,操作数栈,动态链接,方法出口
堆是什么:每次创建一个对象,都是在堆里面完成的
本地方法栈:以netive修饰的接口名称,它不是java实现的,可能是C或者其他语言来实现的
方法区:常亮,静态变量,类class文件都是在这里
程序计数器:用于表明程序直行到哪一行
堆中包括什么:新生代和老年代,新生代占1/3,老年代占2/3,新生代又分为eden区和2个幸存区
-------------------------------------------------------------------------------------------------------------
多线程:
volatile是什么意思:缓存可见性,当这个变量被修改了之后,其他使用这个变量的线程也会被通知这个变量被修改了,但是不是立刻的
volatile内部的原理:MESI缓存一致性
volatile是线程安全的吗?答案是不安全的
------------------------------------------------------------------------------------------------------------------------------
P23开始就没看--》P54

---------------------------------------------------------------------------------------
transient是什么意思:transient的意思是这个属性不会被序列化
----------------------------------------------------------------------------------------------------

hashmap:
创建HashMap的时候的初始值是什么?答案是16,代码里面是2的整数倍即可,因为查询的时候用的是位运算
HashMap的组成:桶数组+散列表+红黑树,在jdk1.7中是只有桶数组和散列表,在jdk1.8中新增加了红黑树
HashMap的查询和新增,修改的时间复杂度是O(logn)
新增一个(key,value),如何知道它在HashMap的位置?key.hashcode() % 16
hash冲突的原因? key.hashcode() % 16 ,有两个key得到的结果是相同的,那么就会又hash冲突
如何解决hash冲突?答案是: jdk7头部插入法, 将hash冲突的多个key 组合成一个元素即可
hashmap是线程不安全的:体现在哪里:1.数据丢失2.死锁

----------------------------------------------------------------------------------------------------

61后面就没看--》

posted @ 2019-10-07 21:29  纯丿乱  阅读(182)  评论(0编辑  收藏  举报