当前位置: 首页 > news >正文

【面试宝典】准备面试了~集合

1、ArrayList和linkedList的区别

它们都是继承自 Collection。

ArrayList 是基于数组的,在使用查询的时候效率比较高,但删除效率却非常低,因为它需要重新排数组中的所有数据。

LinkList底层是一个双链表,在添加和删除元素时更好的性能,但查询效率却非常低。

2、try catch finally,try里有return,finally还执行么?

首先,不管有没有异常,finally模块肯定会执行的,哪怕 try 里有 return,也是一样。

还有就是,finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

3、能简单的介绍下多路复用 IO 模型吗

多路复用 IO 模型其实就是NIO,在这个模型中,它会有一个线程,不断的去轮询socket的状态,如果socket发生真正的读写事件时,才会真正的调用实际上的读写操作。

它的优势就在于,在该模型下,只需要一个线程,就可以管理多个socket的状态。系统不需要再额外建立,或者去管理多个线程,极度节省了系统线程资源。

成于轮询,败于轮询,它是对到达的事件,进行逐一响应,所以一旦如果事件响应体较大,就会导致后续的事件迟迟得不到响应,会影响功能上的进度。

4、MQ如何避免消息重复投递或重复消费?

首先在消息生产的时候,在MQ的内部,会针对生产者生产的消息生成一个唯一ID,作为去重条件,可以避免消息重复进入队列里。

然后在消费时,必须要求消息体中有一个消费ID,作为消息消费的去重依据,防止同一条消息重复消费。

5、消息队列满了以后该怎么处理?

首先消息队列的延时或者过期失效,会导致消息不断积压。

首先肯定需要临时紧急扩容,然后再恢复consumer的问题,先确保恢复消费者的消费速度,然后再将现有的consumer都停掉。

第二步,新建一个topic,partition,queue数量,大小是原先的10倍。然后再手写一个临时分发数据的consumer消费者程序,部署到项目中去,代替停掉的消费者程序。

接着再征用10倍的机器来部署consuemr消费者程序,这种做法就是临时将消费者扩大了10倍,以之前正常速度的10倍来消耗。

6、如何停止一个正在运行的线程?

大家首先想到的肯定是调用 stop 方法强制终止。但是不推荐这个方法,因为这个方法在API里是过期作废的方法。

那么除了stop还可以使用退出标志,使线程run方法完成后,正常退出。

还可以使用interrupt方法中断线程。

class InterruptThreadDemo3 {
public static void main(String[] args) throws InterruptedException {MyThread m1 = new MyThread();System.out.println("Starting thread...");m1.start();Thread.sleep(3000);System.out.println("Interrupt thread...: " + m1.getName());m1.stop = true; // 设置共享变量为truem1.interrupt(); // 阻塞时退出阻塞状态Thread.sleep(3000); // 主线程休眠3秒以便观察线程m1的中断情况 System.out.println("Stopping application...");} 
}

7、sleep()和wait() 有什么区别?

  • sleep()方法属于Thread类中的方法,而wait()方法属于Object类方法。
  • sleep()方法不会释放对象的锁,它只是暂时让出CPU资源,给其他线程,时间到了,会自动恢复运行。
  • wait()方法,会释放对象的锁,会重新进入到对象等待池中,重新竞争锁资源,需要使用notify才能唤醒。
http://www.lryc.cn/news/18322.html

相关文章:

  • 华为OD机试真题Python实现【GPU 调度】真题+解题思路+代码(20222023)
  • gcc编译C源程序
  • Tina_Linux_各平台多媒体格式_支持列表_new
  • 归并排序及其应用
  • 【PAT甲级题解记录】1007 Maximum Subsequence Sum (25 分)
  • 华为OD机试真题Python实现【 最小叶子节点】真题+解题思路+代码(20222023)
  • mars3d动态轨迹DynamicRoamLine,如何获取实时运⾏的经纬度
  • jvm常识
  • PHP部署、nginx与PHP的整合、PHP动态添加模块
  • SpringCloud与SpringBoot的版本对应
  • 华为OD机试题,用 Java 解【N 进制减法】问题
  • Linux->进程概念于基本创建
  • 【MySQL】5.7版本解压安装配置
  • c++类对象数据成员和虚函数的内存布局
  • Python 模块和包
  • Java零基础专栏——面向对象
  • 离散无记忆与有记忆信源的序列熵
  • 算法该不该刷?如何高效刷算法?
  • Allegro如何在关闭飞线模式下查看网络连接位置操作指导
  • 啊哈 算法读书笔记 第 1 章 一大波数正在靠近——排序
  • Servlet笔记(5):HTTP请求与响应
  • 信号的运算与变换
  • 【GO】K8s 管理系统项目9[API部分--Secret]
  • ESP32 Arduino EspNow点对点双向通讯
  • Linux SID 开发指南
  • Matlab进阶绘图第2期—线型热图
  • 【Redis中bigkey你了解吗?bigkey的危害?】
  • C++回顾(一)——从C到C++
  • CRF条件随机场 | 关键原理+面试知识点
  • 秒懂算法 | 回归算法中的贝叶斯