北京小厂一面30问

小厂一面30问

  1. Redis除了存储数据外还能实现什么功能?

除了存储数据外,Redis还可以实现数据的缓存、分布式锁、消息队列、计数器等功能。Redis还支持事务、Lua脚本、发布/订阅等高级功能。

  1. HashMap的底层原理是什么?

HashMap是通过数组和链表(或红黑树)实现的。当我们向HashMap中put一个键值对时,首先会根据键的hashcode值计算出它在数组中的索引位置,然后将值存储在对应的链表(或红黑树)中。当产生哈希冲突时,会在链表(或红黑树)中继续寻找对应的值。

  1. HashMap的put是怎么存储数据的,哈希冲突怎么解决的?

当我们向HashMap中put一个键值对时,首先会根据键的hashcode值计算出它在数组中的索引位置,然后将值存储在对应的链表(或红黑树)中。当产生哈希冲突时,会在链表(或红黑树)中继续寻找对应的值。哈希冲突解决的方式是,当链表中元素个数大于等于8时,将链表转化为红黑树,否则继续在链表中寻找。

  1. HashMap不是线程安全的,那有什么是线程安全的?

ConcurrentHashMap是线程安全的HashMap实现。

  1. ConcurrentHashMap是怎么实现的线程安全?

ConcurrentHashMap通过分段锁的方式实现线程安全,将整个HashMap分为多个Segment,每个Segment维护一个HashTable,每个Segment只对自己的HashTable进行操作,可以有效地提高并发性能。

  1. HashMap初始容量大小是多少?

HashMap的初始容量大小是16。

  1. HashMap怎么实现的扩容?

当HashMap中的元素数量达到容量的75%时,就会触发扩容操作,即将容量扩大为原来的两倍,并重新构建哈希表。

  1. HashMap为什么每次扩容为2的n次方?

HashMap每次扩容为2的n次方是为了让元素在哈希表中分布更加均匀。

  1. Java8有什么新特性?

Java8的新特性包括Lambda表达式、函数式接口、Stream API、默认方法、新的Date/Time API等。

  1. Java中有哪些语法糖?

Java中的语法糖包括自动装箱/拆箱、泛型、foreach循环、变长参数、枚举、注解等。

  1. foreach和for有什么区别?

foreach循环是用来遍历集合或数组的简化语法,它不需要我们定义一个计数器或索引变量,可以直接遍历每一个元素。而for循环则需要我们手动定义计数器或索引变量,并通过循环来遍历集合或数组。

  1. foreach底层是怎么实现的?

foreach底层是通过迭代器实现的,它会自动调用集合或数组的iterator()方法获取一个迭代器,然后使用迭代器进行遍历。

  1. MySQL的事务有哪些?

MySQL中的事务包括四个基本操作:ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  1. MySQL事务中隔离性是怎么实现的?

MySQL中的隔离性是通过锁和MVCC(多版本并发控制)实现的,不同程度的隔离级别使用不同的实现方式。锁实现了串行化执行,而MVCC实现了读写分离,多版本并发控制,可以提高并发性能。

  1. 能讲讲MVCC具体怎么实现事务的隔离性的?

MVCC是MySQL中实现事务隔离性的一种方式,它通过在每行记录中保存多个版本来实现。当进行读操作时,会根据事务启动时的时间戳和版本号来选择符合要求的记录版本,从而实现读操作不会被写操作影响的隔离性。当进行写操作时,会将新版本的记录插入到对应的行中,并将旧版本的记录标记为删除,从而实现更新操作不会影响到其他事务读取旧版本数据的隔离性。

  1. ReadView具体是保存了什么数据?

ReadView是MySQL中实现MVCC的一种机制,它保存了当前事务开始执行时的系统版本号和所有活跃事务的ID列表。在事务执行过程中,ReadView会根据这些信息来判断当前事务是否可见其他事务的修改。

  1. InnoDB存储引擎有什么好处?
InnoDB存储引擎具有以下优点:
- 支持事务和行级锁,可以实现高并发和数据一致性。
- 支持MVCC,可以提高读写性能。
- 支持外键约束,可以保证数据的完整性。
- 支持在线热备份和恢复,可以提高数据可用性。
  1. 如果要查询前1-5条数据,在B+树中是怎么进行查找的?

在B+树中,数据是按照键值大小有序地存储在叶子节点上。如果要查询前1-5条数据,可以先定位到最左边的叶子节点,然后从左往右依次扫描叶子节点,取出前5个数据即可。

  1. MySQL中除了InnoDB以外还有什么存储引擎?

MySQL中还有MyISAM、Memory、CSV等多个存储引擎。

  1. MyISAM与InnoDB的区别,有什么优点?

MyISAM和InnoDB在存储方式、锁机制、事务支持等方面有很大的区别。MyISAM适合于读多写少的场景,不支持事务和行级锁,但是具有快速读取和空间占用小的优点;InnoDB适合于高并发、事务严格要求一致性的场景,支持事务和行级锁,但是具有写入慢、空间占用大的缺点。

  1. MySQL中有什么锁?

