37

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

 3 years ago
source link: https://www.v2ex.com/t/780128
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

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

  0576coder · 20 小时 59 分钟前 · 5308 次点击

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

随便举几道题

  • hashmap 扩容,以及为什么 0.75 ?
  • java 动态代理的两种方式?区别?
  • 类加载机制,双亲委派,破坏双亲委派

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

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

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

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

77 条回复    2021-05-31 09:45:43 +08:00

tanhui2333

tanhui2333   20 小时 55 分钟前

别问,问就是内卷

faqqcn

faqqcn   20 小时 54 分钟前   ❤️ 9

😏 面试题你都不想背,那我以后怎么管理你

linbiaye

linbiaye   20 小时 50 分钟前

没办法,大家会的大多差不多,只能再加一些筛选条件。

Dganzh

Dganzh   20 小时 44 分钟前

面试官觉得优秀的人都能背下这些,虽然背下来不一定都是优秀的

OxOzZ

OxOzZ   20 小时 43 分钟前

你面试的时候不会直说自己不会吧?

就第一题,你就说自己不知道但是现场猜测推理一下也行啊,这不是能力?

geekvcn

geekvcn   20 小时 41 分钟前 via iPhone   ❤️ 3

因为人家能招到既会背书,能力又行的,就像文凭人家能招到既有文凭又有能力的。说白了就是你不是尖端人才,可替代性太强。

BBCCBB

BBCCBB   20 小时 35 分钟前   ❤️ 4

你说的这几个问题都是基础, 不是黑 java 的卷的有力证据.

Jooooooooo

Jooooooooo   20 小时 31 分钟前

能啊, 优秀的开发这些题都会

0576coder

0576coder   20 小时 27 分钟前

@OxOzZ
这个确实是一方面的能力,知识我感觉太机械化了

ccde8259

ccde8259   20 小时 27 分钟前 via iPhone

第一问能聊聊平均查找长度怎么计算吗?
第二问能聊聊 CGLIB 为什么这么快?

我遇到一个 ClassCastException,提示我 Cannot cast com.example.A cannot cast to com.example.A,怎么办?

0576coder

0576coder   20 小时 20 分钟前   ❤️ 3

其实我想表达的意思是,目前这样的面试题,太死板了,导致很多人都是面向面试编程。我自己是半路出家的,目前敲 java 差不多一年,没有系统完整学习过。


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


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

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


我其实想说的是,为什么现在面试 java 的时候,太局限在 java 自己本身了。很少从整体的角度来考察面试者,这是我感觉最不合理的地方

ccde8259

ccde8259   20 小时 10 分钟前 via iPhone

面试官没有义务去发掘你的亮点……
100 个候选人有 100 种 N 芒星,不可能每个人都在半个小时内聊得出来。所以只能把这些东西降维到一个相对统一而通用的尺度,去给候选人划出一个相对简单的六芒星。

0576coder

0576coder   20 小时 9 分钟前

@ccde8259

那也不该问这些傻逼问题啊

janus77

janus77   19 小时 56 分钟前   ❤️ 1

不知道你工作经验是多少,这些题到一定程度是真的可以运用起来的
第一题,你不一定要证明 0.75 ,只需要说大于 0.75 会怎样,小于会怎样。那么以后你写代码的时候,万一需要你自己传入这个参数,甚至需要你自己实现 hashmap 的时候,你应该知道这个参数传多少才适合你当时的场景。
第二题,实际写过代理这块的肯定知道,都不需要背的。你用过哪几种就哪几种,能全答出来当然最好,答不出全说下你用过的。就员工能力来说,用过的>没用过的,不难理解吧?
第三题,遇到 bug 的时候排查,需要知道这个类怎么加载的,加载时是否出现问题。
以上都是实际项目经验会遇到的。

junksheng

junksheng   19 小时 55 分钟前

@0576coder 那该问哪些 sb 问题呢

sagaxu

sagaxu   19 小时 52 分钟前 via Android

优秀的人大概率背书背的更溜

Lemeng

Lemeng   19 小时 51 分钟前

不用怀疑面试的机械性,利益性质的东西,永远都有其目的性。
不会玩往没用的方面,来选拔人才

