随笔分类 - JAVA常见问题
摘要:一、消息中间件 ==== rabbitmq,kafka,rocketmq,是什么,为什么? 常见的问题: 1. 消息丢失问题(生产者消息丢失,消息队列丢失,消费者消息丢失,是什么,为什么,怎样解决) 2. 保证消息顺序性问题(某一类有顺序性的消息,都推送到同一个队列上,且用一个消费者去消费就会保证消
阅读全文
摘要:历史背景: 在2001年之前,大部分服务器都是单核的,并不是多核。(虽然ForkJoin的实现思想已经在2001年之前已经出现了),一直到jdk1.7的时候(2011年),才将ForkJoin的是实现代码加入到jdk的juc包中!(源码中的实现逻辑很复杂),因为2011年,多核cpu已经非常普遍了,
阅读全文
摘要:1、为什么要生成自己的maven脚手架(maven骨架)? 问题背景: 1.1 目前公司中没有统一使用模板工程,都是每个业务线根据自己的之前项目去创建新项目。没有统一的工程结构规范, 1.2 重新搭建也很浪费时间,而且会出错。(作为一个准时下班的程序员,必须要高效率,高质量地完成任务) 所以我们必须
阅读全文
摘要:一、面试官问:AOP是什么? 与OOP对比,面向切面,传统的OOP开发中的代码逻辑是至上而下的过程中会长生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不会散落在代码的各个地方,造成难以维护,AOP的编程思想就是把业务逻辑和横切的问题进行分离,从而达到解耦的目的,使代码的重用性和开发效率高(
阅读全文
摘要:1、问题: 静态代码块,构造代码块,无参构造函数,普通代码块,执行顺序到底是怎样的呢? 直接看图 执行main函数之后,结果如下: 静态代码块main函数执行构造代码块2222无参构造函数1111111普通代码块 注意点:构造代码块和普通代码块的区别? 》构造代码块是放在类上的,普通代码块是放在方法
阅读全文
摘要:BIO、NIO、AIO > Block-IO : inputStream 和OutputStream,Reader和Writer 1个连接,启动一个线程,这样导致很大的线程开销 NIO的特点是:应用程序要不断地询问内核,是否已经准备好。 第一阶段“”反复查看数据:是非阻塞的 第二阶段:拷贝数据阻塞等
阅读全文
摘要:java.util.concurrent : 提供了并发编程的解决方案 1、CAS 是java.util.concurrent.atomic包的基础 2、AQS是java.util.concurrent.locks包以及一些常用类,比如:Semophore ,ReentrantLock等类的基础 J
阅读全文
摘要:Hashtable 1、早期java类库提供的哈希表的实现 2、线程安全:涉及到修改Hashtable的方法,使用synchronized修饰 3、串行化的方式运行,性能较差 问题:如何优化Hashtable? > 1、通过锁细粒度化,将整锁拆解成多个锁进行优化 总结: 比起Segment,锁拆得更
阅读全文
摘要:问题:HashMap 、HashTable、ConccurentHashMap的区别? 》 hashMap(JAVA8以前):数组+链 每个数据中保存的是,链表的头节点。实际上hashMap是通过位运算来获取头部信息,比hash算法的效率高。 HashMap(Java9及以后):数组+链表+红黑色
阅读全文
摘要:工作中消失而面试却长存的算法与数据结构 1、优秀的算法和数据结构被封装到了Java的集合框架之中 数据结构考点: 1、数组和链表的区别 2、链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作 3、队列,栈的应用 4、二叉树的遍历方式以其递归和非递归的实现 5、红黑色的旋转 算法考点: 1、
阅读全文
摘要:这个题目是考察多个方面 但是要回答出关键点: 1、平台无关性 2、GC 3、语言特性、泛型、反射、lamda 4、面向对象 5、类库 6、异常处理
阅读全文
摘要:类的加载方式 1、隐式加载:new 2、显式加载,loadClass,forName 等 loadClass 和 forName的区别 类的装载过程 1、加载:通过classLoader加载class文件字节码,生成Class对象,将这些数据放到运行时数据区的方法区中,在运行时,在数据区堆中生成一个
阅读全文
摘要:1、说到谈谈类加载器,不得不说就是类加载器的双亲委派机制。 不同的classloader加载类的方式和加载路径都不一样,各自管理自己的范围 这个过程就是在每种classload中找出是否已经加载过将要加载的类。逐个检查,找到已加载过的就返回。这个过程,明显是用递归去实现。 为什么要使用双亲委派机制去
阅读全文

浙公网安备 33010602011771号