Skip to content

Commit f4b4ccb

Browse files
author
zhenglin
committed
update: 面试解答
1 parent c46949b commit f4b4ccb

5 files changed

Lines changed: 95 additions & 11 deletions

File tree

Java-JVM/内存结构.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ JDK1.8
8080
- 对象的栈上内存分配
8181
- 我们知道,在一般情况下,对象和数组元素的内存分配是在堆内存上进行的。但是随着JIT编译器的日渐成熟,很多优化使这种分配策略并不绝对,JIT编译器就可以在编译期间根据逃逸分析的结果,来决定是否可以将对象的内存分配从堆转化为栈
8282
- 三、分离对象或标量替换。有的对象可能不需要作为一个连续的内存结构存在也可以被访问到,那么对象的部分(或全部)可以不存储在内存,而是存储在CPU寄存器中。
83-
- `https://www.hollischuang.com/archives/2398`
8483
# 方法区
8584
1.7
8685
![](../img/jvm/java7堆和方法区.png)
@@ -104,4 +103,7 @@ JDK1.8
104103
# 直接内存
105104
直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分
106105
-JDK 1.4中新加入了NIONew Input/Output)类,引入了一种基于通道(Channel)与缓冲区 (Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆里面的 DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了 在Java堆和Native堆中来回复制数据。
107-
- 受到 本机总内存(包括物理内存、SWAP分区或者分页文件)大小以及处理器寻址空间的限制
106+
- 受到 本机总内存(包括物理内存、SWAP分区或者分页文件)大小以及处理器寻址空间的限制
107+
108+
# 参考文章
109+
- https://www.hollischuang.com/archives/2398

Java-多线程/线程池.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,19 @@
9393
- IO 密集型任务 2*Ncpu
9494
#### ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目
9595
线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。
96-
# 线程池被创建后里面有线程吗?如果没有的话,你知道有什么方法对线程池进行预热吗?
96+
## 线程池被创建后里面有线程吗?如果没有的话,你知道有什么方法对线程池进行预热吗?
9797
线程池被创建后如果没有任务过来,里面是不会有线程的。如果需要预热的话可以调用下面的两个方法
9898
- 全部启动: `prestartAllCoreThreads()`
9999
- 仅启动一个 `prestartCoreThread()`
100100

101-
# 线上机器突然重启/宕机,线程池里的阻塞队列中任务怎么办?
101+
## 线上机器突然重启/宕机,线程池里的阻塞队列中任务怎么办?
102102
- 这种情况内存中的任务肯定会丢失
103103
- 关键在于保存任务的执行状态:未提交、已提交、已完成,将状态持久化到db中,服务恢复后通过判断任务的状态来继续执行任务
104104

105+
## 运行时能修改线程数么?
106+
`setCorePoolSize`
107+
108+
JDK允许线程池使用方通过ThreadPoolExecutor的实例来动态设置线程池的核心策略,以setCorePoolSize为方法例,在运行期线程池使用方调用此方法设置corePoolSize之后,线程池会直接覆盖原来的corePoolSize值,并且基于当前值和原始值的比较结果采取不同的处理策略。对于当前值小于当前工作线程数的情况,说明有多余的worker线程,此时会向当前idle的worker线程发起中断请求以实现回收,多余的worker在下次idel的时候也会被回收;对于当前值大于原始值且当前队列中有待执行任务,则线程池会创建新的worker线程来执行队列任务
105109

106110
# 参考文章
107111

Mybatis/mybatis.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
* [mybatis](#mybatis)
33
* [什么是mybatis](#什么是mybatis)
4-
* [JDBC执行六步走](#jdbc执行六步走)
5-
* [mybatis执行8步](#mybatis执行8步)
4+
* [JDBC执行六步骤](#jdbc执行六步骤)
5+
* [mybatis执行8步骤](#mybatis执行8步骤)
66
* [步骤](#步骤)
77
* [MyBatis 整体架构](#mybatis-整体架构)
88
* [基础支持层](#基础支持层)
@@ -21,7 +21,7 @@
2121
MyBatis 是一款旨在帮助开发人员屏蔽底层重复性原生 JDBC 代码的持久化框架,其支持通过映射文件配置或注解将 ResultSet 映射为 Java 对象。相对于其它 ORM 框架,MyBatis 更为轻量级,支持定制化 SQL
2222
和动态 SQL,方便优化查询性能,同时包含了良好的缓存机制
2323

24-
## JDBC执行六步走
24+
## JDBC执行六步骤
2525

2626
- 注册驱动
2727
- 获取Connection连接
@@ -31,7 +31,7 @@ MyBatis 是一款旨在帮助开发人员屏蔽底层重复性原生 JDBC 代码
3131
- 释放资源
3232
![](../img/mybatis/jdbc执行6步走.png)
3333

34-
## mybatis执行8步
34+
## mybatis执行8步骤
3535

3636
![](../img/mybatis/mybatis执行8步走.png)
3737
![](../img/mybatis/mybatis执行8步走2.png)

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969
- [内存结构](Java-JVM/内存结构.md)
7070
- [垃圾回收](Java-JVM/垃圾回收.md)
71-
- [内存分配与回收](Java-JVM/内存分配与回收策略.md)
71+
- [内存分配与回收策略](Java-JVM/内存分配与回收策略.md)
7272
- [类加载机制](Java-JVM/类加载机制.md)
7373
- [JVM调优](Java-JVM/JVM调优.md)
7474
- [Java即时编译](Java-JVM/Java即时编译.md)
@@ -175,8 +175,8 @@
175175
<summary><a>Mybatis</a></summary>
176176

177177
- [什么是mybatis](Mybatis/mybatis.md)
178-
- [JDBC执行六步走](Mybatis/mybatis.md)
179-
- [mybatis执行8步](Mybatis/mybatis.md)
178+
- [JDBC执行六步骤](Mybatis/mybatis.md)
179+
- [mybatis执行8步骤](Mybatis/mybatis.md)
180180
- [MyBatis整体架构](Mybatis/mybatis.md)
181181
- [mybatis缓存](Mybatis/mybatis.md)
182182
</details>

面试解答/面试解答2021-09.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,84 @@
158158
* [35. 如何理解微服务,什么时候使用微服务](#35-如何理解微服务什么时候使用微服务)
159159

160160

161+
## 深圳转转 Java 一、二面 2021.9.15(已意向书)
162+
163+
> 作者:天川透流
164+
链接:https://www.nowcoder.com/discuss/746064?source_id=discuss_experience_nctrack&channel=-1
165+
来源:牛客网
166+
167+
### 1. 自我介绍
168+
### 2. 介绍一下项目?
169+
### 3. Spring的两个核心。说一下
170+
### 4. AOP主要用到的Java的哪些技术呢?
171+
### 5. MySQL的索引有哪些了解?
172+
### 6. 主键索引和普通索引有什么区别?
173+
### 7. 事务的隔离级别有哪些?
174+
### 8. 不同的隔离级别解决了哪些问题?
175+
### 9. 可重复读有没有解决这个幻读的问题?
176+
### 10. 可重复读如何解决不可重复读的一个问题?
177+
### 11. ACID四个特性有了解过吗?
178+
### 12. 怎么保证这ACID四个特性?
179+
### 13. MVCC有没有起到作用?
180+
### 14. 介绍一下集合
181+
### 15. HashMap是线程安全的还是线程不安全的?
182+
### 16. HashMap线程不安全会出现什么问题?
183+
### 17. 有没有了解过线程安全的HashMap?
184+
### 18. ConcurrentHashMap怎么保证线程安全?
185+
### 19. 有没有实际用过多线程的东西?
186+
### 20. 线程的创建有哪几种方式?
187+
### 21. Thread类和Runable接口的最大区别是什么?
188+
### 22. 线程池最核心的是哪些?
189+
### 23. 线程池的执行顺序是怎么样的呢?
190+
### 24. 运行的时候,核心线程数能不能修改?(可以修改)
191+
### 25. JVM的内存结构?
192+
### 26. 对象在哪个区?
193+
### 27. Class文件在哪个地方存?
194+
### 28. 垃圾回收会发生在哪几个区域?
195+
### 29. OOM会发生在哪个区域?
196+
### 30. 虚拟机栈会不会溢出?
197+
### 31. GC算法有没有了解过?
198+
### 32. 怎么确定一个对象是垃圾?
199+
### 33. 哪些对象可以做为CG Root?
200+
### 34. Java有哪些锁?
201+
### 35. 有没有除了Synchronize和ReentrantLock之外还有没有可以上锁的?
202+
### 36. volatile怎么理解?
203+
### 37. 类加载器有哪些?
204+
### 38. 双亲委派模型。
205+
### 39. 怎么打破双亲委派模型?(面试的时候答了不会)(面试官告诉我说Tomcat有)
206+
### 40. 类加载的过程,Class文件
207+
### 41. 有没有自己使用过算法。
208+
### 42. 有哪些排序?
209+
### 43. 快排的原理。时间复杂度,最坏情况。
210+
### 44. TCP连接和断开。
211+
### 45. 三次握手过程
212+
### 46. TCP连接CloseWati和TimeWait状态
213+
### 47. 网络的拥塞控制有没有了解过?
214+
### 48. 输入一个网址的调用流程。
215+
### 49. 有没有了解过HTTPS
216+
### 50. HTTPS的加密算法是哪些?
217+
### 51. 你感觉你比较擅长哪方面?
218+
### 52. 有没有刷过题?
219+
### 53. 你觉得动态规划的关键是什么?
220+
### 54. 反问环节。
221+
### 55. 数据库索引
222+
### 56. 单核情况下,多线程为什么会比单线程的情况下去使用情况会更好?(面试官提醒后,会了)
223+
### 57. TCP协议了解吗?
224+
### 58. HTTP长连接还是短连接?
225+
### 59. 服务端主动发起关闭还是客户端主动发起关闭TCP?(答了客户端,面试官不满意)
226+
### 60. 心跳机制说一下?(几乎没答对)
227+
### 61. 单例模式说一下。
228+
### 62. 线程安全的单例模式是怎么样的?
229+
### 63. 那为什么要使用volatile呢?
230+
### 64. 为什么要使用双段锁呢?
231+
### 65. 算法题:8个人乒乓球比赛,A赢B,B赢C,可以默认A赢C。那么最少比赛多少次可以获得冠亚季军(当时没想出来,心态崩了。)
232+
### 66. 你怎么学习技术?
233+
### 67. 你觉得什么最重要?
234+
### 68. 你在团队开发的项目里面学到了什么?
235+
### 69. 反问。
236+
237+
238+
161239
## 顺丰二面 20210915
162240

163241
> 作者:java小白进化

0 commit comments

Comments
 (0)