Takamine

Takamine   19 小时 51 分钟前 via Android   ❤️ 1

……我觉得只去表面得针对这三道题没啥意义。

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

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

问双亲委派,那用了 Dubbo 的自己也得去看看 SPI 怎么实现的吧。

jasonkayzk

jasonkayzk   19 小时 45 分钟前

@Takamine #18 can't agree more

FrankD

FrankD   19 小时 40 分钟前

这些点考察的都是 Java 的基本功,答上来能表明你平常有尝试了解技术底层原理是啥。
面试官看你这个回答不上来,至少会认为你没好好准备,也就不想问了。

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

ccde8259

ccde8259   19 小时 39 分钟前 via iPhone

@0576coder
一般人背这些书要不了一个月吧……
连书都不肯背怎么让人相信你有……

tachikomachann

tachikomachann   19 小时 38 分钟前 via Android

这三个问题属于面试时打开话题的问题,往深了问或者发散的问还可以带出更多问题。

关于 0.75 你可以不知道官方为什么这样做,但是可以说说以你的理解,猜猜人家为什么要这样做。这个就体现了你面对陌生问题时解决问题的能力。

面试问题不一定要答标准答案的。

我一直认为面试过程就像相亲,想在一两个小时内让人家对你感兴趣,除非很有眼缘,不然最终都会落到谈论一些俗套的话题上面的,这个才是常态。如果你想快速达到目的(得到一份工作 or 结婚),就要迎合这种需求。如果你追求更高层次的东西(让你工作得很舒服的团队 or 美好的爱情),就需要不断试错,找到最合适自己的那个。

Cbdy

Cbdy   19 小时 36 分钟前

这应该是没有创新力的表现吧

weeshin

weeshin   19 小时 31 分钟前

我想一个好的程序员也应该拥有背书的能力

Akiya

Akiya   19 小时 5 分钟前 via iPhone

外企不考八股文啊😄,国内也有不少企业只撕代码的比如头条,但是这样能不能筛选出来好的程序员呢?也未必。
总的来说面试就是看看两边是不是对味嘛,适合才是最重要的

asanelder

asanelder   19 小时 4 分钟前

理解楼主. 俺感觉如果面试官直接问, 没什么意思, 感觉就是在问八股. 俺感觉可以这样问

以第一题举例

1. 平时工作中用过 HashMap 么? (用过), 为什么要使用 HashMap (为了查式更快, 另外也是需要 kv 这种对应关系), 为什么 HashMap 就快呢( 讲讲 HashMap 是如何进行查找的, 比如分桶啦, 每一个桶里又具体是什么啦 )

到了分桶这一步呢? 你就可以主动去说一下, 这个分桶的个数是, 其实是有讲究的, 你想啊, 分太多, 会怎么样? 分太少, 又会怎么样? 两个极端都不可取, 总得中庸一下下, 那么, 就有一个默认的分桶数, 随着往里面放的东西越来越多, 桶的数量是不是也要变化呢? 当然呢? 否则每个桶里越来越多, 不就查起来慢了么? 那么, 在什么条件下要改变桶的数据呢? 还有每个桶里又是什么呢?

这样问题, 可以不用等着面试官问, 面试者自己循序渐进, 自问自答, 具体的数值自己记不清也很正常(比如默认桶的数量, 扩容因子等等), 但你这样回答, 面试官一看就知道你小子是理解这东西怎么回事的, 出了问题, 也知道如何去找.

总结一下

就是你和面试官, 不要是那么, 问答的形式, 而是讨论, 一步步的深入, 具体可以不表. 这也体现了以后你在工作中能不能和人进行有效的技术沟通啊! 如果面试官感觉你能准确把握问题, 思路由浅入深, 步步清晰. 对你的印象应该也不差吧.

当然, 面试官也是普通人, 有的面试官本身不合格.

luckyrayyy

luckyrayyy   18 小时 56 分钟前

背题都不会,还能指望你会啥...或者你直接给出解决方案,有更高效的面试策略吗?

yoke123

yoke123   18 小时 49 分钟前 via Android

