【Java面试题】Java开发面试题会问什么?

发布时间:2021-12-07 09:13:28

  Java开发面试会问什么?Java开发面试会问一些专业问题。除了简单的自我介绍外,还需要介绍一些项目的整体结构,或参与某个模块的开发、业务和设计,展示Java的一些专业技能。接下来,小编会带你去看java面试问题:

java开发面试会问什么

  java开发的面试题:

  一、java基础

  1.JDK和JRE有什么区别?

  2.==和equals有什么区别?

  3.两个对象的hashCode()相同,equals()也必须是true,对吗?

  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.java容器有哪些?

  19.colection和colections有什么区别?

  20.List、Set、Map有什么区别?

  21.Hashmap和Hashtable有什么区别?

  22.如何决定使用Hashmap还是Tremap?

  23.ashmap的实现原理?

  24.谈谈Hashset的实现原理?

  25.ArrayList和LinkedList有什么区别?

  26.如何实现数组和List之间的转换?

  27.ArrayList和Vector有什么区别?

  28.Array和ArrayList有什么区别?

  29.Queueue中poll()和remove()有什么区别?

  30.哪些集合线程安全?

  31.迭代器Iterator是什么?

  32.如何使用Iterator?特点是什么?

  33.Iterator和Listiterator有什么区别?

  34.如何保证集合不能修改?

  三、多线程

  35. 并行和并发有什么区别?

  36. 线程和进程的区别?

  37. 守护线程是什么?

  38. 创建线程有哪几种方式?

  39. 说一下 runnable 和 callable 有什么区别?

  40. 线程有哪些状态?

  41. sleep() 和 wait() 有什么区别?

  42. notify()和 notifyAll()有什么区别?

  43. 线程的 run()和 start()有什么区别?

  44.创建线程池有哪几种方式?

  45.线程池都有哪些状态?

  46. 线程池中 submit()和 execute()方法有什么区别?

  47. 在 java 程序中怎么保证多线程的运行安全?

  48. 多线程锁的升级原理是什么?

  49. 什么是死锁?

  50. 怎么防止死锁?

  51. ThreadLocal 是什么?有哪些使用场景?

  52. 说一下 synchronized 底层实现原理?

  53. synchronized 和 volatile 的区别是什么?

  54. synchronized 和 Lock 有什么区别?

  55. synchronized 和 ReentrantLock 区别是什么?

  56. 说一下 atomic 的原理?

  四、反射

  57. 什么是反射?

  58. 什么是 java 序列化?什么情况下需要序列化?

  59. 动态代理是什么?有哪些应用?

  60. 怎么实现动态代理?

  五、 对象拷贝

  61. 为什么要使用克隆?

  62. 如何实现对象克隆?

  63. 深拷贝和浅拷贝区别是什么?

  六、 Java Web

  64. jsp 和 servlet 有什么区别?

  65. jsp 有哪些内置对象?作用分别是什么?

  66. 说一下 jsp 的 4 种作用域?

  67. session 和 cookie 有什么区别?

  68. 说一下 session 的工作原理?

  69. 如果客户端禁止 cookie 能实现 session 还能用吗?

  70. Spring mvc 和 struts 的区别是什么?

  71. 如何避免 sql 注入?

  72. 什么是 XSS 攻击,如何避免?

  73. 什么是 CSRF 攻击,如何避免?

  七、异常

  74. throw 和 throws 的区别?

  75. final、finally、finalize 有什么区别?

  76. try-catch-finally 中哪个部分可以省略?

  77. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

  78. 常见的异常类有哪些?

  八、网络

  79. http 响应码 301 和 302 代表的是什么?有什么区别?

  80. forward 和 redirect 的区别?

  81. 简述 tcp 和 udp的区别?

  82. tcp 为什么要三次握手,两次不行吗?为什么?

  83. 说一下 tcp 粘包是怎么产生的?

  84. OSI 的七层模型都有哪些?

  85. get 和 post 请求有哪些区别?

  86. 如何实现跨域?

  87. 说一下 JSONP 实现原理?

  九、设计模式

  88. 说一下你熟悉的设计模式?

  89. 简单工厂和抽象工厂有什么区别?

  10.Spring/Spring MVC

  90. 为什么要使用 spring?

  91. 解释一下什么是 aop?

  92. 解释一下什么是 ioc?

  93. spring 有哪些主要模块?

  94. spring 常用的注入方式有哪些?

  95. spring 中的 bean 是线程安全的吗?

  96. spring 支持几种 bean 的作用域?

  97. spring 自动装配 bean 有哪些方式?

  98. spring 事务实现方式有哪些?

  99. 说一下 spring 的事务隔离?

  100. 说一下 spring mvc 运行流程?

  101. spring mvc 有哪些组件?

  102. @RequestMapping 的作用是什么?

  103. @Autowired 的作用是什么?

  十一、Spring Boot/Spring Cloud

  104. 什么是 spring boot?

  105. 为什么要用 spring boot?

  106. spring boot 核心配置文件是什么?

  107. spring boot 配置文件有哪几种类型?它们有什么区别?

  108. spring boot 有哪些方式可以实现热部署?

  109. jpa 和 hibernate 有什么区别?

  110. 什么是 spring cloud?

  111. spring cloud 断路器的作用是什么?

  112. spring cloud 的核心组件有哪些?

  十二、Hibernate

  113. 为什么要使用 hibernate?

  114. 什么是 ORM 框架?

  115. hibernate 中如何在控制台查看打印的 sql 语句?

  116. hibernate 有几种查询方式?

  117. hibernate 实体类可以被定义为 final 吗?

  118. 在 hibernate 中使用 Integer 和 int 做映射有什么区别?

  119. hibernate 是如何工作的?

  120. get()和 load()的区别?

  121. 说一下 hibernate 的缓存机制?

  122. hibernate 对象有哪些状态?

  123. 在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?

  124. hibernate 实体类必须要有无参构造函数吗?为什么?

  十三、 Mybatis

  125. mybatis 中 #{}和 ${}的区别是什么?

  126. mybatis 有几种分页方式?

  127. RowBounds 是一次性查询全部结果吗?为什么?

  128. mybatis 逻辑分页和物理分页的区别是什么?

  129. mybatis 是否支持延迟加载?延迟加载的原理是什么?

  130. 说一下 mybatis 的一级缓存和二级缓存?

  131. mybatis 和 hibernate 的区别有哪些?

  132. mybatis 有哪些执行器(Executor)?

  133. mybatis 分页插件的实现原理是什么?

  134. mybatis 如何编写一个自定义插件?

  十四、RabbitMQ。

  135.rabitmq的使用场景是什么?

  136.rabbitmq有哪些重要角色?

  137.rabbitmq有哪些重要组?

  138.rabitmqvhost的作用是什么?

  139.rabitmq的消息是如何发送的?

  140.rabitmq如何保证新闻的稳定性?

  141.rabitmq如何避免消息丢失?

  142.保证消息持久成功的条件是什么?

  143.rabitmq持久性的缺点是什么?

  144.rabitmq有多少种广播类型?

  145.rabitmq如何实现延迟消息队列?

  146.rabitmq集群有什么用?

  147.rabitmq节点有哪些类型?

  148.rabitmq集群建设应注意哪些问题?

  149.rabitmq每个节点是否完全复制其他节点?为什么?

  150.rabitmq集群中唯一的磁盘节点崩溃会发生什么?

  151.rabitmq是否需要集群节点的停止顺序?

  十五、Kafka

  152.kafka能单独使用zookeper吗?为什么?

  153.kafka有几种数据保留策略?

  154.kafka还设置了7天和10G清除数据,第五天消息达到10G。此时kafka将如何处理?

  155.什么情况会导致kafka运行缓慢?

  156.使用kafka集群需要注意什么?

  十六、Zookeeper。

  zookeper是什么?

  158.zookeper有哪些功能?

  159.zookeper有几种部署模式?

  160.zo节点的状态同步?

  为什么集群中有主节点?

  162.集群中有三台服务器,其中一台停机。这个时候zookeper还能用吗?

  163.谈谈zokeeper的通知机制?

  十七、MySQL

  164.数据库的三种范式是什么?

  165.自增表共有7个数据,删除最后2个数据,重启mysql数据库,插入另一个数据。这个时候id是多少?

  166.如何获得当前的数据库版本?

  ACID是什么?

  168.char和varchar有什么区别?

  169.float和double有什么区别?

  170.mysql内连接、左连接、右连接有什么区别?

  171.如何实现mysql索引?

  172.如何验证mysql索引是否满足需求?

  173.谈数据库的事务隔离?

  174.谈谈mysql常用的引擎?

  175.谈谈mysql的行锁和表锁?

  176.说乐观锁和悲观锁?

  177.调查mysql问题有哪些手段?

  178.如何优化mysql的性能?

  十八、redis

  179.redis是什么?使用场景有哪些?

  180.redis有哪些功能?

  181.redis和memecache有什么区别?

  为什么redis是单线程?

  缓存穿透是什么?

  怎么解决?

  184.redis支持哪些数据类型?

  185.redis支持哪些java客户端?

  186.jedis和redisson有什么区别?

  187.如何保证缓存与数据库数据的一致性?

  188.redis持久化的方法有多少?

  189.redis如何实现分布式锁?

  190.redis分布式锁有哪些缺陷?

  191.redis如何优化内存?

  192.redis淘汰策略是什么?

  193.redis常见的性能问题是什么?

  怎样解决?

  十九、JVM

  194.谈谈jvm的主要组成部分?

  及其作用?

  195.说jvm运行时的数据区?

  196.谈谈堆栈的区别?

  197.什么是队列和栈?有什么区别?

  198.什么是双亲委派模型?

  199.谈类加载的执行过程。

上一篇 【Java面试题】Java开发实用考试题型和参考答案
下一篇 【Java面试题】Java开发基础笔试题:&和&&有什么区别?