【23 Java后端】小米

news2024/11/15 12:48:21

一、JavaSE + JaveEE ——

Java 数据结构 —— 集合类

1. HashMap 底层,链表与红黑树转换原因

  • JDK 1.7 HashMap 底层使用 “数组+链表” 实现,数组为主体,链表为了解决 哈希冲突
  • JDK 1.8 HashMap 底层使用 “数组+链表+红黑树” 实现
    当链表长度超过8且数组长度过64时将链表转为红黑树,若当前数组长度小于64,会优先进行数组扩容,转换的原因是当链表过长时线性结构遍历速度过慢

2. Hashtable 和 ConcurrentHashMap 的底层实现

在这里插入图片描述

1. Hashtable

  • 底层:采用 数组+链表 实现,无论key还是value都不能为null
  • 实现线程安全的方式:在修改数据时锁住整个HashTable,效率低
  • 扩容:newsize = oldsize*2+1,将数组大小扩大为原来的两倍
    2. ConcurrentHashMap
  • 底层:Hashtable 的升级,底层采用 分段数组+链表 实现,把整个Map分为N个Segment (默认为 16 个)
  • 线程安全通过 锁分离技术 实现,允许多个修改操作并发进行。但是有些方法需要跨段(size() 、containsValue()),即要锁定整个表(按顺序锁定所有段,操作完毕后,按顺序释放所有段的锁)
  • 扩容:不对整个Map进行扩容,而是进行段内扩容,段内元素超过该段对应Entry数组长度的75%触发扩容,插入前检测需不需要扩容,有效避免无效扩容

3. ArrayList 和 LinkedList的区别和使用场景

ArrayList 和 LinkedList 均是 List 集合类的实现类

1. ArrayList

  • 采用可变数组保存对象
  • 随机访问元素速度快
  • 插入与删除元素的速度相对较慢
  • 适合于具有快速访问对象需求的场景

2. LinkedList

  • 采用链表结构保存对象
  • 随机访问元素速度相对较慢
  • 便于向集合中插入或者删除元素
  • 适合于需要频繁向集合中插入和删除元素的场景

注: 随机访问 —— 指检索集合中特定索引位置的元素



Java 多线程

4. 线程池的参数及创建线程的方式 *

5. volatile保证了什么 及具体的内存屏障,volatile加在基本类型和对象上的区别

6. synchronized 和 ReentrantLock 区别和场景



Java 虚拟机 —— JVM

7. 垃圾回收的算法及详细介绍

8. 反射的介绍与使用场景

9. 两种动态代理的区别(现敲jdk方式)



JavaEE —— 框架题

10. SpringBoot 和 Spring的区别,自动装配的原理

11. SpringCloudAlibaba的组件介绍


数据库 ——

  1. 项目用到的 Redis 数据结构和使用场景
  2. Redis 快的原因
  3. 缓存常见问题和解决方案(引申到多级缓存)
  4. 多级缓存(Redis,Nginx,本地缓存)的实现思路
  5. 自己实现 Redis分布式锁的坑,与zk分布式锁的区别
  6. Redis的主从架构和主从哨兵区别,Redis 主从数据一致性问题
  7. MySQL 的 ACID、隔离级别和并发问题,MVCC
  8. MySQL的 聚蔟索引和非聚蔟索引,B+ 树相比其他结构的优势

计算机基础 ——

  1. 三次握手目的
  2. 线程生命周期与状态转换
  3. HTTP 和 HTTPS
  4. 用户态和内核态切换为什么消耗资源
  5. select、poll 和 epoll相比于前两种的优点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bootstrap是什么,bootstrap如何使用

bootstrap是什么 Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。 使用bootstrap 下载地址

Power BI散点图

散点图可以让一大堆令人困惑的散乱数据变得通俗易懂,并能让你从这些庞杂数据中发现一些表面上看不到的关系,数据量越大,从散点图的分布中越能看出来一些规律。 什么是散点图 在直角坐标系中,用两组数据构成多个坐标点&#xff0…

【无标题】质量管理10题

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

使用 WSL2 进行 Go 开发

文章目录1. 安装 WSL22. 配置 Ubuntu 环境配置 root 用户密码设置默认 root3. 配置 Go 环境下载 SDK配置环境变量配置 GOPROXY4. 使用 GoLand 进行开发由于 kitex 目前对 Windows 下自动生成代码适配不完善,因此使用 WSL2 进行 Go 的开发,在配置 WSL2 环…

IEEE参考文献格式生成 之 谢谢你Zotero!

谢谢你Zotero!心酸的开始方法1(有文献pdf)方法2(无文献pdf)方法3(自己写)怎么找到bib文件呢?期刊论文会议论文书籍(专著)心酸的开始 一开始在看到论文模板的…

20230202英语学习

How James Webb Space Telescope Changed Astronomy in Its First Year 你最爱的这些绝美图像,正在改变宇宙学 The most pressing aim of JWST is one of the most ambitious projects in the recent history of astronomy: to look back at some of the first ga…

