当前位置: 首页 > 后端技术 > Java

Java面试题总结(附答案)

时间:2023-04-01 16:15:18 Java

TopicPart1,JavaBasics1、JDK和JRE有什么区别?2.==和equals有什么区别?3、如果两个对象的hashCode()相同,equals()也一定为真吧?4.final在java中的作用是什么?5.什么是java中的Math.round(-1.5)?6、String属于基本数据类型吗?7.java中操作字符串的类有哪些?它们之间有什么区别?8.Stringstr="i"和Stringstr=newString("i")一样吗?9.如何反转字符串?10、String类的常用方法有哪些?11.抽象类一定要有抽象方法吗?12.普通类和抽象类有什么区别?13.抽象类可以用final修饰吗?14.接口和抽象类有什么区别?15.java中IO流有几种类型?16、BIO、NIO、AIO有什么区别?17、Files的常用方法有哪些?18.什么是反射?19.什么是java序列化?什么时候需要序列化?20.什么是动态代理?有哪些应用?21.如何实现动态代理?22.为什么要使用克隆?23.如何实现对象克隆?24、深拷贝和浅拷贝有什么区别?25.throw和throws有什么区别?26.final、finally、finalize有什么区别?27.try-catch-finally的哪一部分可以省略?28、try-catch-finally中,如果catch中有return,finally还会执行吗?29.常见的异常类有哪些?30.newString("a")+newString("b")会创建多少个对象?二、Java集合1、java容器有哪些?2、Collection和Collections有什么区别?3.List、Set、Map有什么区别?4、HashMap和Hashtable有什么区别?5.说说HashMap的实现原理?6、set有哪些实现类?7、说说HashSet的实现原理?8.ArrayList和LinkedList有什么区别?9.如何实现数组与List的转换?10.ArrayList和Vector的领域不要什么?11.Array和ArrayList有什么区别?12.Queue中的poll()和remove()有什么区别?13.哪些集合类是线程安全的?14.什么是迭代器Iterator?15.如何使用迭代器?有什么特点?16.Iterator和ListIterator有什么区别?17.如何保证一个集合不能被修改?18.什么是队列和栈?有什么不同?三、多线程1、你用过Synchronized吗?它的原理是什么?2、请比较一下volatile和Synchronized的异同3、请说说volatile的特点,为什么能保证变量对所有线程的可见性?4.JVM对Java原生锁做了哪些优化?5、为什么Synchronized是非公平锁?6、什么是锁消除和锁粗化?7、为什么Synchronized是悲观锁?乐观锁的实现原理是什么?什么是CAS,它有什么特点?8、乐观锁就一定好吗?9、与Synchronized相比,ReentrantLock的实现原理有什么不同?10.那么请说说AQS框架?11、请尽量详细比较Synchronized和ReentrantLock的异同。12、ReentrantLock是如何实现重入的?13、除了ReetrantLock,你还接触过JUC中的哪些并发工具?14.请谈谈ReadWriteLock和StampedLock。15.Java线程之间如何同步?你知道哪些同步器?请分别介绍。16.CyclicBarrier和CountDownLatch看起来很像,请比较一下?17.Java线程池相关问题18.Java中的线程池是如何实现的?19、创建线程池的核心构造参数有哪些?20、线程池中的线程是如何创建的?是不是一开始就随着线程池的启动而创建的?21、既然提到可以通过配置不同的参数来创建不同的线程池,那么Java默认实现的线程池有哪些?请比较它们的异同22.Java线程池中如何提交线程?23、Java的内存模型是什么,Java中的线程是如何看到彼此的变量的?24.什么是ThreadLocal?有哪些使用场景?25、既然volatile可以保证变量在线程间的可见性,是否意味着基于volatile变量的操作是并发安全的?26、Java8开始ConcurrentHashMap,为什么放弃段锁?27、请谈谈ThreadLocal是如何解决并发安全的?28.很多人说ThreadLocal要慎用。说说你的理解。使用ThreadLocal需要注意什么?29.什么是上下文切换?30.线程的run()和start()有什么区别?31、为什么调用start()方法的时候执行run()方法,为什么不能直接调用run()方法?32.什么是线程调度器和时间分片?33.为什么wait()、notify()和notifyAll()必须在synchronized方法或synchronized块中调用?34、Thread类中yield方法的作用是什么?35、Java是如何实现多线程间的通信与协作的?36.为什么代码重排了?37.什么是自旋38.多线程中同步锁升级的原理是什么?39.synchronized和ReentrantLock有什么区别?40.volatile关键字的作用41.JavaConcurrencyAPI中的Lock接口(Lockinterface)是什么?与同步相比,它有什么优势?42.什么是AQS?43、AQS如何共享资源?4、JavaWeb1、jsp、servlet有什么区别?2、jsp有哪些内置对象?有哪些功能?3.说说jsp的4个作用域?4、session和cookie有什么区别?5.说说session的工作原理?6、如果客户端禁止cookies,session还能用吗?7、springmvc和struts有什么区别?8、如何避免sql注入?9.什么是XSS攻击,如何避免?10.什么是CSRF攻击,如何避免?五、网络1、http响应码301和302分别代表什么?有什么不同?2.转发和重定向有什么区别?3.简述tcp和udp的区别?4、为什么tcp需要三次握手,两次就不行吗?为什么?5.说说tcp粘包是怎么产生的?6.OSI模型的七层是什么?7.get和post请求有什么区别?8.如何实现跨域?9.说说JSONP的实现原理?六、设计模式1、请列举JDK中常用的几种设计模式?2.什么是设计模式?您在代码中使用过任何设计模式吗?3.Java中的单例设计模式是什么?请用Java写一个线程安全的单例模式4.在Java中,什么是观察者设计模式(observerdesignpattern)?5.使用工厂模式的主要好处是什么?它在哪里使用?6.给出一个用Java实现的装饰器设计模式?它是在对象级别还是在类级别运行?7.在Java中,为什么不允许从静态方法访问非静态变量?8.设计一台ATM机,请说说你的设计思路?9、Java中什么时候用重载,什么时候用重写?10.举个例子说明什么时候你更倾向于使用抽象类而不是接口。7.弹簧/SpringMVC1。什么是Spring框架?Spring框架的主要模块有哪些?2、使用Spring框架有什么好处?3.什么是控制反转(IOC)?什么是依赖注入?4.请解释一下Spring框架中的IoC?5、BeanFactory和ApplicationContext有什么区别?6、Spring有几种配置方式?7、请解释一下SpringBean的生命周期?8、SpringBean的作用域有什么区别?9.什么是Springinnerbea纳斯?10.Spring框架中的单例bean是线程安全的吗?11.请举例说明如何在Spring中注入JavaCollection?12.如何将Java.util.Properties注入到SpringBean中?13.请解释一下SpringBean的自动组装?14.请解释自动装配模式的区别?15.如何开启基于注解的自动组装?16.请举例说明@Required注解?17.请举例说明@Autowired注解?18、请举个@Qualifier注解的例子?19.构造函数注入和设置值注入有什么区别?20.Spring框架中有哪些不同类型的事件?21.FileSystemResource和ClassPathResource有什么区别?22、Spring框架中使用了哪些设计模式?八、SpringBoot/SpringCloud1、什么是SpringBoot?2、SpringBoot有什么优势?3.什么是JavaConfig?5.SpringBoot中的监视器是什么?6.如何在SpringBoot中禁用Actuator端点安全?7.如何在自定义端口上运行SpringBoot应用程序?8.什么是YAML?9、如何实现SpringBoot应用的安全性?10、SpringBoot和ActiveMQ如何集成?11、如何用SpringBoot实现分页和排序?12.什么是招摇?你用SpringBoot实现了吗?13.什么是SpringProfiles?14.什么是SpringBatch?15.什么是FreeMarker模板?16.如何使用SpringBoot实现异常处理?17.你使用了哪些startermaven依赖项?18.什么是CSRF攻击?19.什么是WebSockets?20.什么是AOP?21.什么是ApacheKafka?22.我们如何监控所有的SpringBoot微服务?23.什么是春云?24、springcloudcircuitbreaker的作用是什么?26、springcloud的核心组件有哪些?九、Hibernate1、为什么要使用休眠?2.什么是ORM框架?3、如何在hibernate中查看控制台打印出来的sql语句?4、hibernate有多少种查询方法?5.hibernate实体类可以定义为final吗?6.在hibernate中使用Integer和int做映射有什么区别?7.休眠是如何工作的?8.get()和load()有什么区别?9.说说hibernate的缓存机制?10.hibernate对象有哪些状态?11、hibernate中getCurrentSession和openSession有什么区别?12.hibernate实体类是否必须有无参数构造函数?为什么?10、MyBatis1和mybatis中的#{}和${}有什么区别?2、mybatis有几种分页方式?3、RowBounds是一次性查询所有结果吗?为什么?4、mybatis逻辑分页和物理分页有什么区别?5、mybatis支持懒加载吗?懒加载的原理是什么?6、说说mybatis的一级缓存和二级缓存?7、mybatis和hibernate有什么区别?8、mybatis有哪些执行器?9、mybatis分页插件的实现原理是什么?10.mybatis如何写自定义插件?11、RabbitMQ1和RabbitMQ的使用场景是什么?2、RabbitMQ有哪些重要作用?3、RabbitMQ的重要组成部分有哪些?4、RabbitMQ中vhost的作用是什么?5.RabbitMQ消息是如何发送的?6、RabbitMQ如何保证消息的稳定性?7、RabbitMQ如何避免消息丢失?8、保证消息持久化成功的条件有哪些?9、RabbitMQ持久化的缺点是什么?10、RabbitMQ有几种广播类型?11、RabbitMQ是如何实现延迟消息队列的?12、RabbitMQ集群有什么用?13、RabbitMQ节点有哪些类型?14、搭建RabbitMQ集群需要注意哪些问题?15、RabbitMQ的每个节点都是其他节点的完整副本吗?为什么?16.如果RabbitMQ集群中唯一的磁盘节点崩溃了怎么办?17.拉比tMQ对集群节点的停止顺序有要求吗?12、kafka(没掌握,暂时不做)如何获取topic话题列表?生产者和消费者的命令行是什么?消费者是推动还是拉动?说说kafka是如何维护消费状态跟踪的,为什么主从同步需要消息系统。mysql不能满足需求吗?Zookeeper对于Kafka的作用是什么?数据传输的三种交易定义是什么?Kafka判断一个节点是否还活着的两个条件是什么?Kafka与传统的MQ消息系统之间存在三个关键差异。下面说说Kafka的ack的三种机制。消费者怎么能不自动提交offset,而是通过应用程序提交呢?消费者失效,如何解决活锁问题?kafka分布式(非单机)时,如何控制消费位置,如何保证消息的顺序消费?kafka的高可用机制是什么?Kafka如何减少数据丢失Kafka如何不消费重复数据?比如推导,我们不能重复推导十三、Zookeeper(没掌握,暂时不做)ZooKeeper提供什么?Zookeeper文件系统ZAB协议?四种数据节点ZnodeZookeeperWatcher机制-数据变化通知客户端注册Watcher实现服务端处理Watcher实现客户端回调WatcherACL权限控制机制chroot特性会话管理服务器angle*r/>Zookeeper下服务器工作状态数据同步如何实现work保证事务的顺序一致性?分布式集群为什么会有Master?zk节点宕机如何处理?zookeeper负载均衡和nginx负载均衡的区别Zookeeper的部署方式有哪些?集群需要多少台机器?集群规则是什么?集群是否支持动态添加机器?Zookeeper对节点的watch通知是永久的吗?为什么不是永久的?Zookeeper的Java客户端是什么?什么是chubby,和zookeeper相比你怎么看?说说几个常用的zookeeper命令。ZAB和Paxos算法的联系和区别?Zookeeper的典型应用场景14、MySql1和数据库的三大范式是什么?2、一张自增表共有7条数据。删除最后2条数据,重启mysql数据库,插入另一条数据。这个时候的id是多少?3、如何获取当前数据库版本?4.告诉我什么是酸?5、char和varchar有什么区别?6.float和double有什么区别?7、mysql中innerjoin、leftjoin、rightjoin有什么区别?8、mysql索引是如何实现的?9、如何验证mysql索引是否满足要求?10.说说数据库的事务隔离?11.说说mysql常用的引擎?12.说说mysql的行锁和表锁?13.谈谈乐观锁和悲观锁?14.排查mysql问题的方法有哪些?15.如何优化mysql的性能?15.什么是Redis1和Redis?有哪些使用场景?2、Redis有哪些功能?3、Redis和memecache有什么区别?4、为什么Redis是单线程的?5、什么是缓存穿透?如何处理?6、Redis支持哪些数据类型?7、Redis支持的java客户端有哪些?8.jedis和redisson有什么区别?9、如何保证缓存和数据库数据的一致性?10、Redis的持久化有几种方式?11、Redis是如何实现分布式锁的?12、Redis分布式锁有哪些缺陷?13、Redis是如何优化内存的?14、Redis淘汰策略有哪些?15、Redis常见的性能问题有哪些?如何解决?十六、JVM1、介绍一下jvm的主要组成部分?及其作用?2.说说jvm运行时数据区?3.说说栈的区别?4.什么是类加载器,什么是类加载器?5.什么是双亲委派模式?6.说说类加载的执行过程?7、如何判断对象是否可以回收?8.java中的引用类型有哪些?9、说说jvm有哪些垃圾回收算法?10.告诉我jvm有哪些垃圾收集器?11.详细解释CMS垃圾收集器?12、什么是新生代垃圾收集器和老年代垃圾收集器?有什么不同?13.简述分代垃圾收集器是如何工作的?14.说说jvm调优工具?15、常用的jvm调优参数有哪些?16.Java类加载过程?1个7.描述JVM加载Class文件的原理机制?18.Java内存分配19.什么是GC?为什么会有GC?20.简述Java垃圾回收机制21.如何判断一个对象是否存活?(或GC对象的判断方法)22、垃圾回收的优点和原理。并考虑2种回收机制23.垃圾收集器的基本原理是什么?垃圾收集器能否立即回收内存?有没有办法主动通知虚拟机进行垃圾回收呢?24、Java会不会有内存泄漏?请简述25.深拷贝和浅拷贝。26.System.GC()和Runtime.GC()会做什么?27.什么时候调用finalize()方法?析构函数(终结)的目的是什么?28.如果对象的引用设置为null,垃圾回收器会立即释放对象占用的内存吗?29.串行收集器和吞吐量收集器有什么区别?30.在Java中,什么时候可以对对象进行垃圾回收?31.简述Java内存分配和回收策略,MinorGC和MajorGC。32、VM永久代会不会发生垃圾回收?33、Java中垃圾回收的方法有哪些?17、Dubbo面试题(没掌握,暂时不做)为什么要用Dubbo?Dubbo的整体架构设计有哪些层次?默认使用什么通信框架,还有其他选择吗?服务调用是否被阻塞?一般用什么注册表?还有其他选择吗?默认使用什么序列化框架,你还知道什么?服务提供者可以实现故障踢的原理是什么?为什么服务上线不影响老版本?如何解决服务调用链过长的问题?说说核心配置?Dubbo推荐什么协议?同一个服务有多个注册时,是否可以直接连接某个服务?画出服务注册与发现的流程图?Dubbo集群容错有几种方案?Dubbo服务降级,失败如何重试?你在使用Dubbo的过程中遇到过哪些问题?DubboMonitor实现原理?Dubbo使用了哪些设计模式?Dubbo的配置文件是如何加载到Spring中的?DubboSPI和JavaSPI有什么区别?Dubbo支持分布式事务吗?Dubbo可以缓存结果吗?该服务与旧版本的兼容性如何?Dubbo必须依赖的包有哪些?Dubbotelnet命令可以做什么?Dubbo支持服务降级吗?Dubbo如何优雅关闭?Dubbo和Dubbox的区别?Dubbo和SpringCloud有什么区别?你知道其他分布式框架吗?18、Elasticsearch面试题(没掌握,暂时不做)你对elasticsearch了解多少,说说你公司的es集群架构,索引数据大小,分片多少,还有一些调优的方法。elasticsearch的倒排索引是什么elasticsearch索引数据过多怎么办,如何调优,如何部署elasticsearch实现master选举详细描述Elasticsearch索引文件的过程详细描述Elasticsearch搜索的过程?部署Elasticsearch时,Linux设置有哪些优化方式?lucence的内部结构是怎样的?Elasticsearch是如何实现Master选举的?Elasticsearch中的节点中(比如一共20个),其中10个选一个master,另外10个选另一个master,怎么办?当客户端连接到集群时,它如何选择特定的节点来执行请求?详细描述Elasticsearch索引文档的过程。详细描述Elasticsearch如何更新和删除文档。详细描述Elasticsearch搜索过程。在Elasticsearch中,如何根据一个词找到对应的倒排索引呢?部署Elasticsearch时,Linux设置有哪些优化方式?在GC方面,使用Elasticsearch有哪些需要注意的地方?Elasticsearch如何实现大数据量(亿级)的聚合?并发情况下,Elasticsearch是否保证读写一致性?如何监控Elasticsearch集群状态?介绍一下你们电商搜索的整体技术架构,介绍一下你们的个性化搜索方案?你知道字典树吗?拼写纠正是如何实现的?可以说这篇文章(Book)说实话,如果你知道这篇文章80%以上的内容,找个开发工作问题不大。对于有3-5年经验的朋友来说,也是快速复习的利器。私信我评论(学习),免费获取解答。最重要的是增加自己的知识储备,做好准备。最后给大家分享Spring系列学习笔记和面试题,包括spring面试题、springcloud面试题、springboot面试题、spring教程笔记、springboot教程笔记、最新阿里巴巴开发手册(63页)PDF摘要),2022年Java面试手册。共整理出1184页PDF文档。私信博主(666)收到,祝大家更上一层楼!!!