为什么现在的 Java 面试越来越八股文,这样真的能招到优秀的开发么,而不是只会背书的

2021-05-30 12:51:13 +08:00
 0576coder

我模拟参加了一个 java 面试,我感觉问的问题都好八股

随便举几道题

以我浅薄的知识点来说,第一题如果说考察一个人看没看过源码,应该可以开门见山的问,就算看过源码,也不一定所有细节都记得住。再说这傻逼的 0.75 ,人家一大坨数学证明过程也没在源码里面写啊,鬼知道为啥 0.75 。不背书谁能答出来

再看第二题 背书的答案应该不涉及到字节码增强,理论上这个要答好,肯定是要好好去看字节码增强的底层实现原理。但是标准答案就是什么 JDK 代理 cglib 。区别就是一个是接口动态代理,还有什么 final 修饰的不能使用,巴拉巴拉一堆。但是我感觉没问到点子上啊

第三题我就不懂了,但是我感觉这个也是背书的题

以上三题,我没背过书,基本答不上来。然后面试官说你基础太差 呵呵哈哈哈

15820 次点击
所在节点    程序员
104 条回复
tanhui2333
2021-05-30 12:55:36 +08:00
别问,问就是内卷
Rache1
2021-05-30 12:56:10 +08:00
😏 面试题你都不想背,那我以后怎么管理你
linbiaye
2021-05-30 13:00:08 +08:00
没办法,大家会的大多差不多,只能再加一些筛选条件。
Dganzh
2021-05-30 13:06:06 +08:00
面试官觉得优秀的人都能背下这些,虽然背下来不一定都是优秀的
OxOzZ
2021-05-30 13:07:17 +08:00
你面试的时候不会直说自己不会吧?

就第一题,你就说自己不知道但是现场猜测推理一下也行啊,这不是能力?
geekvcn
2021-05-30 13:09:10 +08:00
因为人家能招到既会背书,能力又行的,就像文凭人家能招到既有文凭又有能力的。说白了就是你不是尖端人才,可替代性太强。
BBCCBB
2021-05-30 13:15:28 +08:00
你说的这几个问题都是基础, 不是黑 java 的卷的有力证据.
Jooooooooo
2021-05-30 13:19:26 +08:00
能啊, 优秀的开发这些题都会
0576coder
2021-05-30 13:23:02 +08:00
@OxOzZ
这个确实是一方面的能力,知识我感觉太机械化了
ccde8259
2021-05-30 13:23:22 +08:00
第一问能聊聊平均查找长度怎么计算吗?
第二问能聊聊 CGLIB 为什么这么快?

我遇到一个 ClassCastException,提示我 Cannot cast com.example.A cannot cast to com.example.A,怎么办?
0576coder
2021-05-30 13:30:22 +08:00
其实我想表达的意思是,目前这样的面试题,太死板了,导致很多人都是面向面试编程。我自己是半路出家的,目前敲 java 差不多一年,没有系统完整学习过。


就是我感觉很多 java 开发者,都被困在 java 里面。比如多线程的答案背诵的贼溜,但是连个 pthread 都不知道是什么。


我自己使用的时候,我感觉 java 也有很多的局限性,比如你用了一个三方的包,那个老哥写的有 bug,异常没 catch 也没 throw,你使用的时候遇到了这个特殊情况,百分百会报错,你也没法在外层 catch,只能等别人修复 bug 。

还有比如 Thread 的 stop 方法已经废弃了,只能抛出 interrupt 异常,然后 catch 住再 reture 。其实这些都是我使用下来感觉不爽的点。


我其实想说的是,为什么现在面试 java 的时候,太局限在 java 自己本身了。很少从整体的角度来考察面试者,这是我感觉最不合理的地方
ccde8259
2021-05-30 13:40:34 +08:00
面试官没有义务去发掘你的亮点……
100 个候选人有 100 种 N 芒星,不可能每个人都在半个小时内聊得出来。所以只能把这些东西降维到一个相对统一而通用的尺度,去给候选人划出一个相对简单的六芒星。
0576coder
2021-05-30 13:41:31 +08:00
@ccde8259

那也不该问这些傻逼问题啊
janus77
2021-05-30 13:53:42 +08:00
不知道你工作经验是多少,这些题到一定程度是真的可以运用起来的
第一题,你不一定要证明 0.75 ,只需要说大于 0.75 会怎样,小于会怎样。那么以后你写代码的时候,万一需要你自己传入这个参数,甚至需要你自己实现 hashmap 的时候,你应该知道这个参数传多少才适合你当时的场景。
第二题,实际写过代理这块的肯定知道,都不需要背的。你用过哪几种就哪几种,能全答出来当然最好,答不出全说下你用过的。就员工能力来说,用过的>没用过的,不难理解吧?
第三题,遇到 bug 的时候排查,需要知道这个类怎么加载的,加载时是否出现问题。
以上都是实际项目经验会遇到的。
junksheng
2021-05-30 13:54:52 +08:00
@0576coder 那该问哪些 sb 问题呢
sagaxu
2021-05-30 13:57:58 +08:00
优秀的人大概率背书背的更溜
Lemeng
2021-05-30 13:58:56 +08:00
不用怀疑面试的机械性,利益性质的东西,永远都有其目的性。
不会玩往没用的方面,来选拔人才
Takamine
2021-05-30 13:59:13 +08:00
……我觉得只去表面得针对这三道题没啥意义。

只问 Hashmap 扩容,那顺带的你自己得知道它线程安全不安全吧。要避免大数据量下的扩容内存占用,还有简单初始容量设置当然也可以用比如 Guava 的 Map 。

问动态代理,那如何用 InvocationHandler 去做点事情得知道吧,对应的 Spring 里的代理也得了解吧。

问双亲委派,那用了 Dubbo 的自己也得去看看 SPI 怎么实现的吧。
jasonkayzk
2021-05-30 14:05:02 +08:00
@Takamine #18 can't agree more
FrankD
2021-05-30 14:09:56 +08:00
这些点考察的都是 Java 的基本功,答上来能表明你平常有尝试了解技术底层原理是啥。
面试官看你这个回答不上来,至少会认为你没好好准备,也就不想问了。

面试要想给人留下不差的印象,自己也要主动说出优点的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/780128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX