面试
文章平均质量分 64
面试相关
汇来客智慧收银
这个作者很懒,什么都没留下…
展开
-
「淘宝二面」什么是守护线程 应用场景有哪些
什么是守护线程jdk官方介绍The Java Virtual Machine exits when the only threads running are all daemon threads.当 JVM 中不存在任何一个正在运行的非守护线程时,则 JVM 进程即会退出先看一下这段代码public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -&原创 2022-03-16 13:35:19 · 774 阅读 · 0 评论 -
「淘宝一面」HashMap 在使用时需要注意什么地方 至少说出四点
前言彻底弄懂HashMap__Louie的博客-CSDN博客_hashmap我们在面试中, 也会经常被问到HashMap相关的底层实现, 阿巴阿巴....HashMap的底层实现首先它是基于数组(存储对象的引用)加链表(存储对象)实现的当我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对...原创 2022-03-16 09:38:44 · 696 阅读 · 0 评论 -
「网易一面」线程池参数以及提交任务后怎么执行的
核心参数private static int corePoolSize = 20;private static int maxPoolSize = 100;private static int keepAliveTime = 0;private static TimeUnit timeUnit = TimeUnit.MINUTES;private static BlockingQueue blockingQueue = new ArrayBlockingQueue<>(999...原创 2022-03-16 09:07:34 · 199 阅读 · 0 评论 -
「京东一面」子线程如何获取父线程ThreadLocal的值
开门见山想要子线程获取父线程中ThreadLocal中的值,需要其子类InheritableThreadLocal实现测试代码public static void main(String[] args) throws InterruptedException { Thread parentParent = new Thread(() -> { ThreadLocal<Integer> threadLocal = new ThreadLo原创 2022-03-14 14:14:27 · 658 阅读 · 0 评论 -
「Java」彻底掌握ReentrantLock实现原理
ReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指令实现。 CLH队列:带头结点的双向非循环链表(如下图所示):原创 2021-12-30 16:20:19 · 525 阅读 · 0 评论 -
「分布式专题」分布式系统中一致性hash算法
近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等我们以负载均衡为例,常见的负载均衡方法有很多,但是它们的优缺点也都很明显:随机访问策略。系统随机访问,缺点:可能造成服务器负载压力不均衡,俗话讲就是撑的撑死,饿的饿死。 轮询策略。请求均匀分配,如果服务器有性能差异,则无法...原创 2021-12-31 11:13:16 · 382 阅读 · 3 评论 -
设计模式之 观察者模式 (Java代码演示)
所谓监听着模式,我理解的是构建一个容器存放所有被监听的线程或对象,监听每个线程或对象发生的变化,若某个线程或对象触发指定规则,那么则对所有被监听的线程或对象做处理(根据业务需要)。代码展示Main:测试类ObServer:每个被监听的对象实现该接口,重写该方法,完成自己的业务public interface ObServer { /** * 当某一个被监控的对象发生变化时 * 所有实现该方法处理方法 */ voi...原创 2021-10-05 09:11:28 · 1294 阅读 · 0 评论 -
今天聊聊什么是类加载 如何打破双亲委派机制
什么是类加载器?类加载器 就是根据指定全限定名称将class文件加载到JVM内存,转为Class对象。启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在 \lib目录或-Xbootclasspath参数指定的路径中的类库加载到内存中。 其他类加载器:由Java语言实现,继承自抽象类ClassLoader。 如: 扩展类加载器(Extension ClassLoader):负责加载\lib\ext目录或 java.ext.dirs系统原创 2021-08-16 14:36:52 · 311 阅读 · 0 评论 -
innodb是如何实现事物的
innodb 通过buffer pool, logBuffer, Redo Log, Undo Log 来实现事务的, 以update语句举例:innodb 在收到一个update语句后, 会先根据条件找到数据所在的页, 并将该页缓存在buffer pool中 执行update语句, 修改buffer pool中的数据, 即内存中的数据 针对update语句生成一个redoLog对象, 并存入LogBuffer中 针对update语句生成undo Log日志, 用于事务回滚 如果事务提交, 那.原创 2021-08-16 12:36:59 · 787 阅读 · 0 评论 -
JVM常见面试题解析
什么情况下会发生栈内存溢出栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储 局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用 类型 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常,方法递 归调用产生这种结果。 如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成 扩展,或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么Java原创 2021-08-09 11:05:39 · 92 阅读 · 0 评论 -
Redis的五种存储类型和其应用场景 Redis常用方法大全
String:存储简单的字符串,k v形式 list::存储集合数据 hash :存储对象 set:不重复的元素 zSet:不重复有序(根据元素得分排序)的数据 // String 字符串 普通的k v ValueOperations<String, Object> string = redisTemplate.opsForValue(); string.set("test:string:one", "dugt is handso..原创 2021-03-30 12:16:06 · 813 阅读 · 3 评论 -
Java一年两年工作经验面试题
一年经验与应届生的区别,基础少了,项目多了目录自我介绍项目Java基础进阶自我介绍不管是几年都会自我介绍吧。。项目说说项目吧,项目的整体架构你了解多少(我觉得这个比较重要,如果你连你负责的项目整体的架构都不清楚,每天盲目的就负责自己的模块,让你做什么你就做什么,从来不对整个项目关心,说明工作态度不太。。。) 说说你负责的模块 说说你遇到的问题以及如何解决的(多少得说几个,不出问题的项目你觉得???) 说说你负责得模块你认为比较好的地方 在你介...原创 2021-03-27 09:08:45 · 1501 阅读 · 0 评论 -
redis过期策略,内存淘汰机制,高并发和高可用,持久化方式,缓存雪崩等
redis中有哪些过期策略定期删除 + 惰性删除定期删除:是指redis默认每100ms就随机检查设置了过期时间的key,如果过期就删除。假设redis中有10w条key设置了过期时间,每隔几百毫秒就检查这10w个key,cpu负载太高了,redis可能就会挂掉。实际上是随机抽取这10w个中的某些key进行检查删除。 惰性删除:若这10w条数据中有的过期了,而没被redis删除,那么当下次获取这个key的时候,redis会先检查这个key是否过期,若过期就删除该key,返回null当要过期原创 2021-03-07 13:14:22 · 412 阅读 · 2 评论 -
聊聊RabbitMQ RabbitMQ相关面试题
目录为什么要使用消息队列消息队列的缺点各大消息队列的优缺点如何保证RabbitMQ的高可用如何保证消息的幂等性如何保证消息不被丢失如何保证消息的顺序性为什么要使用消息队列目前我所在的公司是一家电商医药,是一款电商小程序,我们订单的模块就用到了RabbitMQ,那为什么我们要使用RabbitMQ呢?无需担心订单接口是否异常,用户下订单直接把订单发送到消息队列去,返回下单成功,订单接口订阅消息队列,消费消息,保存订单~ 解耦:多个系统(B,C,...原创 2021-03-06 16:19:58 · 485 阅读 · 0 评论 -
布隆过滤器应用场景 : 搜索框恶意搜索 缓存穿透等
布隆过滤器的概念这里就不赘述了参考链接如何在海量元素中(例如 10 亿无序、不定长、不重复)快速判断一个元素是否存在?很简单嘛, 把所有的数据都添加到数据结构里去, 如list或map等, get判断不就完了嘛. emmm... 面试官可能会问这么简单的问题吗?数据量小的话, 完全可以的, 那么上亿上百亿呢?引入一个节省空间的数据结构:位图,他是一个有序的数组,只有两个值,0 和 1。0代表不存在,1代表存在。如何确定某一元素在哪个位置是0还是1,怎么解决这个问题呢,那就要用到..原创 2021-03-03 10:50:50 · 311 阅读 · 0 评论 -
Mysql优化 索引优化 优化技术
Mysql数据库的优化技术分析SqlSql优化什么情况下避免使用索引Mysql数据库的优化技术表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] 分表技术(水平分割、垂直分割) 读写[写: update/delete/add]分离 存储过程 [模块化编程,可以提高速度] 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] mysql服务器硬件升级...原创 2021-03-02 14:32:20 · 329 阅读 · 0 评论 -
Java引用拷贝 浅拷贝 深拷贝
浅拷贝实现方式浅拷贝只会重新当前拷贝的对象,并不会重新生成其属性引用的对象easy实现 Cloneable接口 重写clone方法@Datapublic class Student implements Cloneable { private String name; private Integer age; @Override protected Object clone() throws CloneNotSupportedException {原创 2021-02-23 14:10:17 · 172 阅读 · 1 评论 -
简述bean的生命周期
Spring在我们日常开发中是必不可少的那么Spring主要是做什么的?Spring 主要是为我们来管理对象, 解决对象之间的依赖关系, 有效的解决其之间的耦合性对象与bean之间的关系又是怎样的呢对象不一定全是bean, 相反, bean皆为对象好了, 进入正题bean的生命周期.class BeanDefinition : 设置bean的属性, 如Lazy等注意: 在BeanFactory 完成bean创建时, Spring还为我们提供了BeanFacto..原创 2021-02-07 12:19:34 · 1783 阅读 · 0 评论 -
彻底弄懂HashMap
我们在面试中, 也会经常被问到HashMap相关的底层实现, 阿巴阿巴....HashMap的底层实现首先它是基于数组(存储对象的引用)加链表(存储对象)实现的当我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在.原创 2021-02-06 11:11:43 · 3711 阅读 · 10 评论 -
Git 常用命令
仓库增加/删除文件代码提交分支标签查看信息远程同步撤销仓库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]增加/删除文件# 添加指定文件到暂存区$ git add [file1] [file2] ...# 添加指...转载 2020-12-29 15:06:15 · 173 阅读 · 0 评论 -
什么是Cookie,session,token
什么是 Cookie HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息)是一种记录服务器和客户端会话状态的机制:每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。 ..原创 2020-11-07 20:49:56 · 245 阅读 · 0 评论