这样有利于买方市场,也就是资本方。
整体水平被内卷上来了,苦逼的是大家被迫陷入这种恶性竞争。
乐观点,主动去背八股文,要卷也是我卷别人。

yeqizhang

yeqizhang   18 小时 40 分钟前 via Android

这个还是初级的八股文,要是细节起来,比如上次就不是有人发帖问 Integer 比较的,哈哈..上至各类中间件源码及使用,下至语言细节都有问的

0576coder

0576coder   18 小时 38 分钟前

@janus77

我是感觉我实操遇到的问题跟面试的问题八竿子打不到一块

fengpan567

fengpan567   18 小时 38 分钟前

我也挺反感八股文的,尤其是那些项目经历都不看的面试官,上来就 hashmap,分布式,多线程几套组合拳,给我的感觉就是为了完成面试 KPI 一样

0576coder

0576coder   18 小时 33 分钟前

@Takamine

比如你自己写业务,自己会去主动扩 hashmap 吗? 而且也不会死命的往一个 map 里狂赛东西把

代理的话 如果我是面试官,还不如直接问代理模式这种设计模式,考察动态代理的实现其实意义没有很大

第三个问题是属于我不了解的。

我是感觉面试题太死板了,不知道为什么这么死板。

iOCZ

iOCZ   18 小时 33 分钟前

我觉得超过 0.5 都行,0.75 只是又折中了一次

0576coder

0576coder   18 小时 33 分钟前

@yeqizhang

java 真的这么内卷么- _-

ericgui

ericgui   18 小时 25 分钟前

@0576coder 算法怎么样?

wxw752

wxw752   18 小时 7 分钟前

其实就是人多了啊,招聘肯定择优录取,怎么才算优,面试官说的算。
毕竟 360 行,行行转 Java 。卷就完事了

xloger

xloger   17 小时 34 分钟前   ❤️ 10

你可以瞎扯一句 “不过 HashMap 在最新的 JDK 17 的加载因子改为了 0.8,不知道您对此怎么看”,然后观察一下他的反应。

如果他打个哈哈过去,或者瞎扯一些解释,说明他不过如此,自己也是个只会背面试题的逼。

如果他当场查证,或者自信地跟你讲一下泊松分布的原理,论证 0.75 是个较为合适的值,不应该随便改。那的确是人家牛,态度也没问题,我们也可以服气。

dbsquirrel

dbsquirrel   17 小时 33 分钟前 via iPhone

看了看这贴里的内容,基本都不会……
借这里问下,那非科班学生在国内找程序员工作难度有多高?本科 985,学过 CS61B,leetcode 刷了 200 道,spring boot 学过看过写过一点。

charlie21

charlie21   16 小时 54 分钟前 via iPhone

归根到底,企业方还是没有被背书进来的人坑过(兴许坑过,但坑得不够惨)所以觉得考背书的筛选办法是很好的

xwhxbg

xwhxbg   16 小时 48 分钟前

淡定,大部分面试官也不会去手写 hashmap 之类的,hashmap 在单线程下也许手写还能勉强跟上标准库的性能,随便一点并发就会引入复杂的问题,面试官手写 3 年都未必能优化到一个靠谱的性能,说到底代码这行靠的是简单的模式反复迭代优化,背题也好,拍脑袋也好意义不大

zomco

zomco   16 小时 39 分钟前

我是宁愿背公式也不会背这些题目的

chenshun00

chenshun00   16 小时 37 分钟前

亮给面试官一个 GITHUB 账号,说明自己的能力,顶呱呱

aguesuka

aguesuka   16 小时 36 分钟前

优秀的开发 :≡ 工资低能加班. 熟练背面试题的服从性比较高, 容易成为"优秀的开发".

wm5d8b

wm5d8b   16 小时 34 分钟前

非常现实的是,许多人你问他 HashMap 扩容,他能背诵,你再问他如何指定初始容量,居然说不知道

raffaellolin

raffaellolin   16 小时 19 分钟前

@chenshun00 几年前就出现刷 github 星星的,专门对付觉得 github 加分的

Leviathann

Leviathann   15 小时 49 分钟前