力扣刷题记录——1078. Bigram 分词、1207. 独一无二的出现次数 、1089. 复写零

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——1078. Bigram 分词、1207. 独一无二的出…

python面向对象:三大特性

python面向对象三大特性:继承、封装、多态 文章目录python面向对象三大特性:继承、封装、多态一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.封装2.继承3.多态总结一、实验目的 掌握类的封装、多态、继承 二、实验原理 面向对象的三…

Python爬虫3-数据解析方法:正则表达式介绍及案例

目录标题1、正则表达式介绍re库的主要功能函数Re库的match对象Re库的贪婪匹配和最小匹配2、正则表达式案例案例1:所有图片爬取案例2:分页爬取案例3:淘宝商品信息案例4:股票数据1、正则表达式介绍 正则表达式re:简洁表达一组字符串…

PCIe设备的配置过程

PCIe设备的配置过程 文章目录PCIe设备的配置过程参考资料:一、 PCIe系统硬件结构二、 PCIe系统软件层次三、事务层TLP格式3.1 Posted和Non-Posted3.2 TLP通用格式3.3 TLP头部四. 配置与RC直连的设备4.1 怎么访问直连的设备4.2 配置EendPoint五、 配置示例5.1 必备知…

PPT绘图笔记2:PPT导出图片结合ps处理图片

ppt导出的图片有透明背景怎么办?我使用的是组合图。 一开始以为是我的分辨率不行,按照官网的说明在注册表上进行修改1。 然后我在查资料的时候在B站看到一个方法可以用ps填充白色背景,并且修改分辨率.首先导入到ps调整的方法2,记…

AXI 总线协议学习笔记(3)

引言 上篇文章主要介绍了 AMBA以及AXI协议的基本内容,本文接续前文,继续介绍AXI协议的 原子访问、传输行为和事务顺序等。 AXI 总线协议学习笔记(2)https://blog.csdn.net/qq_43045275/article/details/128824643 原子访问 原子…

SpringBoot系列 整合MyBatisPlus入门

官网&#xff1a; https://mybatis.plus/ https://mp.baomidou.com/ 由于MyBatisPlus并未被收录到idea的系统内置配置&#xff0c;无法直接选择加入 pom <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-sta…

【string类的简单模拟实现】

目录 1 类中成员变量的声明 2 迭代器 3 一些常用接口 4 六大默认函数 4.1 构造 4.2 拷贝构造 4.3 赋值运算符重载 4.4 析构 5 开空间&&增删查改 6 其他运算符重载 1 类中成员变量的声明 通过上一篇文章对string类的简单使用相信大家对于string类中成员变量已…

Android so库开发——Swig工具使用(五)

SWIG 是一种软件开发工具&#xff0c;它将 C 和 C 编写的程序与各种高级编程语言连接起来。这里我们用它来将 C/C 转换成 Java。 一、Swig安装 1、下载 官网&#xff1a;SWIG官网下载 源码链接 GitHub&#xff1a;https://github.com/swig/swig.git 这两个地址可能会出现无…

关于Java中的BigDecimal

文章目录为什么用BigDecimalBigDecimal构造方法通过静态方法创建BigDecimal对象BigDecimal常用API关于除法运算的roundingMode将BigDecimal转换为基本类型代码展示小结其他文章为什么用BigDecimal 使用float、double及其对应的包装类时&#xff0c;运算精度可能不满足需求 flo…

scrollTo() 无效问题处理

需求&#xff1a; 实现访问当前页面直接滚动到最底部 方案&#xff1a;window对象的scrollTo()方法 API介绍&#xff1a; 参数接收一个点&#xff08;文档坐标&#xff09;&#xff0c;让该点位于左上角。 可选参数为behavior(设置滚动的效果&#xff09; 错误案例&#xff1a;…

【My Electronic Notes系列——数制与编码】

目录 序言&#xff1a; &#x1f3c6;&#x1f3c6;人生在世&#xff0c;成功并非易事&#xff0c;他需要破茧而出的决心&#xff0c;他需要永不放弃的信念&#xff0c;他需要水滴石穿的坚持&#xff0c;他需要自强不息的勇气&#xff0c;他需要无畏无惧的凛然。要想成功&…

剑指 Offer II 005单词长度的最大乘积

给定一个字符串数组 words&#xff0c;请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时&#xff0c;它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串&#xff0c;返回 0。 示例 1: 输入: words ["abcw"…

前端CSS第二阶段-001

&#x1f60a;博主页面&#xff1a;鱿年年 &#x1f449;博主推荐专栏&#xff1a;《WEB前端》&#x1f448; ​&#x1f493;博主格言&#xff1a;追风赶月莫停留&#xff0c;平芜尽处是春山❤️ 目录 第二阶段学习目标 一、Emmet语法 1.快速生成HTML结构语法 2.快速生成…