V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
10Buns

昨天面试指出错误被 diss 了

  •  
  •   10Buns · Feb 28, 2019 · 6373 views
    This topic created in 2614 days ago, the information mentioned may be changed or developed.

    昨天面试南京 xx 生活, 面试官是一个业务架构师。

    笔试有一道题目:怎么自定义 java.lang.String 类,从类加载器角度阐述。 我说自定义不行, 首先不允许 java.xxx 开头的包, 其次根据类加载机制, string 类已经加载了, 就不允许再自定义加载。哈哈哈结果把我 diss 一遍说可以的,你回去试试。就让我回去了。

    然后今早面试反馈基础不行,过往项目经验不足。😂好歹做了几年日均交易几百万的系统,真的服气。

    27 replies    2019-03-01 16:17:57 +08:00
    saluton
        1
    saluton  
       Feb 28, 2019   ❤️ 1
    双向选择,双向选择,膜拜大佬
    xuanchi
        2
    xuanchi  
       Feb 28, 2019
    这个种问题如果是做代码覆盖率、插桩中专业领域才能够回答的让对方服气,做业务的就算能够回答上,没有实际操作也就是看看博客,就算能够回答上,又有什么用处呢?
    被怼很正常,平常心
    wwfengqi
        3
    wwfengqi  
       Feb 28, 2019 via Android
    哈,艾佳生活吧
    10Buns
        4
    10Buns  
    OP
       Feb 28, 2019
    @xuanchi 主要题目都错了,非得跟我说可以, 让我回去试试。也是蛋碎
    10Buns
        5
    10Buns  
    OP
       Feb 28, 2019
    @wwfengqi 哈哈哈兄弟南京人啊
    dongisking
        6
    dongisking  
       Feb 28, 2019 via Android   ❤️ 1
    毕竟他是面试官,也很可能以后是你的上司。你这么说他以后估计没得混的了。所以你懂的,面试要扮猪吃老虎
    10Buns
        7
    10Buns  
    OP
       Feb 28, 2019
    @dongisking 可能我太耿直直接说题目错了😂但是的确没发实现啊。还让我抛弃 ioc 选择一个更好的方案,我说实际没操作过,但是 ioc 原理和伪代码我可以写一下,结果说对就是说下这个。😂这不是误导别人么
    Ico945
        8
    Ico945  
       Feb 28, 2019
    双亲委派这种东西都问烂了他居然不知道有点不信(狗头··)
    10Buns
        9
    10Buns  
    OP
       Feb 28, 2019
    @Ico945 哈哈哈这个没必要吹牛逼,我还以为是想自定义实现 string 类功能,还反复确认了下
    lhx2008
        10
    lhx2008  
       Feb 28, 2019
    这个我还是持保留意见,首先,自定义类加载器是可以不进行父类委托(或者叫双亲委派)的,虽然 Jvm 已经把 java.lang.String 加载了,但是应该还是有办法加载自定义 String 类进来的,不过当然无法替换原来的 String 类。
    lhx2008
        11
    lhx2008  
       Feb 28, 2019
    当然,自定义加载进来的 String 类,只能通过反射初始化和调用函数,因为默认会执行到的是原来的类。
    lhx2008
        12
    lhx2008  
       Feb 28, 2019
    当然,实际过程中还有其他 JVM 的限制,不过类加载器这里是可以绕过的,父委托不是必须的。比如 Tomcat 的类加载器就不遵循父委托。
    Cbdy
        13
    Cbdy  
       Feb 28, 2019
    类加载这个,我表示怀疑
    我没有试过加载 java.lang.String。但是 JVM 区分两个加载到 JVM 里的类的唯一性,是通过:类加载器+全限定名。所以可以加载两个同全限定名的类到同一个 JVM,只要是两个不同的加载器加载的。
    10Buns
        14
    10Buns  
    OP
       Feb 28, 2019
    @lhx2008 打破双亲委派模型我知道,但是在 jvm 的中不是限制必须由 bootstrp 来加载 java.*开头的类么? 麻烦详细解释下,这一块可能是我理解有问题
    lhx2008
        15
    lhx2008  
       Feb 28, 2019 via Android
    @10Buns 确实,按照规范,java.*是加载不进来的,但是我觉得那个面试官可能不是想问你这个吧。。哈哈
    lhx2008
        16
    lhx2008  
       Feb 28, 2019 via Android
    @10Buns 还有另外一种思路,就是用 CGLIB 或者 ASM 动态生成一个子类,这个子类是继承 String 类的,这样子用这个子类创建的类可以用 String 修饰,可以达到所谓修改 String 类的效果,而且不需要 java.*的名字。不过,String 类是 final 的,理论上是无法被继承的,我不太清楚 ASM 或 CGLIB 能否绕过这个限制
    zmj1316
        17
    zmj1316  
       Feb 28, 2019 via Android
    非要做的话,自定义一个 JVM 总行吧🤣不过可能就是 CPP 了
    chenguoyu
        18
    chenguoyu  
       Feb 28, 2019
    我也对这个持有保留意见,我刚还翻了深入理解 java 虚拟机看了一下,他只说 bootstrap 类加载器根据名称加载。而且双亲委派模型的例子还是 java.lang.object。
    eaglewangl37670
        19
    eaglewangl37670  
       Feb 28, 2019 via Android
    @lhx2008 有点疑问,String 类不是被 final 修饰了吗,那应该是无法被继承了,你说的继承子类是?
    lhx2008
        20
    lhx2008  
       Feb 28, 2019 via Android
    @eaglewangl37670 可以的,只是我们自己写的代码是不行的。具体你可以搜索一下 asm 或者 cglib 绕过 final,这个应该也挺常用到的(比如 AOP )。但是呢,改 jdk 类这个,我还真没试过。
    mmdsun
        21
    mmdsun  
       Feb 28, 2019 via Android
    意思是让你定义一个 your.packge.MyString 的类,做到能和 java.lang.String 一样的效果 ? 如果不是这个意思多半说明面试官水平很差。(考察太深)(或者说让你设法绕过双桥委派机制,可参考 Tomcat 源码
    Miiiz
        22
    Miiiz  
       Feb 28, 2019
    可以可以,可以不去面试了
    ofblyt
        23
    ofblyt  
       Mar 1, 2019
    面试者的目的不一定是展示自己的技术水平,技术只是综合能力的一方面,面试者的目的应该是得到面试官的认可
    alvinbone88
        24
    alvinbone88  
       Mar 1, 2019
    那么问题来了,Android SDK 是怎么做到加载自定义 java.lang.Sting 类的
    顺便放个 Android SDK 里 java.lang.String 的源码
    https://github.com/AndroidSDKSources/android-sdk-sources-for-api-level-28/blob/master/java/lang/String.java
    alvinbone88
        25
    alvinbone88  
       Mar 1, 2019
    ……发完贴才发现编译能过,加载不是由标准的 JDK 来做的
    ukyoo
        26
    ukyoo  
       Mar 1, 2019
    艾佳生活...
    sioncheng
        27
    sioncheng  
       Mar 1, 2019
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5902 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 03:34 · PVG 11:34 · LAX 20:34 · JFK 23:34
    ♥ Do have faith in what you're doing.