专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
程序员小灰  ·  DeepSeek俱乐部,6000人了! ·  昨天  
程序员的那些事  ·  国企也中招!官网被挂上“码农的钱你也敢吞,* ... ·  2 天前  
程序员的那些事  ·  趣图:“微软穷疯了?上架的 ... ·  3 天前  
51好读  ›  专栏  ›  程序员鱼皮

2024 互联网各厂梯队排名!你在第几梯队?

程序员鱼皮  · 公众号  ·  · 2024-09-25 12:54

正文

平时网上冲浪的时候,总是会看到“某大厂”、“某中厂”、“又一互联网大厂”如何如何了,那么 大家口中的“大厂”究竟是指的哪些公司呢?

评判一家互联网公司处在什么level,是靠员工人数、盈利规模、产品知名度还是福利待遇? 又或者有一套综合的计算方式?

今天我刷到了一份网友整理的2024互联网各厂排名,一共分成了四个梯队,快来看看你的公司上榜了没~

这份榜单应该几乎把比较有知名度的互联网公司都网罗进来了,这份排名你认可吗?

欢迎在评论区交换“ 内部消息 ”,破除大家的信息差~

……

如今正是秋招的关键时刻,拿着这份表单当作投递参考也未尝不可。大厂并不一定高不可攀,面试总也离不开项目追问、八股文拷打。

这个时候就体现出面试鸭的价值了!8000+高频面试题,大厂面试官精心原创题解,免费刷题复习路线,简直手把手带你拿offer。


进大厂第一步,就从今天这道面试题开始吧。

为什么 Java 新生代被划分为 S0、S1 和 Eden 区?

回答重点

主要是为了提高新生代内存的利用率。

扩展知识

详细分析

因为新生代对象朝生夕死的特性,适合复制算法。按正常思路将新生代一分为二,划两块区域,每次只使用其中一个,GC 后将存活的复制到另一个区域,然后清理老区域非存活对象,这样替换使用两块区域可以避免内存碎片的存在。

但如果一分为二的话,空间利用率只有一半了(每次分配对象只能占据一半的内存大小),这样不太划算。

基于这点,定义了三个区域,Eden 区和两个 Survivor 区,Eden 区 + 1 个 Survivor 区可以比二分之一大,提升利用率,默认 Eden 占 80% ,一个 Survivor 占 10%。

然后利用两个 Survivor 来交替接收 gc 后存活的对象。

比如当前用 Eden + s0 两块区域,gc 的时候将存活的对象拷贝至 s1,然后清理 Eden 和 s0,接着使用 Eden + s1 作为新的对象分配区域。

后面 gc 后,把存活的对象拷贝至 s0,就这样往复使用两个 Survivor 区即可,这种划分手段就提升了内存的利用率。

并且程序可以根据自身的特性调整 Eden 区和 Survivor 区的比例,默认 8:1:1。

如果单个 Survivor 放不下 GC 存活的对象怎么办?

老年代兜底

也就是说如果 Survivor 放不下存活的对象,那么超出的对象直接晋升到老年代。

如果老年代剩余的空间也放不下这些存活的对象怎么办?

如果是 CMS 垃圾回收器,则会触发 CMS 回收。如果 CMS 回收不足以回收足够的空间,会触发 Full GC(Serial Old 回收器)。

如果是 G1 垃圾回收器则会触发 Mixed GC。


最后

再来推荐下 我们的面试刷题网站和小程序:面试鸭!

咱们面试鸭立志成为 一款题库全面、持续更新、题解优质的刷题神器 ,主要目的就是为了彻底解决所有你能想到的八股文学习痛点!

我们精选了近两年的高频面试真题, 已经 有 8000 多道面试题 目啦, 由大厂资深面试官手写答案,押题命中率超高!

不仅有传统八股文,场景题、项目题、系统设计题等等应有尽有,还在不断更新中!

面试鸭十月涨价! 当前最低价 99.9 元买断永久会员






请到「今天看啥」查看全文