打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
和面试官吵起来了?
userphoto

2024.03.04 广东

关注

你好,我是田哥

最近正式面试黄金时间期了,你是不是也开始面试或准备面试了?

如果计划跳槽换工作,强烈给你推荐这篇文章,干货满满:

Java后端面试复习规划表,5万字

(这两年大环境不好,当你真的出去面试后会发现不是什么黄金期,这个黄金期只是相对这一年来说)

昨天,一位朋友和面试官吵起来了,很多人可能都会认为面试官都很牛的,其实,非也。不是每个面试官都很牛的,有的面试官也是很水的,尤其是在中小厂,大厂大部分还是不会差的。

本人2017年在杭州滨江的一家小公司待过,技术团队十多号人,Java开发8个人,但是技术总监(其实就是个项目经理)多年没敲代码了,甩锅吹牛逼那是很拿手的,但是每个人来面试都必须过他的技术面试(我当时进去没有面试,因为我和这个技术总监是上家公司就认识的,有时候也是我去面试,但是他都会再面一次的)。

回到上面的话题中,为什么会有冲突呢?

面试现场

下面是这位朋友的真实面试经历,下面是面试对话过程:

面试官:说说String为什么不可变?

面试者:String中使用char数组value来存储String内容的,并且没有给外部提供相应能修改value数组内容的方法。

面试官:就这样吗?

面试者:是的

面试官:你确定没有方法能修改value内容吗?

面试者:嗯?

面试官:我劝你回去好好看看String源码!

面试者:那您能不能给我普及一下为什么不可变?

面试官:今天反正也不忙,我给你说说吧。其实,这里主要有几个点,第一是Stringfinal修饰的类,表示这个String类是不可以被继承,第二是你说的char数组value也是final修饰,也就意味着这个value一旦被赋值了就不能改变了,重点在这里。

面试者:就这样吗?

面试官:嗯

面试者:你这好像不对吧,这个value是数组,因为是final修饰,确实一旦赋值了就不可以改变了,但是,数组里的数据是可以改变的呀。

面试官:怎么可能!你都学看的是什么书啊(一脸不屑地看着,附带着冷笑)。

面试者:哎,你不能这么说话,你这讲错了,就你这水平还能当面试官?

面试官:???我现在就是面试官,要不你来当面试官吧。

接下来的画面,这里就不说了,两个人互怼了几句,这场面试就这样结束了。

面试复盘

整个面试过程中,面试官确实在关键点上说了一些,但是最后的那个不可变回答不对。

为什么不对?下面我们来验证一下final修饰的char数组内容能不能改变。

public class StringDmo {
    private final char value[];

    public StringDmo(char[] value) {
        this.value = value;
    }

    public static void main(String[] args) {
        String aa="hello";
        StringDmo stringDmo=new StringDmo(aa.toCharArray());
        System.out.println(stringDmo.value);
        stringDmo.value[0]='t';
        System.out.println(stringDmo.value);
    }
}

这段代码很容易看懂吧,但请注意这行代码:

stringDmo.value[0]='t';

这行代码就是把value数组的第一个数据重新赋值了,最后整个代码运行结果如下:

hello
tello

那这里也证明了,面试官说的是不对的,我们确实已经成功修改value数组内容。

final修饰了value数组,不能修改的是value对应的引用。

比如:value[]=new char[10];,你就再也不能对value行第二次赋值了,

value[]=new char[20];

另外,我也再次去翻了一下String的源码,String确实没有提供给外部能修改value数组内容的方法。

关于final关键字的作用,这里就不打算再赘述了,这是学Java的最最最基本的知识。记得在常规的八股文中都会有这么一道题:说说final、finally、finalize有什么区别,

面试中,难免会遇到一些不如意的面试官。如果依我10年前的脾气,果断当场发飙,怼回去。但,事后想想还是没有必要,哈哈哈,这个仁者见仁,还是觉得千万不要因小失大。

如果计划换工作,记得先把简历写好,这是第一步哈,不然面试机会会大打折扣。

上一期,我跟大家分享了:简历中自我评价,是否应该删掉?

另外给你推荐一个在线刷面试题的网站:https://www.woaijava.cc/

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C/C 程序设计员应聘常见面试试题 strcpy
女面试官:我身上什么位置最大?面试小伙仅回答两个字,当场录用
每周读源码:源码解读String&StringBuilder&StringBuffer的区别
String的不可变特性
char[] && string
华为经典C语言面试题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服