2020秋招过程中遇到的不会的面试题

发布于:2021-07-20 07:18:24

一、Java中值类型和引用类型的区别?


Java中包含8种基本数据类型,分别是 byte,boolean,char,short,Jint,float,double,long,其余的都属于引用数据类型。
其一:在于值类型的实例是直接分布在栈中,而引用类型在栈中只有一个变量名称类似于一个指针指向堆内存中,在使用上值类型的效率更高。
其二:在于值类型的变量包含了数据的副本,而引用类型的变量只包含了所指向的堆内存地址,当使用参数传递时,值类型的参数传递不会影响到原来的数据,而引用类型的参数传递可能影响到原本的引用类型中的数据。
其三:值类型的数据内存不需要GC来回收,当作用域结束后会自动释放,而引用类型需要靠GC来回收内存。
其四:值类型是封闭类型数据,不能够被继承,而引用类型可以作为其他类的父类。
其五:值类型是继承自System.ValueType,System.ValueType再继承System.Object,而引用类型是直接继承自System.Object。

二、常用排序算法时间复杂度、空间复杂度分析

三、说说Redis的多线程


???,我:Redis不是单线程的吗?面试官:好了,这个过了。我:??
后面查了资料,是这样说的Redis的单线程指的是所有的网络请求都是用单线程处理的,所以不用担心并发的安全性问题,但是在其他处理模块也是用的多线程来处理的。在Redis中处理网络请求的模块称为文件事件处理器。由多个套接字、IO多路复用、文件事件派发器、事件处理器几个部分组成。而文件事件分派器的队列是单线程的。


四、Mybatis中dao层的接口类和配置文件是如何对应的?


配置文件中的每一条sql语句都会被封装成MappedStatement对象,然后会通过
HashMap集合保存起来,通过调用getMapper()方法可以判断出是否有注册过Mapper
接口,然后通过生产代理类工厂来生成代理类MapperProxy,通过MapperProxy来调
用invoke方法,将mapper.xml里面配置的sql语句和对应的mapper接口方法进行关联
并放入map缓存中,后期直接走缓存了。最后执行execute()方法。Mapper接口是没有
实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定
位一个MappedStatement。

五、mysql数据库索引为什么使用B+树?


简化一下回答,相较于B树而言:B树中的每一个节点都存储数据信息,而B+树做了优
化,只有叶子节点存储数据信息,非叶子节点存储索引,节省了不必要的查询,B树在
查询遍历等操作时需要中序遍历才能够得到结果,B+树的是有序的,并且B+树提高了
IO性能并解决了遍历效率低的问题,B+树只需要遍历叶子节点就可以遍历整个树,可以
范围查询,而B树不行。

六、后续的再更新


留此共勉

相关推荐

最新更新

猜你喜欢