File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 8080 - 对象的栈上内存分配
8181 - 我们知道,在一般情况下,对象和数组元素的内存分配是在堆内存上进行的。但是随着JIT 编译器的日渐成熟,很多优化使这种分配策略并不绝对,JIT 编译器就可以在编译期间根据逃逸分析的结果,来决定是否可以将对象的内存分配从堆转化为栈
8282 - 三、分离对象或标量替换。有的对象可能不需要作为一个连续的内存结构存在也可以被访问到,那么对象的部分(或全部)可以不存储在内存,而是存储在CPU 寄存器中。
83- - `https: // www.hollischuang.com/archives/2398`
8483# 方法区
85841.7
8685! [](.. / img/ jvm/ java7堆和方法区. png)
@@ -104,4 +103,7 @@ JDK1.8
104103# 直接内存
105104直接内存(Direct Memory )并不是虚拟机运行时数据区的一部分
106105- 在JDK 1.4 中新加入了NIO (New Input / Output )类,引入了一种基于通道(Channel )与缓冲区 (Buffer )的I / O 方式,它可以使用Native 函数库直接分配堆外内存,然后通过一个存储在Java 堆里面的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了 在Java 堆和Native 堆中来回复制数据。
107- - 受到 本机总内存(包括物理内存、SWAP 分区或者分页文件)大小以及处理器寻址空间的限制
106+ - 受到 本机总内存(包括物理内存、SWAP 分区或者分页文件)大小以及处理器寻址空间的限制
107+
108+ # 参考文章
109+ - https: // www.hollischuang.com/archives/2398
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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 * [ 基础支持层] ( #基础支持层 )
2121MyBatis 是一款旨在帮助开发人员屏蔽底层重复性原生 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 )
Original file line number Diff line number Diff line change 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 )
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 >
Original file line number Diff line number Diff line change 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小白进化
You can’t perform that action at this time.
0 commit comments