| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Python知识库 -> 【面经分析】mysql建立索引的几大原则、List,Set,Map、ConcurrentHashMap的实现原理 -> 正文阅读 |
|
|
[Python知识库]【面经分析】mysql建立索引的几大原则、List,Set,Map、ConcurrentHashMap的实现原理 |
1、项目的超卖问题如何解决?
因此解决方法有两个,在后台的秒杀表中,对用户id和商品id设置一个唯一索引,防止一个用户同时秒杀多件商品; 2、排序算法有哪些?快排、归并、堆、冒泡、选择、希尔、桶、计数排序、基数排序 3、堆排序的过程?将无序序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;(升序大顶堆,降序小顶堆) 为啥时间复杂度是O(logn),因为交换并重建堆的过程中,需要交换n-1次,重建堆的过程中,是根据完全二叉树的性质逐步递减的,近似为nlogn。 4、Object类有哪些方法?
5、HashMap的容量为什么要初始化为2的n次幂
先说说哈希表的映射过程,看底层源码可以发现,是hashcode & (length - 1)来达到一个取余的效果,之所以用位运算是因为效率高一些.假如说哈希表的长度是2的n次幂的话,length -1就相当于一个掩码,能够获得hashcode的低位,hashcode的低位实际就是余数. 6、HashMap和ConcurrentHashMap的区别?参考链接:https://www.cnblogs.com/chengxiao/p/6842045.html
7、ConcurrentHashMap的实现原理ConcurrentHashMap内部使用段来表示这些不同的部分,每个段都是一个小的HashTable,他们有自己的锁,只要多个修改操作发生在不同的段上,就可以并发执行。JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)。
两次哈希的过程,第一次确定segment,第二次定位到元素所在链表的头部。 缺点: 扩容: 扩容的实现:先对数组的长度增加一倍,然后遍历原来的旧table数组,将每一个数组元素迁移到新的数组里,迁移完毕后,将新数组的引用直接替换旧的。在迁移链表时,用了两个for循环,第一个for的目的是为了判断是否有迁移位置一样的元素 8、List,Set,Map 三者的区别,使用场景,常见的实现类区别:
常见的实现类:
9、Java注解
10、mysql建立索引的几大原则
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/22 20:09:38- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |