Java笔试、面试
文章平均质量分 80
JohnnyLin00
持续输出学习 持续发光 共同进步!
展开
-
Java面经——SpringCloud微服务
一致性 Hash 是通过一个 Hash 环的数据结构来实现的这个环的起点是 0,终点是2^32-1,即环的数据分布范围是[0, 2 ^32 - 1 ]另外,在一致性 Hash 算法里面,为了避免 hash 倾斜导致数据分配不均匀的情况,我们可以使用虚拟节点的方式来解决。把需要存储的目标 key 使用 hash 算法计算后得到一个 hash 值,同样也会落到hash 环的某个位置上。一致性 hash 算法的好处是扩展性很强,在增加或者减少服务器的时候,数据迁移范围比较小。原创 2024-06-04 17:00:48 · 489 阅读 · 0 评论 -
Java面试——mybatis
在sql session中有一个excutor对象,Local cache对象,当用户发起查询的时候呢,executor就会根据SQL语句在local cache里面去查询,那如果没有命中的话就会再去查询数据库,将查询结果写入Local Cache中,否则那就直接返回。开启了二级缓存的查询流程会在进行一级缓存查询前,通过cachingExecutor进行二级缓存的查询,cachingExecutor对Executor进行了一个封装,实现了多个SqlSession的缓存数据共享,是一个全局缓存。原创 2024-06-04 10:24:57 · 1015 阅读 · 0 评论 -
Java面试——中间件
1、openFeign是一个HTTP客户端,它融合了springmvc的注解,使之可以用REST风格的映射来请求转发。2、可以把openFegin理解为是controller层或是service层。可以取代springmvc控制层作为请求映射,亦或是作为service层处理逻辑,只不过这里,openFeign只是做一个请求转发的逻辑操作。3、openFeign整合了hystrix做熔断处理,同时,可以和ribbon客户端负载均衡、Eureka注册中心配合使用,实现负载均衡的客户端。原创 2024-06-03 20:50:42 · 1180 阅读 · 0 评论 -
9/10字节技术中台一面凉经
1、 你说你的项目用到的公司的分布式锁组件,这个组件什么实现原理,你能讲一讲吗?分布式锁要保证互斥性。 对同一个key进行操作。使用redis的setnx指令,该key不存在时才能设置成功,如果存在则不操作。避免死锁的发生。 设置key时同时为该key设置过期时间。避免误解锁。 将该key的值设置成对应的ip值。当然也有可能被该机器实例的不同redis实例误解锁。因此可以使用UUID作为值。使用redis分布式锁存在问题设置key和过期时间不是原子操作: setNx保证防止误解锁: 设置原创 2022-04-14 12:28:52 · 1074 阅读 · 1 评论 -
Java面试 —— Redis相关
缓存雪崩和解决方案重复排队、并发超卖、数据不一致redis分布式锁单机多线程下存在并发问题。 – 在JVM层面加锁,如synchronized或ReentrantLock分布式部署下存在超卖问题。 --使用Redis分布式锁,加解锁。String value = UUID.random().toString();Boolean flag = stringRedisTemplate.opsForValue().setIfAbsent(REDIS_LOCK, value); //加锁s原创 2022-04-14 12:25:51 · 264 阅读 · 1 评论 -
Shein笔试
小概率事件不等于不可能事件B、如果本类属性是成员属性,静态方法不能访问。C、类方法可以调用外部其他类的方法。只要实力化对象,也是可以调用实例方法的。解决哈希冲突的方法有三种,分别是: 开放地址法:寻找下一个为空的数组下标,而后将冲突元素存储再散列法(二次哈希法):再次使用一个不同的哈希算法再计算一次 (第一次%16换另一个数进行%运算)链地址法(拉链法):将所有冲突元素按照链表存储,冲突后时间复杂度变为O(1+n)n为冲突元素个数)[hashMap就是用这种方法]哈希函数冲突处理的方式.原创 2021-09-18 15:06:52 · 1497 阅读 · 0 评论 -
美团笔试复盘
整除AC 26%听说把long换成BigInteger可以AC82%package meituan;import java.math.BigInteger;import java.util.Scanner;/** * @author Johnny Lin * @date 2021/9/15 12:59 */public class Divide { public static void main(String[] args) { Scanner reade原创 2021-09-18 15:05:34 · 223 阅读 · 1 评论 -
Java面试 —— MySQL相关
MySQL 相关数据库基础什么是事务?事务的特性:(ACID)ACID实现原理事务隔离级别并发事务分类四种隔离级别X锁和S锁MVCCUNDO_LOG版本链ReadViewRRMVCC优缺点常用SQL 语句Truncate1、 数据库的三大范式数据库基础什么是事务?事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功。即使一个操作失败,事务也不会成功。如果所有操作成功则事务提交,其修改将作用于其他数据库进程。如果操作失败,则事务将回滚,该事务所有操原创 2021-09-08 23:12:15 · 368 阅读 · 0 评论 -
CVTE 2022届实习生 Web后台开发笔试
双亲委派机制是指子类加载器会优先委派父类加载器去加载该类,如果父类加载失败,自己才会去加载。JVM垃圾回收的复制算法是指: 把空间分成两块,每次只对其中一块进行GC。当这块内存使用完时,就将还存活的对象复制到另一块上面。由于大多数新生代对象都不会熬过第一次GC,所以没必要1:1划分空间,可以分一块比较打的Eden空间和两块比较小的Survivor空间,比例是8:1:1 。当回收时,将Eden和Survivor中还存活的对象一次性复制到另一块Survivor空间中。如果存活对象大于10%,则采用一种分配担.原创 2021-07-03 10:31:35 · 2860 阅读 · 8 评论 -
Java面试 —— Java基础
1、 == 与 equals在说明上述两个的区别前,需要了解Java中基本数据类型和引用类型是如何存储的。基本数据类型存放于栈帧中,存放的是变量的值。而引用变量类型在栈中存放的是引用的地址,内容是存放在堆中的。例如,int x = 12,由于x是基本数据类型,栈中存放的是变量的值12,。而String s = new Striing(“zs”)s是通过new运算符生成的,是对象,其栈存放的是"zs"在堆中的内存地址0x11。Java中的"=="有两种比较方式。对于基本类型来说,比较的是值,而对于引用类原创 2021-06-04 14:02:58 · 488 阅读 · 0 评论 -
Java面试——JVM篇
JDK、JRE 和JVM的区别JDK(Java Development Kit,java开发工具)包括Java语言、工具类 (包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe))) 还有JRE(Java Runtime Environment)。开发Java程序(包括编译和运行),需要安装JDK。JRE(Java运行环境)包含了部署技术、JavaSE API(基本的类库如java.lang和util等jar)和JVM。.原创 2021-05-24 16:11:46 · 377 阅读 · 2 评论 -
Java面试——网络篇
DNS域名解析的过程在浏览器输入某个网址对应的解析过程:浏览器首先会搜索自身的DNS缓存是否有对应刁牧且没有过期,如果有且没有过期则解析到此为止。否则,浏览器会尝试读取HOST文件,看看是否有该域名对应的IP地址,如果有则解析成功。否则,浏览器会发起一个DNS的系统调用。向本地配置的首选DNS服务器(本地域名服务器)发起域名解析请求。本地域名服务器会首先查找自身缓存,找到对应条目且没有过期的则解析成功。否则会通过递归或者迭代两种方式解析。迭代:① 本地域名服务器向根域名服务器发送请求②原创 2021-05-23 16:45:37 · 551 阅读 · 2 评论