java面试
文章平均质量分 89
早起的虫子jj
初级学渣
展开
-
线程池的关闭
1.线程中断当我们调用线程的interrupt方法,它有两个作用:如果此线程处于阻塞状态(比如调用了wait方法,io等待),则会立马退出阻塞,并抛出InterruptedException异常,线程就可以通过捕获InterruptedException来做一定的处理,然后让线程退出。如果此线程正处于运行之中,则线程不受任何影响,继续运行,仅仅是线程的中断标记被设置为true。所以线程要在适当的位置通过调用isInterrupted方法来查看自己是否被中断,并做退出操作。注:如果线原创 2021-10-21 10:46:02 · 4210 阅读 · 0 评论 -
java面试之plus
1.观察者模式和发布订阅模式1.区别前者:观察者订阅主题,主题也维护观察者的记录,而后者:发布者和订阅者不需要彼此了解,而是在消息队列或代理的帮助下通信,实现松耦合。前者主要以同步方式实现,即某个事件发生时,由Subject调用所有Observers的对应方法,后者则主要使用消息队列异步实现。2.延迟消费2.1 redis zset实现将延迟的消息任务通过 hash 算法路由至不同的 Redis Key 上,这样做有两大好处:a. 避免了当一个 KEY 在存储了较多的延时消息后,入原创 2021-09-09 22:25:23 · 170 阅读 · 0 评论 -
Java面试之Mysql
1.mysql事务是怎么实现的?2.mysql幻读怎么解决?3.innodb和myisam区别?4.索引原理?5.聚簇索引6.怎么解决幻读问题7.mvcc8.读多写少用啥锁,写多读少呢9.你知道的索引,区别,分别什么时候用,针对B+索引和hash索引10. 最左前缀则?11. 男女字段可以建立索引吗?status呢?12. B树和B+树的区别?减少IO次数?11.数据库死锁是怎么产生的?12.mysql回表问题13.innodb页结构14.mysql中的log(undolog)原创 2021-09-09 22:24:48 · 341 阅读 · 0 评论 -
java面试之常见场景题
首先将整个文件分成许多份,比如说m份,划分的依据就是使得每一份的大小都能放到内存里。然后我们用快速排序或者堆排序等方法对每一份数据进行一个内部排序,变成有序子串。取这m份数据的最小元素,进行排序,输出排序后最小的元素到结果中,同时从该元素所在子串中读入一个元素,直到所有数据都被输出到结果中为止。优化2:在一次分割结束后,可以把与Key相等的元素聚在一起,继续下次分割时,不用再对与key相等元素分割。优化1:当待排序序列的长度分割到一定大小后,使用插入排序。优化3:优化递归操作。原创 2021-09-03 10:00:00 · 11314 阅读 · 1 评论 -
java面试之消息队列
1.消息队列的好处解耦耦合的状态表示当你实现某个功能的时候,是直接接入当前接口,而利用消息队列,可以将相应的消息发送到消息队列,这样的话,如果接口出了问题,将不会影响到当前的功能。削峰高流量的时候,使用消息队列作为中间件可以将流量的高峰保存在消息队列中,从而防止了系统的高请求,减轻服务器的请求处理压力。异步异步处理替代了之前的同步处理,异步处理不需要让流程走完就返回结果,可以将消息发送到消息队列中,然后返回结果,剩下让其他业务处理接口从消息队列中拉取消费处理即可。2.模型Consume原创 2021-08-29 19:00:18 · 166 阅读 · 0 评论 -
详解Java代理
详解Java代理由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。1.静态代理在源码阶段我们手动的写个代理类将目标类给包装起来举个例子:如果要买火车票的话,需要去火车站买票,坐车到火车站,排队等一系列的操作,显然比较麻烦原创 2021-08-25 23:57:33 · 118 阅读 · 0 评论 -
Java面试之Mybatis
1.工作原理(1)SqlSessionFactoryBuilder().build(inputStream):这行代码解析mybatis.xml文件,解析mapper节点。mapper也就是我们定义的如UserMapper.xml这种文件,将其解析成一个mapperStatement中,然后存放在Configraution这个对象中,这个对象又是sqlSessionFactory中的一个属性。(2)sqlSessionFactory.openSession():开启一个会话,用来执行sql。(3)s.原创 2021-08-15 20:40:35 · 125 阅读 · 0 评论 -
Java面试之Redis
Redis知识点总结一、如何保证缓存数据库双写一致性?参考:https://blog.csdn.net/hukaijun/article/details/81010475?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162191277916780265499764%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_原创 2021-08-08 23:11:14 · 241 阅读 · 0 评论 -
Java面试之JVM
1.谈谈双亲委派是啥?有啥好的?向上委托给父类加载,父类加载不了再自己加载**避免重复加载,防止Java核心api被篡改**使得 Java 类随着它的类加载器一起具有一种带有优先级的层次关系,从而使得基础类得到统一。 例如 java.lang.Object存放在 rt.jar 中,如果编写另外一个 java.lang.Object 并放到 ClassPath中,程序可以编译通过。由于双亲委派模型的存在,所以在 rt.jar 中的 Object 比在 ClassPath 中的 Object优先级更原创 2021-06-02 09:43:39 · 190 阅读 · 0 评论 -
Java面试之Linux指令
ls、cd、touch 创建普通文件、rm 删除、mkdir 新建目录、mv 移动、cp 拷贝、chmod 修改权限rm -rf /bbb 强制删除/目录下的bbb目录。如果bbb目录中还有子目录,也会被强制删除,不会提示;touch testFile 创建文件list mkdir cd cp mv rm等等查看日志:tail(从尾查看) -n(行数) -f(实时动态) 文件名 也可以通过管道命令结合grep来进行日志的过滤级别。head从前向后看,和tail相反grep under原创 2021-07-19 23:23:29 · 210 阅读 · 0 评论 -
Java面试之操作系统
1.进程和线程1.1 区别线程是操作系统进行资源分配和调度的一个基本单位。进程中可以包含多个线程。多个线程共享进程的堆和方法区资源,但每个线程又有属于自己的本地方法栈、虚拟机栈、程序计数器线程是进程一个实体,是 cpu 调度和分派的基本单位,是比进程更小的可以独立运行的基本单位。线程间可能存在相互影响,执行开销较小,不利于资源的管理和保护,线程间是共享进程中的资源的1.2 应用场景多线程模型适用于 I/O 密集型场景,因为 I/O 密集型场景因为 I/O 阻塞导致频繁切换,线程只占用栈,程序计原创 2021-07-13 23:53:21 · 268 阅读 · 0 评论 -
Java面试之Spring
Spring面试题1.循环依赖的问题怎么解决?必须三级缓存吗?参考:Spring 循环依赖2.bean对象的生命周期?3.IOC是啥?解释下流程?DI呢?4.AOP的原理?5.Spring框架的优势? 1、Spring通过DI、AOP和消除样板式代码来简化企业级Java开发 2、Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它将Spring扩展到不同的领域,如Web服务、REST、移动开发以及NoSQL 3、低侵入式设计,代码的污染极低 4、独立于各种应用服原创 2021-05-27 16:28:06 · 402 阅读 · 0 评论 -
Java面试之计算机网络
1.说一下http协议:背景,互联网上需要传输视频、文字、图片等信息。应用层协议。请求结构、响应结构。http1.0、http1.1、http2.0,最后在到https.1.1 http1.0和1.1的区别?1)长连接。HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。2)节约带宽。HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持**断点续传**功能。HTT原创 2021-06-06 19:46:40 · 1288 阅读 · 0 评论