【校招VIP】很难吗?为什么JAVA面试问static有什么用,都回答是加载就初始化,节省时间。

04月19日 收藏 0 评论 1 java开发

【校招VIP】很难吗?为什么JAVA面试问static有什么用,都回答是加载就初始化,节省时间。

最近进行的Java实习生的面试,有一件事很离谱

面试群体不仅有二本的同学,也有985硕士的同学。

但居然有90%以上的同学,对Java的一个基本考点,“static“这个关键字的作用,答的都不准确或者说是不对。

有人说这个关键字我会,有什么难度啊?

大家听一下接下来这个场景,看看能不能答上来。


问题1:Java这个关键字是什么作用呢?

大家都会不约而同说是静态的。

接着把这个问题细化一下。


问题2:在一个类的成员变量前面加static,和不加的区别是什么?

今年面试的学生竟然不约而同地都回答说,在前面加static之后,加载的时候就可以初始化,就可以节省时间。

大家是不是也是这么去想的?

但是这个问题其实去年以前它都不是这么回答的,或者说大部分人回答的是准确的。

但今年不知道怎么就一个非常准确的都没有。

在前两个问题的基础上继续追问。


问题3:既然说前面加static,初始化会更快,那么是不是所有的变量前面都要加static?这样项目启动就更快了。

这个问题出来之后,里面就有一部分同学开始卡住了。

这说明他们回答的不准确,所以一问就被别人堵住了。

他们没有真正理解它加和不加的区别是什么。

有同学会说,初始化的时候虽然快,但是它可能会占很多内存。

再继续追问。


问题4:我们平时写项目有大小之分。现在项目平时都不是很大,内存就足够大。包括spring的框架,加载时候就会全部的初始化。那不就是初始化就可以吗?反正内存足够大,跑起来也快。

那这些同学就哑口无言了。


离谱的地方就在于这。

这个关键字不是一个多么罕见的关键字,只要我们写代码,哪怕用什么方法,它都有这个关键字。

或者平时用的工具类也好,或者成员变量也好,都会有这个关键字。

但是它肯定不是因为快慢的原因。

若是快慢的原因,那只要用快就好了。

那不会存在加载慢的东西,因为我们肯定就是只用快的东西、性能好的东西。

那也就说明这个回答是不对的,它没有区分出加和不加的区别。


实际上很容易说明白。

就是这个变量是整个类的所有实体类实例所共有的。

举个例子的话就是说,如果是不加static,那每个类只能对它进行自己的私有的处理,它互相之间是不干扰的。

但是如果使用场景是需要这些实例都要去操作一个共用的一个数据,那这时候要加static。这么一讲的话,就非常清楚,非常简单。

但是不知道为什么今年这么多同学,竟然都在第一个问题就倒下了。


大厂在面试的时候,第一个会是一个简单的问题。

然后进行衍生,比如问并发性问题、初始化的这个虚拟机的问题等等。

但是如果第一个问题就答得不准确,面试官就认为这个人的基础很差,就不给他往后走的面试机会了。

所以不管怎么样,这种基础知识千万不要出问题。

一出问题,就一剑毙命。

C 1条回复 评论
雾岛残月

感人,这个类型我终于做对了

发表于 2023-11-23 21:00:00
0 0