关注
美团面试 说一下自己对java面试的感想
“地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像cp那样delete、free掉,你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情?”
我自己分析一下这个问题,首先是“什么时候”,不同层次的回答从低到高排列:
1.系统空闲的时候。 分析:这种回答大约占30%,遇到的话一般我就会准备转向别的话题,譬如算法、譬如SSH看看能否发掘一些他擅长的其他方面。
2.系统自身决定,不可预测的时间/调用System.gc()的时候。 分析:这种回答大约占55%,大部分应届生都能回答到这个答案,起码不能算错误是吧,后续应当细分一下到底是语言表述导致答案太笼统,还是本身就只有这样一个模糊的认识。
3.能说出新生代、老年代结构,能提出minor gc/full gc 分析:到了这个层次,基本上能说对GC运作有概念上的了解,譬如看过《深入JVM虚拟机》之类的。这部分不足10%。
4.能说明minorgc/full gc的触发条件、OOM的触发条件,降低GC的调优的策略。 分析:列举一些我期望的回答:eden满了minor gc,升到老年代的对象大于老年代剩余空间full gc,或者小于时被HandlePromotionFailure参数强制full gc;gc与非gc时间耗时超过了GCTimeRatio的限制引发OOM,调优诸如通过NewRatio控制新生代老年代比例,通过 MaxTenuringThreshold控制进入老年前生存次数等……能回答道这个阶段就会给我带来比较高的期望了,当然面试的时候正常人都不会记得每 个参数的拼写,我自己写这段话的时候也是翻过手册的。回答道这部分的小于2%。
PS:加起来不到100%,是因为有确实少数直接说不知道,或者直接拒绝回答的= =#
分析第二个问题:“对什么东西”:
1.不使用的对象。 分析:相当于没有回答,问题就是在问什么对象才是“不使用的对象”。大约占30%。
2.超出作用域的对象/引用计数为空的对象。
分析:这2个回答站了60%,相当高的比例,估计学校教java的时候老师就是这样教的。第一个回答没有解决我的疑问,gc到底怎么判断哪些对象在不在作 用域的?至于引用计数来判断对象是否可收集的,我可以会补充一个下面这个例子让面试者分析一下obj1、obj2是否会被GC掉?
class C{ publicObject x; } C obj1、obj2= new C();
obj1.x = obj2; obj2.x = obj1; obj1、obj2= null;
3.从gcroot开始搜索,搜索不到的对象。
分析:根对象查找、标记已经算是不错了,小于5%的人可以回答道这步,估计是引用计数的方式太“深入民心”了。基本可以得到这个问题全部分数。 PS:有面试者在这个问补充强引用、弱引用、软引用、幻影引用区别等,不是我想问的答案,但可以加分。
4.从root搜索不到,而且经过第一次标记、清理后,仍然没有复活的对象。 分析:我期待的答案。但是的确很少面试者会回答到这一点,所以在我心中回答道第3点我就给全部分数。
最后由一个问题:“做什么事情”,这个问发挥的空间就太大了,不同年代、不同收集器的动作非常多。
1.删除不使用的对象,腾出内存空间。 分析:同问题2第一点。40%。
2.补充一些诸如停止其他线程执行、运行finalize等的说明。
分析:起码把问题具体化了一些,如果像答案1那样我很难在回答中找到话题继续展开,大约占40%的人。 补充一点题外话,面试时我最怕遇到的回答就是“这个问题我说不上来,但是遇到的时候我上网搜一下能做出来”。做程序开发确实不是去锻炼茴香豆的“茴”有几 种写法,不死记硬背我同意,我不会纠语法、单词,但是多少你说个思路呀,要直接回答一个上网搜,我完全没办法从中获取可以评价应聘者的信息,也很难从回答 中继续发掘话题展开讨论。建议大家尽量回答引向自己熟悉的,可讨论的领域,展现给面试官最擅长的一面。
3.能说出诸如新生代做的是复制清理、from survivor、to survivor是干啥用的、老年代做的是标记清理、标记清理后碎片要不要整理、复制清理和标记清理有有什么优劣势等。 分析:也是看过《深入JVM虚拟机》的基本都能回答道这个程度,其实到这个程度我已经比较期待了。同样小于10%。
4.除了3外,还能讲清楚串行、并行(整理/不整理碎片)、CMS等搜集器可作用的年代、特点、优劣势,并且能说明控制/调整收集器选择的方式。 分析:同上面2个问题的第四点。
最后介绍一下自己的背景,在一间不大不小的上市软件公司担任平台架构师,有3年左右的面试官经验,工作主要方向是大规模企业级应用,参与过若干个亿元级的项目的底层架构工作。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
11-21 13:44
重庆科技大学 Java
程序员花海:实习太简单了 学历可以的 实习描述应该是先介绍业务 再介绍技术 技术咋推动业务的 做到了啥收益 有没有做实验 实验组和对照组有什么不同 你最后学到了什么 有没有参与处理过线上问题 有没有参与过公司的code review 有没有参与过技术分享 这些都是可以在实习描述中写的 并且实习和项目不一样不会撞车 应该放在最前面 放在教育背景下面 另外项目有点烂大街 可以看下我主页的简历优化案例 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 杂记近期所面试的三家中小厂9523
- 2... 工作半年后更确定:我们依然不欠优绩主义什么8571
- 3... 岁末论道:谁才是牛客 2025 最强修仙者?6844
- 4... #牛客2025仙途报告#居然是五颗星5117
- 5... 选择即命运—2025年度总结4696
- 6... 仙途报告4260
- 7... 圣诞节用 AI 做个牛客运营翻翻乐!(含代码)4232
- 8... 一个程序员的自救书|从酒吧陪玩DM到上岸大厂3647
- 9... 互联网实习求职的黑话和timeline,你所需要知道的……3571
- 10... 大学废物离开优绩主义之后发现外面根本没下雨3174
正在热议
更多
# 牛客2025仙途报告 #
5476次浏览 147人参与
# 礼物开箱Plog #
1858次浏览 89人参与
# 2025年终总结 #
179333次浏览 3054人参与
# 工作两年,想和老板谈涨薪怎么说 #
38828次浏览 175人参与
# 哪些行业值得去? #
14408次浏览 77人参与
# 你面试体验感最差/最好的公司 #
23273次浏览 389人参与
# 秋招落幕,你是He or Be #
16485次浏览 304人参与
# 一人说一个提前实习的好处 #
15052次浏览 247人参与
# 今年你最想重开的一场面试是? #
6372次浏览 89人参与
# 考公VS就业,你怎么选? #
88164次浏览 497人参与
# 职场新人体验 #
156974次浏览 1123人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
13742次浏览 130人参与
# 重来一次,你会对开始求职的自己说 #
7214次浏览 193人参与
# 找工作,行业重要还是岗位重要? #
85904次浏览 1701人参与
# 各大公司公布25年Q3财报,你怎么看? #
5063次浏览 50人参与
# 实习没事做是福还是祸? #
19277次浏览 292人参与
# 机械制造秋招总结 #
97395次浏览 878人参与
# 宁德时代求职进展汇总 #
154197次浏览 686人参与
# 反问环节如何提问 #
126475次浏览 2670人参与
# 工作中听到最受打击的一句话 #
8837次浏览 152人参与