码迷,mamicode.com
首页 > 其他好文 > 详细

200道面试题(自己在网络上搜集的答案)

时间:2019-07-11 12:21:16      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:shc   移动文件   详细   files   equal   memecache   not   问题   程序代码   

原文链接:https://mp.weixin.qq.com/s/KnSUprd6Z7zbpZAVR1OEdw

 

1. Java 基础

1. JDK 和 JRE 有什么区别?

2. == 和 equals 的区别是什么?

3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?

4. final 在 java 中有什么作用?

5. java 中的 Math.round(-1.5) 等于多少?

6. String 属于基础的数据类型吗?

7. java 中操作字符串都有哪些类?它们之间有什么区别?

8. String str="i"与 String str=new String(“i”)一样吗?

9. 如何将字符串反转?

     StringBuilder方法直接反转;

  循环一遍去反转;

10. String 类的常用方法都有那些?

11. 抽象类必须要有抽象方法吗?

  抽象类不必须有抽象方法。

12. 普通类和抽象类有哪些区别? 

  1.抽象类不能被实例化。

  2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。

  3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体

  4.含有抽象方法的类必须申明为抽象类

  5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类。

13. 抽象类能使用 final 修饰吗?

  不能。一个类不能同时abstract和final.

14. 接口和抽象类有什么区别?

15. java 中 IO 流分为几种?

  • 按照流的流向分,可以分为输入流和输出流;
  • 按照操作单元划分,可以划分为字节流和字符流;
  • 按照流的角色划分为节点流和处理流。

16. BIO、NIO、AIO 有什么区别?

      IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。

17. Files的常用方法都有哪些?

Files.exists()   检测文件路径是否存在
Files.createFile()创建文件
Files.createDirectory()创建文件夹
Files.delete()   删除文件或者目录
Files.copy()   复制文件
Files.move()  移动文件
Files.size()查看文件个数
Files.read()  读取文件
Files.write()写入文件

 

2. 容器

18. java 容器都有哪些?

19. Collection 和 Collections 有什么区别?

20. List、Set、Map 之间的区别是什么?

21. HashMap 和 Hashtable 有什么区别?

22. 如何决定使用 HashMap 还是 TreeMap?

23. 说一下 HashMap 的实现原理?

24. 说一下 HashSet 的实现原理?

25. ArrayList 和 LinkedList 的区别是什么?

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

27. ArrayList 和 Vector 的区别是什么?

28. Array 和 ArrayList 有何区别?

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

1. queue的增加元素方法add和offer的区别在于,add方法在队列满的情况下将选择抛异常的方法来表示队列已经满了,而offer方法通过返回false表示队列已经满了;在有限队列的情况,使用offer方法优于add方法;
2. remove方法和poll方法都是删除队列的头元素,remove方法在队列为空的情况下将抛异常,而poll方法将返回null;
3. element和peek方法都是返回队列的头元素,但是不删除头元素,区别在与element方法在队列为空的情况下,将抛异常,而peek方法将返回null.

30. 哪些集合类是线程安全的?

二、线程安全(Thread-safe)的集合对象:

  • Vector 线程安全:
  • Hashtable 线程安全:

三、非线程安全的集合对象:

  • ArrayList :
  • LinkedList:
  • HashMap:
  • HashSet:
  • TreeMap:
  • TreeSet:

31. 迭代器 Iterator 是什么?

32. Iterator 怎么使用?有什么特点?

33. Iterator 和 ListIterator 有什么区别?

34. 怎么确保一个集合不能被修改?

Collections.unmodifiableList(List)
Collections.unmodifiableSet(Set)

 

3. 多线程

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

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。  (不一定是同时的)
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。 
 
并发的关键是你有处理多个任务的能力,不一定要同时。 
并行的关键是你有同时处理多个任务的能力。 
 
所以我认为它们最关键的点就是:是否是『同时』。

 

36. 线程和进程的区别?

37. 守护线程是什么?

如果 JVM 中没有一个正在运行的非守护线程,这个时候,JVM 会退出。换句话说,守护线程拥有自动结束自己生命周期的特性,而非守护线程不具备这个特点

JVM 中的垃圾回收线程就是典型的守护线程,如果说不具备该特性,会发生什么呢?

当 JVM 要退出时,由于垃圾回收线程还在运行着,导致程序无法退出,这就很尴尬了!!!由此可见,守护线程的重要性了。

通常来说,守护线程经常被用来执行一些后台任务,但是呢,你又希望在程序退出时,或者说 JVM 退出时,线程能够自动关闭,此时,守护线程是你的首选。

https://www.jianshu.com/p/3d6f32af5625

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

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

40. 线程有哪些状态?

1. 新建(NEW):新创建了一个线程对象。

2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。

3. 运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。
4. 阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种: 

