1、数据库的左连接就是左边的表全保留,右边的表不同的部分全去除。
2、数据库的右连接就是右边的表全保留,左边的表不同的部分全去除。
3、外连接、全连接:将两个表重叠的字段取一次,剩下的部分字段合成一个新表。
4、string类可以被继承吗?不能,因为String 类被final修饰
5、面对对象的三个特征:继承,封装,多态(很鸡儿尴尬,因为新年玩太久了2333,面试官一问突然懵了)
6、类加载过程:加载->验证->准备->解析->初始化->使用->卸载(同上,很尴尬反正 )
7、ACID(原子性《通过bin log和undo log实现》,隔离性,一致性,持久性《redo log》)
8、查询语句是否使用索引,使用expalin语句,只要不是all就用到了索引。
9、@controller帮我们做了什么 过程详解
3.1续更:
昨天的面试很有意思,x云科技的技术面让我意识到还需要去多学一点东西,会在后续总结出来。
还有一家公司,电话过来本来要面试的,我和他说了一下最近收到的offer情况,hr小姐姐说,可能面上了也不会去他们公司,然后就挂了,就挺尴尬的。
下面来说一下昨天面试遇到比较有意思的,后续面试遇到的问题会补充到我的资料里,大家在网盘里重新下载资料即可。
1、前面巴拉巴拉巴拉一堆ioc和aop的常见问题,然后问Springboot的自动注入如果是两个类互相自动注入会出现问题吗?
新版本或当前版本不会,因为bean的生命周期里已经提前把bean的依赖关系和bean初始化完毕了,不会形成一个循环new对象的过程。但是如果你是自己new的对象去调用就会出现死循环也就会报错。
2、照样前面巴拉巴拉巴拉一堆hashmap的常见问题,然后问完扩容,问我hashmap什么时候红黑树会退化回链表结构,这里我特意找了一下源码:
大意就是当hashmap的红黑树节点数小于等于6的时候,会将红黑树转换回链表,为什么不选用7呢,因为数据很容易因为各种原因添加和删除,如果一直卡在8和7的话,数据结构一直变换,系统消耗会很大,所以源码规定了6为一个分界点。
static final int UNTREEIFY_THRESHOLD = 6;
if (loHead != null) {
// 如果loHead不为空,且链表长度小于等于 6,则将红黑树转成链表
if (lc <= UNTREEIFY_THRESHOLD)
tab[index] = loHead.untreeify(map);
else {
tab[index] = loHead;
//hiHead == null 时,表明扩容后,所有节点仍在原位置,树结构不变,无需重新树化
if (hiHead != null)
loHead.treeify(tab);
}
}