0.75 其实没什么理由,大概就是根据经验取的折中值,后面泊松分布那段是取了这个 0.75 以后再接下来算每个桶出现 k 个元素的概率
事实上 sedgewick 的算法书里总大小 N = αM (链表数量),这个α举得例子都是 10,20 之类的

Rheinmetal

Rheinmetal   15 小时 47 分钟前   ❤️ 1

@dbsquirrel 牛客之类的地方自己看看咯 大厂卷 小厂其实还好的 背背八股文也不太费时间 不少人以面代练也能找到还可以的工

lagoon

lagoon   15 小时 45 分钟前

不妨想,为什么古代科举,会变成八股文?

难道招几个真能治国的不好?至于说门阀的,清朝科举也不是门阀。

答案其实是一样的。

sagaxu

sagaxu   15 小时 45 分钟前 via Android   ❤️ 1

@xloger 问一下面试官,为何 gcc 的 stl 实现,默认的最大加载因子是 1.0,是什么原因造成这种区别的。

ikas

ikas   15 小时 40 分钟前   ❤️ 1

虽然着三个题目都是面试经常出现的,但是实际也是可是考察人啊,就好比第三题,那换一种问法:tomcat 是如何加载类的,是如何隔离不同的 webapp 的?

ikas

ikas   15 小时 38 分钟前

第二题可以问你,spring 的事务是如何实现的?为什么需要配置 proxy-target-class?

MarkLeeyun

MarkLeeyun   14 小时 59 分钟前

换个语言,比如 rust 立马解决问题。

kawaiidora

kawaiidora   14 小时 24 分钟前

https://bbs.saraba1st.com/2b/thread-1989340-3-1.html

“我是 15 年开始工作,肉眼看着环境一点点变烂。总之大概就是……大多数公司(包括大公司,因为质效太垃圾导致人员流动频率高到离谱)没有人员培养机制,完 全 没 有"可复制的"鉴别面试者能力的办法,进而人员准入标准完全是看小领导心情,哪里都是一言堂,所以大头兵们只好考八股文了。”

八股便于标准化啊,就好比看毕业院校比看 GPA 靠谱一样。

blackshadow

blackshadow   14 小时 19 分钟前 via iPhone

可以招到靠谱的,但也会招到不靠谱的。 现在我就在教旁边四年经验的老哥敲代码

Lonely

Lonely   14 小时 8 分钟前 via iPhone

面试官:你觉得太八股了?那来考考你算法好了。啥?算法也不行……下一位

e583409

e583409   13 小时 48 分钟前

所以面试 考写代码还是挺科学的

christin

christin   12 小时 45 分钟前 via iPhone

那就去面那种考算法题的 这种没有标准答案 看的都是个人能力
如果你书不想背 算法又不会…

violence123456

violence123456   12 小时 37 分钟前 via iPhone

老哥我懂你,我就是因为不喜欢这样子,尤其你说的用了个第三方库连 pthread 都不知道,只能等着修 bug 。因为我还在校,准备去找 cpp 开发了。java 那些八股看的脑壳疼

caliburn1994

caliburn1994   12 小时 22 分钟前

说实话,我是觉得英语能力够,很多事情就可以做。。

tangzekk

tangzekk   12 小时 6 分钟前

就第一条,为什么 0.75,源码注释里面写的,0.75 只是预设值,没有太多意义,具体多大看你具体使用(英文).
你这压根源码没看,光 csdn+<java 面试指南>
你面试的时候把源码注释英文一说,面试官直接叫你爸爸

msaionyc

msaionyc   11 小时 45 分钟前

因为大部分面试官不行

jones2000

jones2000   11 小时 44 分钟前

优秀的人是靠猎头重金挖的. 八股文找的一般就打打下手.

duhb

duhb   11 小时 38 分钟前 via iPhone

@OxOzZ #5 你这就是在扯淡了,面试是让你随便推理的? 推好了算走了狗屎运,推不好,面试官看你驴头不对马嘴的一本正经的胡诌心里早已嘲笑翻天,直接回去等通知吧。

ppcoin

ppcoin   11 小时 32 分钟前   ❤️ 1