MySQL中有共享锁(S锁)、排他锁(X锁)、意向共享锁(IS锁)、意向排他锁(IX锁)等多种锁。

  1. 间隙锁是锁的什么数据?

间隙锁是针对B+树中的间隙(即不存在的数据)进行的锁定,它是InnoDB实现MVCC的一种方式,可以避免幻读的问题。

26、在查看某次查询索引时一般看的什么

在查看某次查询索引时一般要看索引是否被正确地使用,可以通过explain命令查看查询计划、索引类型、扫描行数、是否使用了索引等信息。

27、说一下对分布式锁的理解

分布式锁是在分布式系统中实现锁管理的一种方式,它可以保证在分布式系统中的多个节点同时对共享资源进行操作时,只有一个节点能够获得锁,并且在操作完成之后释放锁,从而保证数据的一致性和正确性。

28、说一下什么是线程池

线程池是一种用于管理和复用线程的机制,它可以在应用程序中预先创建一定数量的线程,并将它们保存在一个线程池中,以便根据需要动态地分配线程来处理任务。

29、线程池怎么创建

创建线程池可以使用Java中的Executors工具类提供的静态方法来创建,例如newFixedThreadPool、newCachedThreadPool等方法。

30、创建线程池时主要设置什么属性

创建线程池时主要要设置线程池的核心线程数、最大线程数、线程空闲时间、任务队列等属性。

31、线程池一般可以用在什么情况下

线程池一般可以用在需要频繁创建和销毁线程的场景,例如高并发的网络服务器、大规模数据处理等。

32、springcloud中 你熟悉什么

在Spring Cloud中,我比较熟悉的是服务注册与发现组件Eureka、配置中心组件Config、负载均衡组件Ribbon、断路器组件Hystrix等。

33、nacos是什么,主要实现什么功能

Nacos是阿里巴巴开源的一个服务注册中心和配置中心,主要实现了服务的注册、发现、配置管理等功能。

34、SpringBoot中 请求进来时mapping是怎么处理的,底层是怎么实现的(如Getmapping是怎么处理请求的)

在Spring Boot中,请求进来时mapping是通过Spring MVC框架来处理的。底层实现是通过反射机制来扫描所有的Controller类和方法,并将它们映射到对应的URL上,当请求进来时,会根据请求的URL和HTTP方法来匹配对应的Controller方法,然后执行该方法,并将返回结果封装成HTTP响应返回给客户端。Getmapping是通过RequestMappingHandlerMapping类的getMappingForMethod方法来处理的,该方法会根据方法上的GetMapping注解和请求的URL来匹配对应的方法。

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

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

相关文章

【统计函数3】——excel常见函数

相关数据资料来源于网易 函数一览: rank、rand、randbetween、floor、int rank函数: 求某单元格在某区域内的排名 RANK(数值,引用区域,降序0/升序1)范围多指定: 分开的范围之间可用逗号隔开,最后再用一个小括号括起来。F4可以快速锁定行和列。…

【测试开发】测试用例的设计方法

目录 一. 测试用例的基本要素 二. 测试用例的设计方法 1. 测试用例设计的万能公式 水杯测试用例 2. 基于需求的设计方法 邮箱注册测试用例 3. 等价类方法 有效等价类和无效等价类 等价类思想设计测试用例步骤 4. 边界值方法 边界值思想设计测试用例步骤 5. 判定表方法…

Linux resin自动启动设置

1、添加启动脚本 在 /etc/init.d 添加启动脚本 vi resin #!/bin/sh #chkconfig:345 99 10 #description:auto start resin #/etc/init.d/resin export export JAVA_HOME/usr/weaver/jdk1.8.0_151 export CLASSPATH$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib exp…

Promise

Promise 什么是Promise Promise是一种异步编程的解决方案&#xff0c;可以避免回调地狱&#xff0c;使得异步操作更加简单、清晰、灵活。 为什么使用Promise function request(cb) {// 模拟网络请求let flag Math.random() < 0.5 ? true : falsesetTimeout(() > {c…

利用脚本将代码部署到测试环境(.sh)

1.将上次的部署文件备份名为xxx_bak 2.首次需要输入环境密码 3.并生成一个zip的压缩包,方便部署到线上环境 4.在终端 输入./update.sh 则可执行 文件名update.sh,放在package.json文件同级 # example: 1. ./update.sh 2. 输入服务器密码 【 如果不想每次都输入密码可以先生…

《零基础入门学习Python》第046讲:魔法方法:描述符(Property的原理)

0. 请写下这一节课你学习到的内容&#xff1a;格式不限&#xff0c;回忆并复述是加强记忆的好方式&#xff01; 常言道&#xff1a;“无规矩不成方圆”&#xff0c;讲的是万事万物的发展都要在一定的规则下去运行&#xff0c;只有遵循一定的协议去做&#xff0c;事情才能够按照…

k8s1.18.20:cert-manager 1.8 安装部署

