![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 71
zyf_fly66
这个作者很懒,什么都没留下…
展开
-
面试题-18RebbitMq
rabbitMq四种常用消息中间件比较分析(RabbitMQ、ActiveMQ、Kafka、RocketMQ)你们公司生产环境用的是什么消息中间件? 从吞吐量来说:kafka和rocketMq支持高吞吐 从持久化消息比较:ActiveMq 和rabbitmq都支持 高并发来说:rabbitMq最好异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。 流量削锋 -可以通过消息队列长度控制请求量;可以缓解短时间内的高原创 2021-03-01 17:59:36 · 161 阅读 · 0 评论 -
面试题-17AIO BIO NIO
BIO,NIO,AIO 总结Java 中的 BIO、NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。程序员在使用这些 API的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码。只需要使用Java的API就可以了。在讲 BIO,NIO,AIO 之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。同步与异步同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。异步:异步就是发起一个调用后,立刻得到被调用者的回应表示已原创 2021-03-01 17:37:27 · 106 阅读 · 0 评论 -
面试题-16数据库
事务的概念事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功MySQL中事务默认自动提交的,每当执行一条SQL,就会提交一个事务 (一条SQL 就是一个事务) Oracle 中事务默认 不自动提交,需要在执行SQL 语句后 通过commint 手动提交事务mysql的事务 四个特性(ACID)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency)事务前后数据的完整性必须保持原创 2021-03-01 17:15:07 · 410 阅读 · 0 评论 -
面试题-15反射
1.使用new关键字这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。2.使用Class类的newInstance方法我们也可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。3.使用Constructor类的newInstance方法和Class类的newInstance方法很像,java.lang.reflect.Constructor类里也有一个newInstanc原创 2021-02-25 15:52:01 · 68 阅读 · 0 评论 -
面试题-14泛型
概念:泛型是一个未知的数据类型E e:Element 元素 T t:Type 类型等使用泛型和不使用泛型的区别不使用泛型好处:集合不使用泛型,默认类型是Object类型,可以存储任意类型弊端:不安全,会引发类型转换异常使用泛型好处:避免的转换的麻烦,存储什么类型,取出什么类型;把运行期异常提醒到编译器弊端:泛型是什么类型只能存储什么类型泛型的定义和使用泛型类定义格式:修饰符 class 类名<泛型>{}class ArrayList<E> {原创 2021-02-25 15:39:31 · 62 阅读 · 0 评论 -
面试题-13锁
首先来说下synchronize和Lock的区别两者都是锁,用来控制并发冲突,区别在于Lock是个接口,提供的功能更加丰富,除了这个外,他们还有如下区别:synchronize自动释放锁,而Lock必须手动释放,并且代码中出现异常会导致unlock代码不执行,所以Lock一般在Finally中释放,而synchronize释放锁是由JVM自动执行的。Lock有共享锁的概念,所以可以设置读写锁提高效率,synchronize不能。(两者都可重入)Lock可以让线程在获取锁的过程中响应中断,而sync原创 2021-02-25 15:33:01 · 112 阅读 · 0 评论 -
面试题-12多线程
什么是线程和进程?进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程 进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。进程与线程的区别线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—WeightProcess)或进程元;而把传统的进程称为重型进程(Heavy—WeightProces原创 2021-02-25 15:28:03 · 377 阅读 · 0 评论 -
面试题-11Mybatis
MyBatis编程步骤是什么样的?1、 创建SqlSessionFactory2、 通过SqlSessionFactory创建SqlSession3、通过sqlsession执行数据库操作4、 调用session.commit()提交事务5、 调用session.close()关闭会话#{}和${}的区别#{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。缓存Mybatis的一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作原创 2021-02-25 14:57:09 · 68 阅读 · 0 评论 -
面试题-10SpringBoot
SpringBootSpringBoot原理(自动装配)1.首先在启动类上,通过SpringApplication.run()方法 进行启动,他的原理就是,run()方法内部是通过refreshContext(context)进行刷新容器,然后去解释@SpringBootApplication注解,将=bean注入容器里面,然后就会去解析我们写的那个springApplication类springApplication他本身是个配置类因为在@SpringBootApplication注解内部有个注原创 2021-02-25 14:51:06 · 54 阅读 · 0 评论 -
面试题-9SpringMVC
SpringMvc流程用户发送请求至前端控制器DisPatcherServlet DisPatcherServlet收到请求之后调用handlerMapping 处理器映射器处理器映射器找到具体的处理器,生成处理器对象和处理器拦截器(有就生成)返回给dispatcherServletDispatcherServlet调用HandlerAdapter处理器适配器,适配器经过适配调用具体的处理器handler执行得到ModelAndView并返回给前端控制器,前端控制器将ModelAndView原创 2021-02-25 11:48:02 · 112 阅读 · 0 评论 -
面试题-8Spring
什么是 IoCIoC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。例如:现有类 A 依赖于类 B传统的开发方式 :往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来 使用 IoC 思想的开发方式 :不通过 new关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面过去即可。从以上两种开发方原创 2021-02-25 11:33:31 · 367 阅读 · 1 评论 -
面试题-7Servlet
get和post有何区别?get参数传递通过url,post放在resquest body中 get请求参数有长度限制,post没有get不安全,因为参数暴露在url中。post安全,参数是隐藏的 get请求只能进行url编码。post支持多种编码get请求参数会被完整保留在浏览历史记录,而post不会被保留。 get产生一个tcp数据包;post产生两个tcp数据包。get和post本质就是tcp链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现原创 2021-02-25 10:48:08 · 48 阅读 · 0 评论 -
面试题-6session 和 cookie
1.cookiecookie采用的是客户端的会话状态,他是服务器再本地 机器上存储的一小段信息,并且随着请求发送给服务器。 通过 cookie cookie= new cookie 创建,通过cookie.setMaxAge 设置cookie的持久化时间2.SessionSession 是将数据存储在服务器中,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间。所以说Session的实现是基于Cookie,Session需要借原创 2021-02-25 10:25:07 · 111 阅读 · 1 评论 -
面试题5- CurrentHashMap
CurrentHashMap的原理由于HashMap是线程不同步的,虽然处理数据的效率高,但是在多线程的情况下存在着安全问题,因此设计了CurrentHashMap来解决多线程安全问题。HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以转载 2021-02-24 12:37:59 · 1097 阅读 · 0 评论 -
面试题3-集合
1.ArrayList有序的,有下标,线程不安全,允许为Null1.初始为一个空的Object数组2.当我们第一次添加元素时,数组的长度赋值为10,3.当集合长度不够,扩充到原来的1.5倍4.查询快,添加和删除慢用法:创建:ArrayList< >list = new ArrayList<>();增加:list.add();删除:list.remove();修改:list.set();查看:list.get();遍历ArrayList的方法1.普通f原创 2021-02-24 12:06:52 · 42 阅读 · 0 评论 -
面试题4-HashMap
hashmapHashMap是应用更广泛的哈希表实现,而且大部分情况下,都能在常数时间性能的情况下进行put和get操作。要掌握HashMap,主要从如下几点来把握:jdk1.7中底层是由数组(也有叫做“位桶”的)+链表实现;jdk1.8中底层是由数组+链表/红黑树实现可以存储null键和null值,线程不安全 初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂扩容针对整个Map,每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入插入元素后才判断原创 2021-02-24 12:06:12 · 174 阅读 · 0 评论 -
面试题-2.设计模式
单例模式:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。通过提供一个静态的对象instance,利用private权限的构造方法和getInstance()方法来给予访问者一个单例。缺点是,没有考虑到线程安全,可能存在多个访问者同时访问,并同时构造了多个对象的问题。之所以叫做懒汉模式,主要是因为此种方法可以非常明显的lazyloading原创 2021-02-24 10:20:50 · 78 阅读 · 0 评论 -
面试题1-jvm
1.jvmjvm就是Java虚拟机 ,它就是编译后 .class文件和硬件系统之间的接口 它的主要特征就是平台无关性原理:编译后的程序不直接在硬件系统的cpu执行 ,而是在jvm上执行,它屏蔽了具体平台的相关信息,它只需要Java程序生成字节码文件就能直接在jvm上运行 不用修改任何东西。JVM = 类加载器 classloader + 执行引擎 execution engine + 运行时数据区域 runtime data area类加载器classloader 把硬盘上的class原创 2021-02-24 10:06:48 · 66 阅读 · 0 评论