(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

5. 死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

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

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

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

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

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

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

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

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

49. 什么是死锁?

50. 怎么防止死锁?

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

https://www.cnblogs.com/coshaho/p/5127135.html

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

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

54. synchronized 和 Lock 有什么区别?

1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;

2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;

3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁;

4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2则会一直等待下去,而Lock锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了;

5.synchronized的锁可重入、不可中断、非公平,而Lock锁可重入、可中断、可公平(两者皆可)

6.Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题。

55. synchronized 和 ReentrantLock 区别是什么?

https://blog.csdn.net/zxd8080666/article/details/83214089

56. 说一下 atomic 的原理?

 

4. 反射

57. 什么是反射?

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

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

60. 怎么实现动态代理?

JDK方式和CGlib方式

JDK动态代理:利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
CGlib动态代理:利用ASM(开源的Java字节码编辑库,操作字节码)开源包,将代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。

 

5. 对象拷贝

61. 为什么要使用克隆?

62. 如何实现对象克隆?

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

如果要对某个类的的实例的引用类型属性实现深克隆,要求引用类型属性对于的类实现Cloneable接口并重写clone()。

 

6. 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 攻击,如何避免?

 

7. 异常

74. throw 和 throws 的区别?

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

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

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

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

 

8. 网络

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

301 Moved Permanently

302 Move Temporarily

80. forward 和 redirect 的区别?

81. 简述 tcp 和 udp的区别?

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

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

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

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

86. 如何实现跨域?

87. 说一下 JSONP 实现原理?

 

9. 设计模式

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 的作用是什么?

 

11. 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 的核心组件有哪些?

 

12. 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 实体类必须要有无参构造函数吗?为什么?

 

13. Mybatis

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

126. mybatis 有几种分页方式?

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

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

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

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

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

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

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

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

 

14. RabbitMQ

135. rabbitmq 的使用场景有哪些?

136. rabbitmq 有哪些重要的角色?

137. rabbitmq 有哪些重要的组件?

138. rabbitmq 中 vhost 的作用是什么?

139. rabbitmq 的消息是怎么发送的?

140. rabbitmq 怎么保证消息的稳定性?

141.rabbitmq 怎么避免消息丢失?

142. 要保证消息持久化成功的条件有哪些?

143. rabbitmq 持久化有什么缺点?

144. rabbitmq 有几种广播类型?

145. rabbitmq 怎么实现延迟消息队列?

146. rabbitmq 集群有什么用?

147. rabbitmq 节点的类型有哪些?

148. rabbitmq 集群搭建需要注意哪些问题?

149. rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?

150. rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?

151. rabbitmq 对集群节点停止顺序有要求吗?

 

15. Kafka

152. kafka 可以脱离 zookeeper 单独使用吗?为什么?

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

154. kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?

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

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

 

16. Zookeeper

157. zookeeper 是什么?

158. zookeeper 都有哪些功能?

159. zookeeper 有几种部署模式?

160. zookeeper 怎么保证主从节点的状态同步?

161. 集群中为什么要有主节点?

162. 集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?

163. 说一下 zookeeper 的通知机制?

 

17. MySql

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

165. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?

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

167. 说一下 ACID 是什么?

168. char 和 varchar 的区别是什么?

169. float 和 double 的区别是什么?

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

171. mysql 索引是怎么实现的?

172. 怎么验证 mysql 的索引是否满足需求?

173. 说一下数据库的事务隔离?

174. 说一下 mysql 常用的引擎?

innoDB, MyISAM

175. 说一下 mysql 的行锁和表锁?

176. 说一下乐观锁和悲观锁?

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

178. 如何做 mysql 的性能优化?

 

18. Redis

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

180. redis 有哪些功能?

181. redis 和 memecache 有什么区别?

182. redis 为什么是单线程的?

183. 什么是缓存穿透?怎么解决?

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

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

186. jedis 和 redisson 有哪些区别?

187. 怎么保证缓存和数据库数据的一致性?

188. redis 持久化有几种方式?

189.redis 怎么实现分布式锁?

190. redis 分布式锁有什么缺陷?

191. redis 如何做内存优化?

192. redis 淘汰策略有哪些?

193. redis 常见的性能问题有哪些?该如何解决?

 

19. JVM

194. 说一下 jvm 的主要组成部分?及其作用?

195. 说一下 jvm 运行时数据区?

196. 说一下堆栈的区别?

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

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

199. 说一下类加载的执行过程?

200. 怎么判断对象是否可以被回收?

201. java 中都有哪些引用类型?

202. 说一下 jvm 有哪些垃圾回收算法?

203. 说一下 jvm 有哪些垃圾回收器?

204. 详细介绍一下 CMS 垃圾回收器?

205. 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?

206. 简述分代垃圾回收器是怎么工作的?

207. 说一下 jvm 调优的工具?

208. 常用的 jvm 调优的参数都有哪些?

200道面试题(自己在网络上搜集的答案)

标签:shc   移动文件   详细   files   equal   memecache   not   问题   程序代码   

原文地址:https://www.cnblogs.com/julymaple/p/11169150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!