面试真题

计算机网络

1. Tcp udp 具体哪个协议在哪一层

​ 见计算机网络面试题

2. Get Post 请求区别

​ 浏览器是否会主动缓存, 是否安全, 浏览器回退是否会重新发起请求 , 参数支持编码类型, 参数传送位置, 参数长度限制, 请求的编码方式,

​ 详见计算机网络面试题

MYSQL

1. mysql的数据引擎是什么 mysql是否支持行表锁 事务

innoDB 支持行表锁

2. 乐观锁和悲观锁

​ 见mysql面试题

3.事务的隔离级别,分别解决了什么问题

见mysql面试题

4. select * 和select 列名 区别

select * 效率差 扩展性差,以后加字段了 查询的无用数据更多了 实际项目用 select 列名

5 为什么使用B+树作为mysql索引结构

不选择二叉树:容易退化为链表,查找效率低下

不选择红黑树:1,层级太多,因为我们只有7个数据,层数即高度就这么多,如果要是很多的数据,那样不就更多了,假如树的高度是20,我们查找的元素在叶子结点,最快最快也要经过20次查找,也就要经过20次磁盘io查找

不选择b树:B+比B树低,io次数少,查找效率高

  • 因为B+树的非叶子节点不存放实际的数据,这样每个节点可容纳的元素个数比B-树多,树高比B-树小,这样带来的好处是减少磁盘访问次数。尽管B+树找到一个记录所需的比较次数要比B-树多,但是一次磁盘访问的时间相当于成百上千次内存比较的时间,因此实际中B+树的性能可能还会好些。

  • B+树的叶子节点使用指针连接在一起,方便顺序遍历和范围查询,这也是优于hash索引的地方。

  • B+树的查询效率更加稳定,每次查询的效率一样。

  • 以下是常见的面试题:

  • 1,那么B+树和B树的区别是什么呢?

    B+数是从B树改进来的,它和B树的主要区别在于,B+树中保存元素的节点都位于叶子节点,非叶子节点只起到索引的作用。而且,B+树不同子树直接有指针连接起来了。

    ***2,数据库的索引一般采用B+树来实现,可以达到的时间复杂度为log(n)。***更进一步讨论这个问题,如果我们用hash表来保存索引,那么时间复杂度可以达到O(1)。既然用哈希表保存索引比B+树效率更高,那为什么不用哈希表来实现数据库的索引呢?这主要是考虑数据量的问题。数据库的索引是保存在磁盘上的,如果数据量太大,那么就没有办法一次都载入内存。

    3,关于B树,B树是一个多路排序树,为什么要设计成多路的呢?

    是为了进一步降低树的高度,提高查找效率。在极端情况下,把多路定位无限多,那么B树会变成一个有序数组。

    B树一般用在文件系统索引上。文件系统索引为什么喜欢用B树,而不用红黑树或有序数组呢?这是因为,文件系统的索引都是保存在磁盘上的,如果数据量特别大的话,不一定能够一次都载入到内存中。我们可以每次只加载B树的一个节点进行查找。

    4,为什么B+树的叶子节点要用指针连接起来?
    这个是和业务场景有关的。B+树常用来保存数据库索引,数据库select数据,不一定只选一条,很多时候会选多条。如果选多条的话,B树需要进行局部的中序遍历,才能获取到所有符合条件的元素,而且很可能要跨层访问。而B+树因为所有元素都在叶子节点上,且不同子树的叶子节点已经用指针连接起来了,当需要选择多条数据时,B+树就会有很大的优势。

多线程

1. 线程的的三种实现方式

1.继承Thread类

2.实现Runable接口

3.通过实现Callable接口

Java知识

1. 设计模式 单例模式 饿汉式 懒汉式

设计模式详见 设计模式面试题

单例设计模式 详见 设计模式面试题:

2. 成员变量和局部变量是否需要初始化

TODO

3. Synchronized底层实现
4. HashMap的数据结构 是否线程安全(否)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值