cert-manager 安装部署 一、官网安装文档 https://cert-manager.io/docs/installation/ 1.1、简介 cert-manager 在 Kubernetes 集群中增加了证书 (certificates) 和证书颁发者 (certificate issuers) 作为资源类型&#xff0c;并简化了获取、更新和应用这些证书的过程。 …

基于 Orbit 的云原生应用交付基础原则与良好实践

点击官网了解详情 本文作者&#xff1a;何文强——腾讯云 CODING 高级架构师。 负责 CODING DevOps产品解决方案架构设计和技术产品布道以及 CODING 云原生技术研究与落地实践。在多个技术大会担任演讲嘉宾&#xff0c;腾讯云 CODING DevOps 课程认证出品人&#xff0c;腾讯云云…

PWM呼吸灯+流水灯设计

完成任务&#xff1a; 在流水灯基础上加入pwm呼吸灯设计&#xff0c;关于pwm呼吸灯设计可以看博主上一篇博客PWM呼吸灯设计 &#xff0c;开发板上灯每两秒进行一次切换&#xff0c;每一个的亮灭间隔为一秒。 代码参考&#xff1a; module pwm_led_change(input wire …

数据结构初阶--排序2

目录 前言快速排序思路hoare版本代码实现挖坑法代码实现前后指针法代码实现 快排优化三项取中法代码实现三指针代码实现 快排非递归代码实现 归并排序思路代码实现归并非递归代码实现 计数排序思路代码实现 前言 本篇文章将继续介绍快排&#xff0c;归并等排序算法以及其变式。…

antd-React Table 中文转化

1.首先需要进行中文包导入 2.引入标签对Table进行包裹即可 import zh_CN from antd/lib/locale-provider/zh_CN;import {ConfigProvider} from antd;<ConfigProvider locale{zh_CN}><Tablecolumns{columns}rowKey{record > record.id}dataSource{data}pagination{p…

【ArcGIS】shp导入报错ORA-00911无效字符

这个当个问题记录以下&#xff0c;就是shp文件名或者字段名有非正常字符&#xff0c;修改下名称重新导入即可&#xff1b; 直接改shp没法修改字段&#xff0c;会报错&#xff0c;需要先转化为gdb文件&#xff0c;然后在修改

算法篇--两数之和,梦开始的地方

目录 1.概念&#xff1a;2.两数之和&#xff08;1&#xff09;.暴力破解法&#xff08;2&#xff09;.使用哈希表 3.区别 1.概念&#xff1a; 非形式地说&#xff0c;算法(algorithm)就是任何良定义的计算过程&#xff0c;该过程取某个值或值的集合作为输入并产生某个值或值的集…

el-table组件插槽“slot-scope”

目录 一、代码展示 二、返回的数组对象不含value或者ispass&#xff0c;不会报错 三、插槽里面放的是要手动输入的值时 一、代码展示 <el-table v-loading"loading" :data"checklistList" selection-change"handleSelectionChange"><…

OV7670摄像头模块的使用

OV7670摄像头模块介绍 OV7670 CAMERACHIPTM 图像传感器&#xff0c;体积小、 工作电压低&#xff0c;提供单片 VGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制&#xff0c;可以输出整帧、子采样、取窗口等方式的各种分辨率 8 位影响数据。该产 品 VGA 图像最高达到 30…

Anaconda镜像源

Anaconda镜像源 清华镜像源阿里云镜像源中科大镜像源北大镜像源其他镜像源 清华镜像源 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ # 清华大学Anaconda镜像使用帮助 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ # Anaconda安装包下载 https://mirro…

【Linux】内存使用相关

free 命令 查看内存大小 free -g :G单位 free -h : 可读性较高较理解 free -m : MB单位 total: 总内存used: 正在运行的进程使用的内存(used total – free – buff/cache)free: 未使用的内存 (free total – used – buff/cache)shared: 多个进程共享的内存buffers: 内存保留…

面试题更新之-伪元素和伪类

文章目录 伪元素和伪类是什么&#xff1f;伪元素&#xff08;Pseudo-elements&#xff09;:伪类&#xff08;Pseudo-classes&#xff09;: css伪元素和伪类的区别使用css伪元素的好处使用css伪类的好处 伪元素和伪类是什么&#xff1f; 在CSS中&#xff0c;伪元素&#xff08;…

xpath下载安装——Python爬虫xpath插件下载安装(2023.7亲测可用!!)

目录 1.免费下载插件链接&#xff08;若失效评论区留言发送最新链接&#xff09;&#xff08;2023.7亲测可用&#xff09; 2.安装插件 &#xff08;1&#xff09;打开chrome浏览器页面&#xff0c;点击&#xff1a;右上角三个点 > 扩展程序 > 管理拓展程序 &#xff…

MongoDB(MongoTemplate和MongoRepository)对比

目录 MongoTemplateMongoRepository MongoTemplate //条件查询GetMapping("findUser")public void findUserList() {Query query new Query(Criteria.where("name").is("zhang3").and("age").is(33));List<User> users mongoT…