
面试
文章平均质量分 79
面试速记
信仰_273993243
热爱技术热爱生活,希望大家共同进步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java集合汇总
不管是HashSet,LinkedHashSet,还是TreeSet,只需要把Map系列搞懂后再来看就比较容易了。3、LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。1、LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的;1、Hashtable //线程安全, 键、值都不能是空对象。2、HashMap //非线程安全,键和值都可以是空对象。Map:代表具有映射关系的集合;原创 2023-10-31 16:44:20 · 135 阅读 · 0 评论 -
创建线程的四种方法
java中创建线程的四种方法以及区别继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程使用线程池例如用Executor框架Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用四种方式来创建线程,如下所示:1、继承Thread类创建线程2、实现Runnable接口创建线程3、使用Callable和Future创建线程4、使用线程池例如用Executor框架继承Thread类创建线程通过继承转载 2021-11-07 19:49:13 · 509 阅读 · 0 评论 -
SpringBoot-事务相关
Spring Boot 事务的使用1、如何使用事务2、JDBC和JPA的事务管理分别是什么?3、指定Spring中使用使用哪种事务类型4、项目多个事务,如何指定5、为何在实际开发中我们在启动类上面不写@EnableTransactionManagement,事务还是可以生效第一个问题:使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional便可第二个问题:事务管理器项目中数据库组件如果是转载 2022-04-21 22:39:01 · 858 阅读 · 0 评论 -
面试-spring-各种bean实例化过程
1、Cglib有多种实例化对象的方式,一个是通过反射拿到构造方法,创建实例,第二个是通过Cglib创建代理对象下面通过几个我们开发中接触比较多的例子,讲述下bean的实例化过程一、带有@Configuration注解类实例化Spring在实例化带了@Configuration注解类,会通过Cglib来给类创建代理对象。下面是核心代码逻辑ConfigurationClassEnhancer enhancer = new ConfigurationClassEnhancer();Class<?&原创 2022-04-08 22:07:03 · 2111 阅读 · 0 评论 -
连接池-HikariCP面试用
如果请求流程,可以不看细节直接跳到总结一、思考1、连接池作用:估计都知道,保存数据库连接,避免下次请求时再新建耗时。2、连接池存什么? 平常可能不太注意,仔细翻翻源码稍微思考一下就知道了。Mysql连接是mysql-connector-java.jar提供的,他给我返回Connection实例。而连接池存的就是Connection实例,高效的提供给多线程使用。3、那到底跟我们自己List存一下有什么区别呢?也就是连接池解决什么问题、如何高效:多线程时,每个线程使用一个Connection,可能有10原创 2022-04-06 15:48:30 · 436 阅读 · 0 评论 -
面试-数据库连接池-HikariCP和DruidCP区别
SXDBC是众安自己封装的,但其实底层数据库连接池,也可以用HikariDataSource、DruidDataSource下面介绍了,连接池的创建流程。先从加载DataSource开始在关联Mybatis的时候,需要注册DataSource对象@Beanpublic DataSource dataSource() { try { return SxdbcDataSourceFactory.createDataSource( this.dbNa转载 2022-04-05 23:36:29 · 3252 阅读 · 0 评论 -
面试-JDK-线程池-ThreadPoolExecutor源码
ThreadPoolExecutor构造方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable>转载 2022-04-05 23:26:19 · 529 阅读 · 0 评论 -
面试-MQ-常用消息及区别
一、RocketMQ1、消息的种类同步消息异步消息单向消息 同步消息(可靠同步发送)同步发送是指消息发送方发出数据后,会阻塞直到MQ服务方发回响应消息异步消息(可靠异步发送)异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。MQ的异步发送,需要用户实现异步发送回调接口(SendCallback),在执行消息的异步发送时,应用不需要等待服务器响应即可直接返回,通过回调接口接收服务器响应,并对服务器的响应结果进行处理单向(one-way)消息单向(On转载 2022-04-04 16:35:33 · 680 阅读 · 0 评论 -
面试-业务-秒杀功能总结
一、架构原则秒杀系统本质上就是一个满足大并发、高性能和高可用的分布式系统架构原则: 4要 1不要数据尽量少:用户请求的数据能少就少,包括上传给系统的数据和系统返回的数据请求数尽量少路径尽量短依赖尽量少二、动静分离如何才能做好动静分离?有哪些方案可选? 1、什么是动静数据以商详页为例,产品的基本信息就是静态数据,像库存这样的或者是和用户相关的信息就理解成动态数据 2、静态数据缓存静态数据,因为Java服务器不善于处理大量的http请求,所以像一些静态数据,可以通过其他的Web框原创 2022-04-04 13:30:16 · 1639 阅读 · 0 评论 -
面试题0402-国泰君安
一、LinkedList和ArrayList的区别LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用public class LinkedList<E> { transient int size = 0;//数量默认时0 transient Node<E> first; transient Node<E> last;}public class ArrayList<E>{ priv原创 2022-04-02 15:37:21 · 1018 阅读 · 0 评论 -
面试-JDK-Synchronized、Volatile、AtomicInteger
一、内存模型Java内存模型:JMMJava所有变量都存储在主内存中每个线程都有自己独立的工作内存,里面保存该线程的使用到的变量副本(该副本就是主内存中该变量的一份拷贝)规则:线程对共享变量的所有操作都必须在自己的工作内存中进行,不能直接在主内存中读写不同线程之间无法直接访问其他线程工作内存中的变量,线程间变量值的传递需要通过主内存来完成流程:线程1对共享变量的修改,要想被线程2及时看到,必须经过如下2个过程:把工作内存1中更新过的共享变量刷新到主内存中将主内存中最原创 2022-04-02 13:00:04 · 280 阅读 · 0 评论 -
面试-数据库mysql-索引
一、所以类型1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引 二、Mysql索引方式1、FullText:全文索引目前只有MyISAM引擎支持。且字段类型必须是CHAR、VARCHAR ,TEXT 列上可以创建全文索引,它的出现是为了解决LIKE “%xxx%" 这类针对文本的模糊查询效率较低的问题注意:在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE INDEX创建FULLTEXT索引,要比先为一张表建立FULLTEXT然后再将数据写入的速.原创 2022-04-02 10:07:47 · 1096 阅读 · 0 评论 -
Spring-Cloud五大基础组件
一、EurekaEureka包含三部分1、Eureka Server:存放服务名和服务对应地址的映射表,这就是咱们常说的服务注册中心2、Eureka Client for application service:服务提供方,向 Eureka Server 注册本身的地址。3、Eureka Client for application client:服务消费方,从 Eureka Server 获取 application service的地址,并消费对应的服务,它包含内置的负载均衡器。例如:订单服务转载 2022-03-31 15:54:29 · 398 阅读 · 0 评论 -
Eureka、Nginx和ZooKeeper的介绍
1、Nginx是著名的反向代理服务器,也被广泛的作为负载均衡服务器2、ZooKeeper是分布式协调服务框架,有时也被用来做负载均衡先说下什么是注册中心规则每一个微服务启动的时候,都需要去注册中心注册(eureka或zookeeper或其他),同类服务注册的服务名必须相同,不同类服务注册的服务名一定不能相同1、订单服务部署5台服务器,那么这5台微服务在注册中心中注册的服务名必须一致,例如ORDER2、商品服务部署4台服务器,那么这4台微服务在注册中心中注册的服务名必须一致,例如GOODS3.原创 2022-03-31 15:34:46 · 2499 阅读 · 1 评论 -
HashMap之JDK不同版本碰撞追加元素
JDK1.6//如果遍历链表没发现这个key,则会调用以下代码addEntry(hash, key, value, i);void addEntry(int hash, K key, V value, int bucketIndex) { Entry<K,V> e = table[bucketIndex]; table[bucketIndex] = new Entry<K,V>(hash, key, value, e); if (size++ >= thresho转载 2021-05-23 22:07:48 · 199 阅读 · 0 评论 -
面试-HashMap源码
HashMap、扩容、链表、红黑树原创 2022-03-25 10:02:37 · 643 阅读 · 0 评论 -
缓存穿透、缓存雪崩、缓存击穿区别和解决方案
一、缓存穿透缓存穿透是指查询一个一定不存在的数据,从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案1、采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,定时把数据库的数据存到布隆过滤器中。请求进来不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。2、一个查询返回的数据为空,我们仍然把这个空结果进行缓存,但原创 2022-03-22 23:05:04 · 1844 阅读 · 0 评论 -
面试-springboot-mybatis启动流程
一、看完本篇文章你会知道1、Mapper是如何被扫描进来的2、Mapper是如何被实例化的二、Spring加载Mapper1、在spring启动的时候,会执行refresh刷新方法,刷新里面会有一个invokeBeanFactoryPostProcessors方法,他调用ConfigurationClassPostProcessor后置处理器去加载各个Bean2、ConfigurationClassPostProcessor会在Bean中找到是Configuration类型的Bean,判断这个Be原创 2022-03-20 13:18:52 · 1158 阅读 · 0 评论 -
面试-Java代理汇总
在Java语言中,从织入切面的方式上来看,存在三种织入方式:编译期织入、类加载期织入和运行期织入。1.运行期织入 这是最常见的,比如在运行期通过为目标类生成动态代理的方式实现AOP就属于运行期织入,这也是Spring AOP中的默认实现,并且提供了两种创建动态代理的方式:JDK自带的针对接口的动态代理和使用CGLib动态创建子类的方式创建动态代理。2.编译期织入 使用特殊的编译器在编译期将切面织入目标类,这种比较少见,因为需要特殊的编译器的支持。3.类加载期织入 通过字节码编辑技术在类加载期转载 2022-03-16 17:21:29 · 221 阅读 · 0 评论 -
面试-mybatis重要的类
一、mybatis执行流程这里是Mybatis自己的流程,不包含spring1、重要标签mybatis-config.xml有3个重要标签transactionManager、mappers、dataSource标签dataSource存的是数据库的连接信息transactionManager存的是事务管理模式。事务回滚就是通过这个来选择事务类型的。mappers标签,主要是把配置DAO.xml关联进来,DAO.xml有个namespace标签表示这个DAO.xml所对应的DAO.java类原创 2022-03-07 23:16:25 · 462 阅读 · 0 评论 -
面试-Jvm内存模型
一、划分1、线程独占区:线程独占区指的是一个线程单独占用的资源2、线程共享区:多个线程共同会用到的资源。比如:方法区和堆。所有线程共享,一起用。功能一、程序技数器:控制代码的执行顺序二、java虚拟机栈:局部变量表,方法出口等三、本地方法栈和虚拟机栈:本地方法栈为虚拟机执行native方法服务四、java堆,存放对象实例,垃圾收集器管理的主要区域五、方法区:常量,静态变量二、垃圾回收回收策略1、标记-清除算法:对失去引用的对象进行标记,通过标记在进行请除,性能不是很好。因为垃圾分布比.原创 2022-03-02 20:47:38 · 482 阅读 · 0 评论 -
mysql面试-分库分表
一、mysql分库分表查询,不带分表键,且不是看第三页1、全量查在通过内存分页因为不清楚按照时间排序之后的第三页数据到底是如何分布在数据库上的,所以必须每个库都返回3页数据,所得到的6页数据在服务层进行内存排序,得到全局视野,再取第3页数据。缺点:有性能瓶颈,如果查询偏移量过大的分页会导致数据库获取数据性能低下2、业务折中禁止跳页查询,不提供“直接跳到指定页面”的功能,只提供下一页的功能。极大的降低技术方案的复杂度。第一页的选取方法和全局视野法一样,但是点击下一页时记住上一页最后一条数据的作为第二原创 2022-03-02 17:13:43 · 4119 阅读 · 1 评论 -
mysql面试用
MySQL服务器逻辑架构从上往下可以分为三层:第一层:处理客户端连接、授权认证等。第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。第三层:存储引擎,负责MySQL中数据的存储和提取,MySQL中服务器层不管理事务,事务是由存储引擎实现的。ACID是衡量事务的四个特性:1、原子性(Atomicity,或称不可分割性)原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做;如果事务中一个sql语句执行失败,则已执行的语句也必须回滚,数据库退转载 2022-02-14 17:50:01 · 196 阅读 · 0 评论 -
面试-线程安全集合
一、线程不安全ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等二、线程安全如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现ConcurrentHashMapConcurrentLinkedQueueConcurrentLinkedDequeCo转载 2022-02-22 09:42:10 · 432 阅读 · 0 评论 -
AQS面试相关内容
AQS–指AbstractQueuedSynchronizer类AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。AQS锁的类别 – 分为“独占锁”和“共享锁”两种。独占锁 – 锁在一个时间点只能被一个线程锁占有。根据锁的获取机制,它又划分为“公平锁”和“非公平锁”。公平锁,是按照通过CLH等待线程按照先来先得的规则,公平的获取锁;而非公平锁,则当线程要获取锁时,它会无视C.转载 2022-02-22 15:40:52 · 237 阅读 · 0 评论