JAVA面试常见问题
1JAVA权限
static - 不想被子类化
protected:包级访问和子类访问,单不可以在其它类中访问,比如protected Object clone()方法
default: 在同一包下可以访问,子类不可以访问;经常看到,这种方法是没想着要被继承的;
private - 只有自己能访问,哪怕主方法都不行;定义private方法是无意义的
2深拷贝和浅拷贝
由于protected Object clone()是被保护的方法,在其它类中没法使用,所以必须在其它类中重写;
比如 Object obj = new Student().clone();
三次握手 四次挥手
three-way handshake, four-way handshake
举个例子:A 和 B 打电话,通话即将结束后,A 说 “我没啥要说的了”,B 回答 “我知道了”,于是 A 向 B 的连接释放了。但是 B 可能还会有要说的话,于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”,A 回答“知道了”,于是 B 向 A 的连接释放了,这样整个通话就结束了。
https://segmentfault.com/a/1190000039165592
三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤;
首先,我让信使运输一份信件给对方,对方收到了,那么他就知道了我的发件能力和他的收件能力是可以的。
于是他给我回信,我若收到了,我便知我的发件能力和他的收件能力是可以的,并且他的发件能力和我的收件能力是可以。
然而此时他还不知道他的发件能力和我的收件能力到底可不可以,于是我最后回馈一次,他若收到了,他便清楚了他的发件能力和我的收件能力是可以的。
这,就是三次握手,这样说,你理解了吗?
为什么TCP连接的时候是3次?2次不可以吗?
因为需要考虑连接时丢包的问题
为什么TCP连接的时候是3次,关闭的时候却是4次?
因为只有在客户端和服务端都没有数据要发送的时候才能断开TCP。而客户端发出FIN报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的。而服务端收到客户端的FIN报文后只能先回复客户端一个确认报文来告诉客户端我服务端已经收到你的FIN报文了,但我服务端还有一些数据没发完,等这些数据发完了服务端才能给客户端发FIN报文(所以不能一次性将确认报文和FIN报文发给客户端,就是这里多出来了一次)
TreeMap是sortedMap 这么简单的问题
Postgre向数据库post数据
Java的default scope是什么?
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
Jsp的默认作用域是什么?JSP默认的作用域是page
内置对象与作用域重复的地方。。。
String str="i"与 String str=new String(“i”)一样吗?
不一样。两个对象,一个是常量池,一个是用new创建在堆上的对象,分配到堆内存。
String str="i"与 String str=new String(“i”)到底有什么区别
1Java 虚拟机会将其分配到常量池中:常量池不会重复创建对象。
在String str1="i"中,把i值存在常量池,地址赋给str1。假设再写一个String str2="i",则会把i的地址赋给str2,但是i对象不会重新创建,他们引用的是同一个地址值,共享同一个i内存。
2分到堆内存中:堆内存会创建新的对象。
假设再写一个String str3=new String(“i”),则会创建一个新的i对象,然后将新对象的地址值赋给str3。虽然str3和str1的值相同但是地址值不同。
什么时候该重写hashCode和equals方法?
面向对象就是:封装、继承和多态吗?
面向过程,不需要创建对象,所以速度特别快;
面向对象是模型化的,你只需抽象出一个类;
https://zhuanlan.zhihu.com/p/64147696
Java面试题及答案整理(2021最新版)
1. JDK 和 JRE 有什么区别?JRE只是环境 而JDK是一套Kit
2. == 和 equals 的区别是什么?==只是数值相等
3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?不对,可能地址不相同
4. final 在 java 中有什么作用?不能更改
5. java 中的 Math.round(-1.5) 等于多少?-1
6. String 属于基础的数据类型吗?是
7. java 中操作字符串都有哪些类?它们之间有什么区别?StringBuilder和StringBuffer, StringBuilder是线程安全的
8. String str="i"与 String str=new String("i")一样吗?不一样
9. 如何将字符串反转?String.toReverse();
10. String 类的常用方法都有那些?String.length(); String.substring(); String.toCharArray();
11. 抽象类必须要有抽象方法吗?不一定
12. 普通类和抽象类有哪些区别?抽象类不是具体的类,不能有方法
13. 抽象类能使用 final 修饰吗?不能
14. 接口和抽象类有什么区别?接口只能被实现,而抽象类只能被继承
15. java 中 IO 流分为几种?
16. BIO、NIO、AIO 有什么区别?
17. Files的常用方法都有哪些?Files.copy();
18. java 容器都有哪些?实际上这里指的事数据结构;
19. Collection 和 Collections 有什么区别?
20. List、Set、Map 之间的区别是什么?List是顺序表,Set的内容是不重复的,Map是地图 是Key-Value形式
21. HashMap 和 Hashtable 有什么区别?HashMap我们用得多 Hashtable较少
22. 如何决定使用 HashMap 还是 TreeMap?HashMap是无序的, TreeMap是sortedMap
23. 说一下 HashMap 的实现原理?就像Redis那样的
24. 说一下 HashSet 的实现原理?是不能重复的值
25. ArrayList 和 LinkedList 的区别是什么?ArrayList的存储空间是连续的 LinkedList的存储空间不是连续的,是链表
26. 如何实现数组和 List 之间的转换?一个一个地转换啊
27. ArrayList 和 Vector 的区别是什么?ArrayList是顺序表,Vector是向量;
28. Array 和 ArrayList 有何区别?Array是纯数组,而ArrayList是顺序表;
29. 在 Queue 中 poll()和 remove()有什么区别?poll()更好使;
30. 哪些集合类是线程安全的?Vector
31. 迭代器 Iterator 是什么?
32. Iterator 怎么使用?有什么特点?
33. Iterator 和 ListIterator 有什么区别?
35. 并行和并发有什么区别?并发是同一时间的所有请求,并行是两条需求同时发出
36. 线程和进程的区别?线程是threads, 进程是processes, 一个线程可以有多个进程
37. 守护线程是什么?是基本的线程;
38. 创建线程有哪几种方式?我只知道用Java创建线程;
39. 说一下 runnable 和 callable 有什么区别?还真不知道
40. 线程有哪些状态?pending状态有吗?
41. sleep() 和 wait() 有什么区别?sleep()是sleep一会;
42. notify()和 notifyAll()有什么区别?
43. 线程的 run()和 start()有什么区别?run()是开始
44. 创建线程池有哪几种方式?pool
45. 线程池都有哪些状态?running
46. 线程池中 submit()和 execute()方法有什么区别?submit()是提交,execute()是执行;
47. 在 java 程序中怎么保证多线程的运行安全?上锁
48. 多线程锁的升级原理是什么?
49. 什么是死锁?
50. 怎么防止死锁?
51. ThreadLocal 是什么?有哪些使用场景?持续session用的;
52.说一下 synchronized 底层实现原理?同步
53. synchronized 和 volatile 的区别是什么?
54. synchronized 和 Lock 有什么区别?
55. synchronized 和 ReentrantLock 区别是什么?
56. 说一下 atomic 的原理?原子性
57. 什么是反射?放射就是同步,容器化就靠反射;
58. 什么是 java 序列化?什么情况下需要序列化?远距离传输的时候需要java序列化
59. 动态代理是什么?有哪些应用?AOP
60. 怎么实现动态代理?
61. 为什么要使用克隆?主要是拷贝
62. 如何实现对象克隆?
63. 深拷贝和浅拷贝区别是什么?浅拷贝是拷贝地址
64. jsp 和 servlet 有什么区别?servlet是容器化
65. jsp 有哪些内置对象?作用分别是什么?
66. 说一下 jsp 的 4 种作用域?
67. session 和 cookie 有什么区别?cookie是保存在浏览器端(包括sessionId),session是保存在服务器端;
68. 说一下 session 的工作原理?每台机子的cookie ID保存到session
69. 如果客户端禁止 cookie 能实现 session 还能用吗?不行,因为依赖于cookie ID
70. spring mvc 和 struts 的区别是什么?拦截器不同
71. 如何避免 sql 注入?使用框架会比较好点;
72. 什么是 XSS 攻击,如何避免?
72. 什么是 XSS 攻击,如何避免?跨域攻击
74. throw 和 throws 的区别?
75. final、finally、finalize 有什么区别?final是用于变量
76. try-catch-finally 中哪个部分可以省略?
77. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
78. 常见的异常类有哪些?空指针异常,还有其它异常;
79. http 响应码 301 和 302 代表的是什么?有什么区别?转发,301是永久的
80. forward 和 redirect 的区别?forward是转发再redirect, 而redirect是直接redirect
81. 简述 tcp 和 udp的区别?tcp是网络用语
82. tcp 为什么要三次握手,两次不行吗?为什么?不行,需要先打招呼,得到回应,再最后发送
83. 说一下 tcp 粘包是怎么产生的?缓存造成的?
84. OSI 的七层模型都有哪些?有网络层;
85. get 和 post 请求有哪些区别?get带的数据少,post多,get可以从浏览器获得,post不行;
get和post的唯一区别就是带参数的问题;
86. 如何实现跨域?我知道常用的有两种;
87.说一下 JSONP 实现原理?JSONP的P是Patch的意思,实际是为了骗过浏览器;
88. 说一下你熟悉的设计模式?工厂模式
89. 简单工厂和抽象工厂有什么区别?
90. 为什么要使用 spring?注入dependency很方便,注解很方便;
91. 解释一下什么是 aop?面向切面编程
92. 解释一下什么是 ioc?注入
93. spring 有哪些主要模块?spring task、
94. spring 常用的注入方式有哪些?注解注入、配置注入
95. spring 中的 bean 是线程安全的吗?是的
96. spring 支持几种 bean 的作用域?3种
97. spring 自动装配 bean 有哪些方式?
98. spring 事务实现方式有哪些?注解、配置
99. 说一下 spring 的事务隔离?
100. 说一下 spring mvc 运行流程?这个以前我很熟悉 DispatcherServlet
101. spring mvc 有哪些组件?
102. @RequestMapping 的作用是什么?找到匹配的类和方法;
103. @Autowired 的作用是什么?自动装配,用得比较少;
104. 什么是 spring boot?开发微服务,尽量用注解;
105. 为什么要用 spring boot?注解让很多事情变简单了;
106. spring boot 核心配置文件是什么?
107. spring boot 配置文件有哪几种类型?它们有什么区别?
108. spring boot 有哪些方式可以实现热部署?通过配置就可以实现热部署;
109. jpa 和 hibernate 有什么区别?
110. 什么是 spring cloud?是基于cloud
111. spring cloud 断路器的作用是什么?
112. spring cloud 的核心组件有哪些?
113. 为什么要使用 hibernate?很多方便的验证很有作用;
114. 什么是 ORM 框架?用得少
115. hibernate 中如何在控制台查看打印的 sql 语句?我一步用MyBatis
116. hibernate 有几种查询方式?
117. hibernate 实体类可以被定义为 final 吗?
118. 在 hibernate 中使用 Integer 和 int 做映射有什么区别?
119. hibernate 是如何工作的?
120. get()和 load()的区别?
121. 说一下 hibernate 的缓存机制?
122. hibernate 对象有哪些状态?
123. 在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?
124. hibernate 实体类必须要有无参构造函数吗?为什么?
125. MyBatis 中 #{}和 ${}的区别是什么?
126. MyBatis 有几种分页方式?
127. RowBounds 是一次性查询全部结果吗?为什么?不是
128. MyBatis 逻辑分页和物理分页的区别是什么?
129. MyBatis 是否支持延迟加载?延迟加载的原理是什么?
130. 说一下 MyBatis 的一级缓存和二级缓存?
131. MyBatis 和 hibernate 的区别有哪些?MyBatis可以自己编写SQL语句;
132. MyBatis 有哪些执行器(Executor)?
133. MyBatis 分页插件的实现原理是什么?
134. MyBatis 如何编写一个自定义插件?
RabbitMQ
135. RabbitMQ 的使用场景有哪些?消息,实现松耦合
136. RabbitMQ 有哪些重要的角色?广播、队列
137. RabbitMQ 有哪些重要的组件?
138. RabbitMQ 中 vhost 的作用是什么?虚拟主机
139. RabbitMQ 的消息是怎么发送的?3种方式
140. RabbitMQ 怎么保证消息的稳定性?会保存结果没有被消费
141. RabbitMQ 怎么避免消息丢失?
142. 要保证消息持久化成功的条件有哪些?
143. RabbitMQ 持久化有什么缺点?
144. RabbitMQ 有几种广播类型?3种
145. RabbitMQ 怎么实现延迟消息队列?
146. RabbitMQ 集群有什么用?
147. RabbitMQ 节点的类型有哪些?
148. RabbitMQ 集群搭建需要注意哪些问题?
149. RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?
150. RabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么情况?
151. RabbitMQ 对集群节点停止顺序有要求吗?
152. kafka 可以脱离 zookeeper 单独使用吗?为什么?
153. kafka 有几种数据保留的策略?
154. kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?
155. 什么情况会导致 kafka 运行变慢?
156. 使用 kafka 集群需要注意什么?
157. zookeeper 是什么?代理中心
158. zookeeper 都有哪些功能?
159. zookeeper 有几种部署模式?
160. zookeeper 怎么保证主从节点的状态同步?自动同步
161. 集群中为什么要有主节点?
162. 集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?可以
163. 说一下 zookeeper 的通知机制?
164. 数据库的三范式是什么?
165. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?8
166. 如何获取当前数据库版本?
167. 说一下 ACID 是什么?
168. char 和 varchar 的区别是什么?char更好用
169. float 和 double 的区别是什么?float更大
170. MySQL 的内连接、左连接、右连接有什么区别?
171. MySQL 索引是怎么实现的?
172. 怎么验证 MySQL 的索引是否满足需求?
173. 说一下数据库的事务隔离?
174. 说一下 MySQL 常用的引擎?InnoDB
175. 说一下 MySQL 的行锁和表锁?
176. 说一下乐观锁和悲观锁?
177. MySQL 问题排查都有哪些手段?
178. 如何做 MySQL 的性能优化?
179. Redis 是什么?都有哪些使用场景?做缓存、做session
180. Redis 有哪些功能?
181. Redis 和 memcache 有什么区别?Redis不是内存的
182. Redis 为什么是单线程的?保存唯一性
183. 什么是缓存穿透?怎么解决?是过容量了吗
184. Redis 支持的数据类型有哪些?字符
185. Redis 支持的 Java 客户端都有哪些?Jedis等
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. 说一下类装载的执行过程?
200. 怎么判断对象是否可以被回收?
201. Java 中都有哪些引用类型?
202. 说一下 JVM 有哪些垃圾回收算法?
203. 说一下 JVM 有哪些垃圾回收器?
204. 详细介绍一下 CMS 垃圾回收器?
205. 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
206. 简述分代垃圾回收器是怎么工作的?
207. 说一下 JVM 调优的工具?
208. 常用的 JVM 调优的参数都有哪些?
https://codeburst.io/100-coding-interview-questions-for-programmers-b1cf74885fb7
试一下这100个问题:
How is a bubble sort algorithm implemented? (solution)
How is a merge sort algorithm implemented? (solution)
How do you count the occurrence of a given character in a string? (solution)
How do you print the first non-repeated character from a string? (solution)
How do you convert a given String into int like the atoi()? (solution)
How do you implement a bucket sort algorithm? (solution)
How do you implement a counting sort algorithm? (solution)
How do you remove duplicates from an array in place? (solution)
How do you reverse an array in place in Java? (solution)
How are duplicates removed from an array without using any library? (solution)
How is a radix sort algorithm implemented? (solution)
How do you swap two numbers without using the third variable? (solution)
How do you check if two rectangles overlap with each other? (solution)
How do you design a vending machine? (solution)
How do you find the missing number in a given integer array of 1 to 100? (solution)
How do you find the duplicate number on a given integer array? (solution)
How do you find duplicate numbers in an array if it contains multiple duplicates? (solution)
Difference between a stable and unstable sorting algorithm? (answer)
How is an iterative quicksort algorithm implemented? (solution)
How do you find the largest and smallest number in an unsorted integer array? (solution)
How do you reverse a linked list in place? (solution)
How to add an element at the middle of the linked list? (solution)
How do you sort a linked list in Java? (solution)
How do you find all pairs of an integer array whose sum is equal to a given number? (solution)
How do you implement an insertion sort algorithm? (solution)
How are duplicates removed from a given array in Java? (solution)
how to remove the duplicate character from String? (solution)
How to find the maximum occurring character in a given String? (solution)
How is an integer array sorted in place using the quicksort algorithm? (solution)
How do you reverse a given string in place? (solution)
How do you print duplicate characters from a string? (solution)
How do you check if two strings are anagrams of each other? (solution)
How do you find all the permutations of a string? (solution)
How can a given string be reversed using recursion? (solution)
How do you check if a given string is a palindrome? (solution)
How do you find the length of the longest substring without repeating characters? (solution)
Given string str, How do you find the longest palindromic substring in str? (solution)
How do you check if a string contains only digits? (solution)
How to remove Nth Node from the end of a linked list? (solution)
How to merge two sorted linked lists? (solution)
How to convert a sorted list to a binary search tree? (solution)
How do you find duplicate characters in a given string? (solution)
How do you count the number of vowels and consonants in a given string? (solution)
How do you reverse words in a given sentence without using any library method? (solution)
How do you check if two strings are a rotation of each other? (solution)
How to convert a byte array to String? (solution)
How do you remove a given character from String? (solution)
How do you find the middle element of a singly linked list in one pass? (solution)
How do you check if a given linked list contains a cycle? How do you find the starting node of the cycle? (solution)
How do you reverse a linked list? (solution)
How do you reverse a singly linked list without recursion? (solution)
How are duplicate nodes removed in an unsorted linked list? (solution)
How do you find the length of a singly linked list? (solution)
How do you find the third node from the end in a singly linked list? (solution)
How do you find the sum of two linked lists using Stack? (solution)
What is the difference between array and linked list? (answer)
How to remove duplicates from a sorted linked list? (solution)
How to find the node at which the intersection of two singly linked lists begins. (solution)
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. (solution)
How to check if a given linked list is a palindrome? (solution)
How to remove all elements from a linked list of integers which matches with given value? (solution)
How is a binary search tree implemented? (solution)
How do you perform preorder traversal in a given binary tree? (solution)
How do you traverse a given binary tree in preorder without recursion? (solution)
How do you perform an inorder traversal in a given binary tree? (solution)
How do you print all nodes of a given binary tree using inorder traversal without recursion? (solution)
How do you implement a postorder traversal algorithm? (solution)
How do you traverse a binary tree in postorder traversal without recursion? (solution)
How are all leaves of a binary search tree printed? (solution)
How do you count a number of leaf nodes in a given binary tree? (solution)
How do you perform a binary search in a given array? (solution)
How to Swap two numbers without using the third variable? (solution)
How to check if two rectangles overlap with each other? (solution)
How to design a Vending Machine? (solution)
How to implement an LRU Cache in your favorite programming language? (solution)
How to check if a given number is a Palindrome? (solution)
How to check if a given number is an Armstrong number? (solution)
How to find all prime factors of a given number? (solution)
How to check if a given number is positive or negative in Java? (solution)
How to find the largest prime factor of a given integral number? (solution)
How to print all prime numbers up to a given number? (solution)
How to print Floyd’s triangle? (solution)
How to print Pascal’s triangle? (solution)
How to calculate the square root of a given number? (solution)
How to check if the given number is a prime number? (solution)
How to add two numbers without using the plus operator in Java? (solution)
How to check if a given number is even/odd without using the Arithmetic operator? (solution)
How to print a given Pyramid structure? (solution)
How to find the highest repeating world from a given file in Java? (solution)
How to reverse a given Integer in Java? (solution)
How to convert a decimal number to binary in Java? (solution)
How to check if a given year is a leap year in Java? (solution)
Can you implement a Binary search Algorithm without recursion? (solution)
Difference between a stable and unstable sorting algorithm? (answer)
What is Depth First Search Algorithm for a binary tree? (solution)
How is an iterative quicksort algorithm implemented? (solution)
How do you implement an insertion sort algorithm? (solution)
How is a merge sort algorithm implemented? (solution)
What is the difference between Comparison and Non-Comparison Sorting Algorithms? (answer)
How do implement Sieve of Eratosthenes Algorithms for Prime Number? (solution)
试一下下面50个问题
How do you find the missing number in a given integer array of 1 to 100?
How do you find the duplicate number on a given integer array?
How do you find the largest and smallest number in an unsorted integer array?
How do you find all pairs of an integer array whose sum is equal to a given number?
How do you find duplicate numbers in an array if it contains multiple duplicates?
How are duplicates removed from a given array in Java?
How is an integer array sorted in place using the quicksort algorithm?
How do you remove duplicates from an array in place?
How do you reverse an array in place in Java?
How are duplicates removed from an array without using any library?
How do you find the middle element of a singly linked list in one pass?
How do you check if a given linked list contains a cycle? How do you find the starting node of the cycle?
How do you reverse a linked list?
How do you reverse a singly linked list without recursion?
How are duplicate nodes removed in an unsorted linked list?
How do you find the length of a singly linked list?
How do you find the third node from the end in a singly linked list?
How do you find the sum of two linked lists using Stack?
How do you print duplicate characters from a string?
How do you check if two strings are anagrams of each other?
How do you print the first non-repeated character from a string?
How can a given string be reversed using recursion?
How do you check if a string contains only digits?
How are duplicate characters found in a string?
How do you count a number of vowels and consonants in a given string?
How do you count the occurrence of a given character in a string?
How do you find all permutations of a string?
How do you reverse words in a given sentence without using any library method?
How do you check if two strings are a rotation of each other?
How do you check if a given string is a palindrome?
How is a binary search tree implemented?
How do you perform preorder traversal in a given binary tree?
How do you traverse a given binary tree in preorder without recursion?
How do you perform an inorder traversal in a given binary tree?
How do you print all nodes of a given binary tree using inorder traversal without recursion?
How do you implement a postorder traversal algorithm?
How do you traverse a binary tree in postorder traversal without recursion?
How are all leaves of a binary search tree printed?
How do you count a number of leaf nodes in a given binary tree?
How do you perform a binary search in a given array?
How is a bubble sort algorithm implemented?
How is an iterative quicksort algorithm implemented?
How do you implement an insertion sort algorithm?
How is a merge sort algorithm implemented?
How do you implement a bucket sort algorithm?
How do you implement a counting sort algorithm?
How is a radix sort algorithm implemented?
How do you swap two numbers without using the third variable?
How do you check if two rectangles overlap with each other?
How do you design a vending machine?