分类: 综合面试题

面试题:HashMap 扩容时链表与红黑树的转化阈值为什么是 8 和 6

这道题在 Java 面试里出现的频率极高,但真正能答到点上的候选人并不多。大部分人的回答停留在“8 是泊松分布算出来的,6 是为了防止频繁转换”,再追问一句“泊松分布的 λ 是多少、算出来概率多大、为什么不是 7 和 9、为什么中间留了 7 这个空档”,就答不上来了。这篇文章把 HashMap 中 TREEIFY_THRESHOLD、UNTREEIFY_TH

进程与线程共享哪些资源,切换开销差在哪

面试里问到「进程和线程的区别」,绝大多数人能背出「进程是资源分配单位,线程是调度单位」。但只要追问一句「那具体共享哪些资源、不共享哪些」,答不上来的人立刻现形。再往下问「线程切换到底比进程切换省了什么」,能说清楚页表、TLB、寄存器、内核栈这几层的就更少了。这篇把这两个问题拆到可验证的粒度:哪些资源是进程级私有、哪些是线程级私有、哪些是进程内共享,以及一次上