2020我也当了面试官-java面试题之四

写在前面
  今天的面试中记录了一些基础的问题,但是自己记忆比较模糊的,特此整理了一下,用于温故而知新。特此申明:问题中很多答案也是从网上搜集,能贴出链接的我会在答案下方贴出原文链接,仅用于延伸学习。
下面就是今天我面试摘录的面试题喽~
1.类的修饰符有哪些?
  类的修饰符分为:可访问控制符和非访问控制符两种。
  可访问控制符是: 公共类修饰符 public
  非访问控制符有:抽象类修饰符 abstract
  最终类修饰符:final
2.HashMap是不是有序的?
  HashMap是无序的,因为哈希冲突导致的。
  有序的Map是有TreeMap和LinkedHashMap。那么TreeMap和LinkedHashMap是如何保证它的顺序的?
  LinkedHashMap 是根据元素增加或者访问的先后顺序进行排序,而 TreeMap是基于元素的固有顺序 (由 Comparator 或者 Comparable 确定)。 TreeMap则实现了 SortedMap 接口,所以TreeMap更加高效。
3.Java中的流有哪些?有哪些特点?
   按流的数据单位不同分为:字节流和字符流;
  字节流的抽象基类:InputStream和OutputStream;
  字符流的抽象基类:Reader和Writer。字符流是以字符 (char) 为单位读写数据的。一次处理一个 unicode。字符流都是高级流,其底层都是依靠字节流进行读写数据的。
  它们之间的不同点:
  读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
  处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
  结论:只要是处理纯文本数据,就优先考虑使用字符流。除此之外都使用字节流。
4.封装、继承、多态举例说明 ?
  封装:将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。
  继承:子类可以拥有父类的属性和方法;
  多态:以说是“一个接口,多种实现”或者说是父类的引用变量可以指向子类的实例,被引用对象的类型决定调用谁的方法,但这个方法必须在父类中定义
5.类的加载器有哪些?
   java代码的执行过程主要包含编写、编译、运行这三个阶段。编写就是我们写的.java文件,编译就是jvm将我们看得懂的.java文件翻译成机器可以读懂的.class文件,运行就是执行.class文件,这里要说的类加载器就是将字节码文件(.class)加载到内存中的东东…
  当Java程序第一次使用某个类中的内容,而该类的字节码文件在内存中不存在时,类加载器就会去加载该类的字节码文件。
  (1)根类加载器(BootStrapClassLoader), 主要负责加载jre/lib/rt.jar相关的字节码文件的。
  (2)扩展类加载器(ExtensionClassLoader), 主要负载加载 jre/lib/ext/*.jar 这些jar包的。 该类加载器在JDK1.9的时候更名为: Platform Class Loader, 其父类加载器为: null。
  (3)应用程序类加载器(ApplicationClassLoader), 主要负责加载用户自定义的类以及classpath环境变量所配置的jar包的。 该类加载器在JDK1.9的时候更名为: System ClassLoader, 其父类加载器为: ExtensionClassLoader。
  (4)自定义类加载器(UserClassLoader), 负责加载程序员指定的特殊目录下的字节码文件的。大多数情况下,自定义类加载器只需要继承ClassLoader这个抽象类,重写findClass()和loadClass()两个方法即可。
  假设: D:\compile、ext*.jar、rt.jar三类中都有A.class,那么A.class是否会被加载3次,如果不会,它的加载顺序是什么样的?
  答案是: 不会被加载3次,并最终会由BootStrapClassLoader来加载A.class。原因是因为,APPClassLoader类加载器(以下简称: app)加载之前,会先询问ExtClassLoader类加载器(以下简称: ext)是否加载。如果ext加载,app就不加载了,反之则app加载。同样, ext在加载之前, 也会询问BootStrapClassLoader类加载器(以下简称: bootstrap)是否加载, 如果bootstrap加载,则ext就不加载了,反之,则ext加载。这也是: JVM类加载机制的”双亲委派机制”。
  总结起来类加载器自上而下检查(App --> Ext --> BootStrap),自下而上加载(BootStrap --> Ext --> App)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值