面试题
文章平均质量分 67
一些经典面试题汇总,会不断的完善和更新,如果有错误希望大家可以指点一下
List也想做开源
这个作者很懒,什么都没留下…
展开
-
JVM 面试题+答案
Parallel Scavenge收集器(吞吐量优先收集器):工作新生代,JKD8的默认收集器,因为需求为高吞吐量使用该收集器,采用复制算法。MinorGC:发生在新生代的垃圾回收,因为新生代的特点,MinorGC非常频繁,且回收速度比较快,每次回收的量也很大。Paralel old 收集器:工作在老年代,是Parallel Scavenge收集器的老版本,采用标记-整理法。根据对象的存活的时间的长短,将内存分为了新生代和老年代,这样就可以针对不同的区域,采取对应的算法。原创 2023-06-18 15:16:20 · 46 阅读 · 0 评论 -
SpringMVC 面试题+答案
是轻量级的web层框架,底层基于Servlet Api实现的。通过MVC思想把Servlet的代码进行分离、解耦,把传统的web项目的代码拆分,一部分交给SpringMVC完成,一部分交给我们完成。原创 2023-06-18 15:15:42 · 192 阅读 · 0 评论 -
Redis 面试题+答案
定义:在高并发下,大量的key在同一时间过期了,大量的请求直接落在数据库上,导致数据库宕机。解决方案:1.随机设置key过期时间,避免大量key集体失效。2.不设置过期时间3.使用定时任务,过期前刷新缓存。定义:Redis和数据库都没有对应的key,导致查询Redis不存在,无法拦截,直接被穿透到数据库,导致数据库压力过大宕机解决方案:1.对于不存在的数据缓存到Redis中,设置一个短期过期时间2.拉黑该IP3.对数据做校验,校验不合法的key4.使用布隆过滤器。原创 2023-06-18 15:11:55 · 41 阅读 · 0 评论 -
MySql 面试题+答案
事务是一种机制、一个操作序列,是访问和更新数据库的程序执行单元。事务中包含一个或多个数据库操作命令,会把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。原创 2023-06-18 15:13:23 · 50 阅读 · 0 评论 -
网络传输相关 面试题+答案
关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。发送方发出消息后会等待接收方返回ACK报文,确认消息是否已经接收,如果发送方迟迟等不到ACK消息,会触发重发机制,再发一条。3.第三次握手,客户端收到SYN和ACK包,向服务器发送ACK确认包,客户端和服务端进入TCP连接成功状态。原创 2023-06-18 15:12:27 · 177 阅读 · 0 评论 -
多线程 面试题+答案
4.创建线程池,使用Executor框架接口的实现创建线程池,和Excutors工具类创建线程池。1.实现Runnable接口,实现run方法,方法没有返回值,无法抛出异常。2.实现Callable接口,实现call方法,方法有返回值,可以抛出异常。2.不可剥夺条件:一个线程已经获得资源,在未释放之前都不会被其他线程抢占。进程:是操作系统分配资源基本单元,有独立的内存空间,由多个线程组成。(我的总结是:围绕资源展开,同一个时间上资源只能一个线程拥有)4.循环等待条件:多个线程相互等待对方释放资源。原创 2023-06-18 15:12:02 · 34 阅读 · 0 评论 -
RabbitMq面试题+答案
通过维护一张ets表来实现,append方式写入文件,RabbitMq启动时会启动两个进程,一个负责持久化消息存储,一个负责非持久化消息存储(当内存不足时才会),首先是先写入buffer缓冲区,再每隔25秒进行一次刷盘,写入文件。大致是把消息放到普通队列中,设置一个TTL(过期时间),过期后消息被放到死信队列,然后通过监听死信队列来实现。1.声明队列时,指定noack=false(把自动提交改成手动提交),broker会等待消费放返回ACK消息,才会删除消息,否则自动删除。routingkey是完全匹配。原创 2023-06-18 15:11:30 · 402 阅读 · 0 评论 -
Java 基础知识面试题+答案
ArrayList 和Vector使用数组方式存储数据,他们都允许直接按序号索引取值,但是插入数据涉及数组元素移动等内存操作,所以索引数据快,而插入数据慢,由于Vector使用了synchronized锁,所以性能上比ArrayList差一些。Set的特点:元素无放入顺序,且不可重复(注意:元素虽然无放入顺序,但是元素在Set中的位置是由该元素的HashCode决定的,其位置是固定的)。List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。原创 2023-06-18 15:08:54 · 92 阅读 · 0 评论 -
Spring 面试题+答案
Spring 是一个开源的J2EE应用框架,是针对Bean的生命周期进行管理的轻量级容器。IOC:控制反转。以前一般创建对象是由创建者去通过new创建,有了Spring之后,创建对象全部交给Spring容器去帮我们创建进行管理。DI:依赖注入。就是将对象的属性注入到具体的对象中。@Autowried,@Resource populateBean方法注入。容器:存储对象。使用map结构去保存对象,在Spring中存储对象一般有三级缓存,singletonObjects用来存放完整对象。原创 2023-06-18 15:10:10 · 43 阅读 · 0 评论 -
SpringBoot 面试题+答案
refresh方法:是启动的核心步骤。1.new SpringApplication():去spring.factory里面查找我们的初始化器,再去里面查找我们的监听器,还有些其他操作,选择我们应用的sevlet的类型。3.调用prepareContext方法:准备上下文(监听配置、设置环境对象、进行初始化操作、load对应的资源)在整个自动装配中,做了加载启动类,把启动类注入容器中。实现的方法名称(准备上下文):prepareContext(监听配置、设置环境对象、进行初始化操作、load对应的资源)原创 2023-06-18 15:07:47 · 473 阅读 · 0 评论