最近有很多朋友去目前主流的大型互联网公司面试(阿里巴巴、京东、字节跳动、蚂蚁金服、滴滴),面试回来之后会发给我一些面试题。有些朋友轻松过关,拿到offer,但是有一些是来询问我答案的。
在沟通中发现,由于年限不小,他们的定位基本都是高级及以上,毕竟,年限摆在那里,面个中级也不体面。
沟通时我打算聊点基础的,先打开一下话题,结果发现对于一些开发中很基本的问题,比如:
- Git的分支你们是怎么管理的?
- 接口保证幂等性是基本的要求,那么幂等性你们是怎么做的?
- 你们有用@Transactional来控制事务是吧,那么能不能说出一些事务不生效的场景?
上面几个问题没有一个是“造火箭”的,结果发现,这些很基本的问题,他们普遍都答得很模糊,或者支支吾吾。其中,一个老哥的反问,令我印象特别深刻,他说:
上面的问题我虽然都不懂,但是我都工作六年了,如果我不能胜任工作,那你告诉我,我这5年经验是怎么来的?
再说了,做Java开发,说到底,还不是产品输出原型,对着原型进行数据库建表,然后CRUD吗?
遇到问题网上搜索一下,再不行就群里问一下,我又不找什么中间件的团队,Java开发,不都是这样吗,还能有什么别的花样?
听完我沉思了良久,做为一个高级开发,如果连Git分支如何管理都没思考过,幂等性名词的含义都解释不清,事务注解打上就完事,连生不生效的场景都不知道,只会对着产品原型CRUD,测试不提bug,代码都不想复盘多看一眼,试问谁又愿意和这样的“高级大佬”一起干活?
其实我想了一下,他之所以有这样的想法,很大程度取决于他的经历,长年在传统行业,或者“小作坊”,平时就两三个Java开发,大家都是“难兄难弟”的水平。让他认为,Java开发,就是对着原型CRUD,年限上去了,就是高级开发。
思维一旦形成,就很难改变。但是