最近面试了一个学生,简历上写了一个抽奖的项目,里面全是框架。
问题一问,就发现他基本上没掌握好。
他也知道自己回答的问题没准备好,想补救一下。
就说还有个项目没有写在简历上,是仿照spring的框架做了一个小的项目,还说这个项目做得挺好。
我看他既然这么有自信,那就问一下。
问题1:bean的初始化是怎么来的?
这是我们做spring框架的一个最基本的问题。
但这个孩子面露痛苦,说他没有做到这一块。
然后他就开始背了。
说这个启动过程是怎么从XML文件里面读取参数。
那我就好奇做一个系统没有做到这块,他是做了什么仿spring?
他说反正就是大概把那功能做了一下。
问题2:在main方法里可以用new进行初始化吗?
后来我给他一个非常具体的场景。
假如说,你这里面做了一个service,你是用服务去注解去做的,这样可以注入实例。然后它里面又引入了其他的服务,还用了spring的bean的注解。
那我想问他,如果我想使用service,但这个服务我不用注解,我想用对象的方法,直接在main方法里面去new,能不能运行起来?
就是里面的那些用注解来生成的引用了其他类的服务,能不能注入进去?
他说能,因为spring就是自动注入的。
我说这个肯定不行啊。
因为main方法,它实际上是不接受spring初始化的管理的。
解答1:为什么spring项目代码测试时,不能用main方法?
有时候为什么说,spring项目里面的代码测试的时候,不能用main方法来测试?
不像以前,大家写个Java程序用main方法一调,看看它debug下是不是行了。
为什么spring项目不能这么做?
因为它要注入。
不注入的话,bean就没有初始化,它是个null指针。
所以我们才会使用其他的一些框架,比如说最简单的Junit来进行spring框架的测试。
因为它有模拟spring的启动,然后进行注入。
解答2:为什么大厂校招不要大家去写框架?
因为大家对框架的理解其实根本就不到位。
基本上大家做这种框架的东西都是研究了别人一个课程或者一个代码。
别人告诉你12345你要懂得12345,但你不知道那框架底层可能还有678910到100。
可是作为大厂的面试官,他会知道。
那大家要是这么去准备,不就是自己挖坑把自己埋掉了吗?
就像这次面试的学生,他觉得他项目做得很好。
但一问,其实很多东西不会。
本来看他抽奖的项目回答的不太理想,就不想再问关于框架的问题。
打算给他一个产品逻辑,去做个设计就可以了。
结果他又讲框架,却连基础的bean都不太理解,那怎么仿spring呢?
这就是自己把自己给坑了。
所以大家要多准备些好的项目,不要再抓着框架不放了。
好的项目是什么?
要么实验室的算法项目,要么是实战的项目,要么就是去公司做实体项目,真正的产品逻辑的部分。
我是大学学的Java开发、现在转行做了测试刚做两个多月
时隔几月再来看,还是没理解透彻