zoukankan      html  css  js  c++  java
  • Java面试归来。。囧

      昨天TX面试Java方向,自己感觉悲剧了。。。好多问题没有回答出来。不过也难怪,自己对Java了解的太不深入了,这次正好给自己上了一课。下面的是一些我不知道的问题,不能在同一个地方摔倒第二次了!

    1.JVM如何加载一个class?

      面试官一问到我这个问题我就傻了,学习Java前后才不长时间,哪接触过这么深入的问题!

         Java中类的加载是通过ClassLoader实现的,它的目的是动态加载Java类和Resource。Class文件由编辑器生成,可以被任何一种JVM加载。

      JVM使用类加载器加载类文件,并创建Class 对象,类加载器都是ClassLoader的子类实例。ClassLoader子类需要重载loadClass方法以实现用户自己的类加载方式。ClassLoader 其实就是读取文件,按照CLASSPATH配置的顺序。然后解析后转化为类。

      loadClass方法中使用findLoadedClass方法检查类是否已经被加载,如果返回为null,则表示还没有被加载,于是在其Parent类加载器重寻找_parent.loadClass;如果仍然返回null,则要在系统中查找,findSystemClass;如果仍然没有,则抛出异常。也就是逐级检查是否加载。

    2.ArrayList与LinkedList的区别?

    这个问题让我囧了很久。。。就是最简单的数组与链表的区别嘛!当时我没有反应过来,加上自己没有多少底气,就没说出来!唉,告诫自己要多加学习啊!

    Java中ArrayList和LinkedList都是继承自List类的,前者是数组,后者是链表。

    ArrayList是动态的增长数组,适合总长度未知情况下使用;LinkedList优点在于可以方便插入删除操作,且提供额外的get,remove,insert方法在LinkedList的首部或尾部。

    3.快速排序和堆排序的区别?

    这个我能说出各自的排序过程,但是不知道总结二者有什么区别。。。。

    只能说快排每次是最高效地选择范围,而堆排序是每次肯定不是在正确的范围选择,因为每次都得进行堆调整。

    还有一些问题下次再列出来。

    加油!

  • 相关阅读:
    写了10000条Airtest截图脚本总结出来的截图经验,赶紧收藏!
    自动化测试实操案例详解 | iOS应用篇
    Photoshop 2020特别版,内置多款实用插件,功能强大
    vue click.stop阻止点击事件继续传播
    CSS图标与文字对齐的两种方法
    为什么像王者荣耀这样的游戏Server不愿意使用微服务?
    13 张图解 Java 中的内存模型
    记住没:永远不要在 MySQL 中使用 UTF-8
    牛x!一个比传统数据库快 100-1000 倍的数据库!
    为什么我不建议你用去 “ ! = null " 做判空?
  • 原文地址:https://www.cnblogs.com/pengwang/p/2030139.html
Copyright © 2011-2022 走看看