获得徽章 0
#Java面试 #多线程 #避坑指南
兄弟们,出个多线程的题: main 线程打印完“End”退出了,子线程还在 while(true) 里死循环。 请问:JVM 进程会退出吗?
A. 会,主线程死了一切都得死。 B. 不会,JVM 还没下班。 C. 看子线程是不是“守护线程”。
刚写了一篇复盘,带你搞懂 用户线程 vs 守护线程 的生死契约,顺便教你一行代码解决这个“永生” Bug。
避坑传送门:
兄弟们,出个多线程的题: main 线程打印完“End”退出了,子线程还在 while(true) 里死循环。 请问:JVM 进程会退出吗?
A. 会,主线程死了一切都得死。 B. 不会,JVM 还没下班。 C. 看子线程是不是“守护线程”。
刚写了一篇复盘,带你搞懂 用户线程 vs 守护线程 的生死契约,顺便教你一行代码解决这个“永生” Bug。
展开
评论
点赞
#每天一个知识点# #Java #代码避坑 #面试题
兄弟们,考个冷门基础题: 往 Properties 对象里 put 一个整数 88,然后用 getProperty 取出来,结果会是多少?
A. "88" B. 88 C. null D. 抛异常
很多人第一反应是 A 或 B,实际运行结果却是 C (null)。 这不是 Bug,这是 Java 早期为了省事搞出来的“历史技术债”。
刚写了一篇复盘,带你看看 Properties 继承 Hashtable 到底有多坑。文末有个“书生与屠夫”的比喻,包你看懂。
避坑传送门:
兄弟们,考个冷门基础题: 往 Properties 对象里 put 一个整数 88,然后用 getProperty 取出来,结果会是多少?
A. "88" B. 88 C. null D. 抛异常
很多人第一反应是 A 或 B,实际运行结果却是 C (null)。 这不是 Bug,这是 Java 早期为了省事搞出来的“历史技术债”。
刚写了一篇复盘,带你看看 Properties 继承 Hashtable 到底有多坑。文末有个“书生与屠夫”的比喻,包你看懂。
展开
1
4
#日新计划# #Java面试 #HashMap #源码避坑
兄弟们,问个颠覆认知的问题:HashMap 一定要等到 0.75 负载因子满了才扩容吗?
昨天群里有个老哥,才存了 10 个数据,HashMap 容量竟然直接从 16 飙到了 64!而且链表还变红黑树了!
很多人以为是 Bug,其实这是 JDK 8 源码里藏着的一个**“不自信”机制**。
刚写了一篇复盘,带你扒一扒 treeifyBin 方法里的“甩锅”逻辑。面试官问扩容的时候,这一招绝对是加分项!
揭秘传送门:
兄弟们,问个颠覆认知的问题:HashMap 一定要等到 0.75 负载因子满了才扩容吗?
昨天群里有个老哥,才存了 10 个数据,HashMap 容量竟然直接从 16 飙到了 64!而且链表还变红黑树了!
很多人以为是 Bug,其实这是 JDK 8 源码里藏着的一个**“不自信”机制**。
刚写了一篇复盘,带你扒一扒 treeifyBin 方法里的“甩锅”逻辑。面试官问扩容的时候,这一招绝对是加分项!
展开
评论
3
#每天一个知识点# #Java基础 #底层原理 #冷知识
兄弟们,写代码时有没有被 ArrayIndexOutOfBoundsException 搞崩过心态?
为什么 Java(还有 C/C++/Python)非要规定数组下标从 0 开始? 既然是“第 1 个元素”,叫 arr[1] 难道不比 arr[0] 更符合直觉吗?
很多人以为这是规定,其实这背后全是算计! 刚写了一篇短文,带你穿越回 C 语言时代,从内存偏移量的角度扒一扒这个“反人类”设计的真相。
揭秘传送门:
兄弟们,写代码时有没有被 ArrayIndexOutOfBoundsException 搞崩过心态?
为什么 Java(还有 C/C++/Python)非要规定数组下标从 0 开始? 既然是“第 1 个元素”,叫 arr[1] 难道不比 arr[0] 更符合直觉吗?
很多人以为这是规定,其实这背后全是算计! 刚写了一篇短文,带你穿越回 C 语言时代,从内存偏移量的角度扒一扒这个“反人类”设计的真相。
展开
评论
1
#每天一个知识点# #JVM #Java面试 #拒绝八股文
还在死记硬背“堆是共享的,栈是私有的”吗?面试官一问“本地方法栈干嘛的”就卡壳?🤯
其实 JVM 根本就是一家火锅店!🍲
堆 = 大圆桌(放菜)
栈 = 服务员托盘(端菜)
方法区 = 墙上的菜单
刚写了一篇图解,带你进店吃顿火锅,顺便把 JVM 内存模型搞懂。文末附带一张“面试救命表”,建议收藏防身!
干货传送门:
还在死记硬背“堆是共享的,栈是私有的”吗?面试官一问“本地方法栈干嘛的”就卡壳?🤯
其实 JVM 根本就是一家火锅店!🍲
堆 = 大圆桌(放菜)
栈 = 服务员托盘(端菜)
方法区 = 墙上的菜单
刚写了一篇图解,带你进店吃顿火锅,顺便把 JVM 内存模型搞懂。文末附带一张“面试救命表”,建议收藏防身!
展开
评论
1
#每天一个知识点# #Java面试 #源码阅读 #冷知识
兄弟们,问个基础题:StringBuilder 默认容量 16,追加字符满了之后,它会自动扩容到多少?
A. 32 (翻倍) B. 17 (够用就行) C. 34
很多人第一反应是 32,其实 JDK 8 的源码里藏了一个 *2 + 2 的逻辑。 刚写了一篇短文,扒了一下 AbstractStringBuilder 的源码,顺便聊聊为什么要 +2。
避坑指南传送门:
兄弟们,问个基础题:StringBuilder 默认容量 16,追加字符满了之后,它会自动扩容到多少?
A. 32 (翻倍) B. 17 (够用就行) C. 34
很多人第一反应是 32,其实 JDK 8 的源码里藏了一个 *2 + 2 的逻辑。 刚写了一篇短文,扒了一下 AbstractStringBuilder 的源码,顺便聊聊为什么要 +2。
展开
评论
点赞
#每天一个知识点# 面试官:Integer a = 127; Integer b = 127; 它们相等吗?那 128 呢?
很多人以为自己懂 ==,结果在这道题上翻车了。
其实这背后藏着 Java 的“VIP 休息室”(缓存机制)。刚写了一篇复盘笔记,带你通过源码看懂为什么 127 是真爱,128 却是路人。
干货传送门:
很多人以为自己懂 ==,结果在这道题上翻车了。
其实这背后藏着 Java 的“VIP 休息室”(缓存机制)。刚写了一篇复盘笔记,带你通过源码看懂为什么 127 是真爱,128 却是路人。
展开
评论
点赞
#新人报道#
#Java学习 #新手避坑
还在被 scanner.nextInt() 的死循环折磨吗?输入个 "abc" 控制台直接爆炸?💥
很多教材只教了 nextInt(),却没教怎么处理异常缓冲区。其实,只要转换一下思维,把所有输入都当成 String 处理,就能彻底解决这个问题。
总结了一个“快递拆箱理论”,帮你彻底搞懂 Java 的输入处理!📦
干货文章传送门:
#Java学习 #新手避坑
还在被 scanner.nextInt() 的死循环折磨吗?输入个 "abc" 控制台直接爆炸?💥
很多教材只教了 nextInt(),却没教怎么处理异常缓冲区。其实,只要转换一下思维,把所有输入都当成 String 处理,就能彻底解决这个问题。
总结了一个“快递拆箱理论”,帮你彻底搞懂 Java 的输入处理!📦
展开
评论
1