窦文涛:我那天发现王阳明,就是明朝的这个大儒,讲究这个良知良能。王阳明当时也碰到过这个。他就觉得,第一人要修养自己,人生的进步,我要读圣贤书,修身养性,这是一条路。但是另一方面呢,没有科举就没有进身之阶,这两个矛盾。
他跟他的子侄辈们也在说,不要因为科举荒废了修养圣贤之道,但是呢,你不好好复习功课,你把心思放在看闲书上头,你考不上怎么办呢?于是王阳明给自己找了一个理由,他这个理由也很有意思,他说你不要去管科举这个八股是有用还是没有用,他说这是另一件事情。他说比如我们要晋见皇上,等待皇上召用我们,你是不是应该有点诚意呢,你是不是应该先给皇上行礼,或者再带点家乡的土特产,就是你要有诚意。

许子东:高考就是一个诚意。

窦文涛:对,他说你把这个理解为你要为国家做贡献了,接受国家选择成为一个有用之才,你拿出点诚意来。就是你连参加一个高考就说死记硬背吧,你连点死记硬背都没有,我怎么能相信你是诚心诚意地要成为栋梁之才呢。你看王阳明这个说法,我发现挺有意思。

James369

James369   11 小时 9 分钟前

我觉得任何领域都只有 5%的精英领袖,然后是 15%的公知专家,最后是 80%大部分跟风的吃瓜大众。
所以为什么会形成这样的风气都是拜某些人所赐。

lecher

lecher   10 小时 51 分钟前

说明在短时间内考核一个候选人的能力最有效的方式就是问这些问题了。

面试官的目的并不是发掘出候选人的所有潜能,而是在有效时间内筛选出能胜任岗位需求且有意愿入职的候选人。
筛选效果的评判标准是通过率和入职合格率在可接受范围内。
所以筛选的手段只是尽可能划出一个通用的及格线,至于入职之后用什么技能,和面试题目根本没有太大的关系。
候选人基数大,岗位少,筛选难度高。
候选人基数小,岗位多,筛选难度低。

赶上招聘岗位对应的面试官比例不足,还会开拓出异步方案,先做一轮笔试题,笔试题的难度也类似。

gushu

gushu   9 小时 33 分钟前

其实就和高考差不多,考得厉害的人能力就强吗?好的大学为啥就要选分数高的?我觉得是概率学的问题,因为能力很难有标准,但分数可以筛掉一些比较离谱的人和情况。

jfdnet

jfdnet   9 小时 16 分钟前 via Android

面试只能抓下限吧。所以不是还有个试用期么。

shawnxwang

shawnxwang   3 小时 49 分钟前

那考啥?翻来覆去就那一套,程序员也不是个多么高端的职业

FreeEx

FreeEx   1 小时 34 分钟前   ❤️ 2

第一个问题就好比去问 LOL 选手 [法师之靴] 这个装备为什么是 +18 法术穿透?
为什么不是+17 或者+19 呢?作为一个专业的电竞选手竟然只知道 [法师之靴] 是 +18 法术穿透,却说不出为什么?我觉得你的基础太差。

Marszm

Marszm   35 分钟前

卷说明人多呗。。。。太多人搞 java 了就卷。。。然后进去了还是 CURD 。。。笑死

cclander

cclander   19 分钟前

你这纠结都是一面的内容啊,二三面就不是这些了

jsjjdzg

jsjjdzg   10 分钟前

你要在 V2 上问这些东西?很多老学究了。。。实际他干活在干啥不清楚?

root8080

root8080   8 分钟前

还好吧 大厂都是直接就问项目 中间穿插少量八股文 不是像对着面试题问那样死板
应该是面试官水平问题。。。

PonysDad

PonysDad   7 分钟前 via iPhone

令我费解的是,为什么面试官不去考察下面试者对面向对象程序设计的理解。导致大部分招进来的人产出的代码都是一坨屎,最后大家只能不断低在上面推屎

yisheyuanzhang

yisheyuanzhang   4 分钟前

@asanelder 赞同,感觉优秀的面试官都是连环炮式的问,引导思路,看面试者能力边界、思考问题的方式、开发中有没有思考,这样的八股文问题来才有意思,面试后也能收益颇多。
如果是零碎的知识点跳着问,单向问没有交流,多半面试官也不懂,网上搜来的题

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK