java中的面试题(1)

1、如何实现一个IOC容器

  1. 在配置文件中配置包的扫描路径
  2. 递归扫描获取.class文件,添加到一个set集合中
  3. 遍历集合确定类上是否有注解,并交给IOC管理
  4. 遍历IOC容器,获取到每一个类的实例,判断是否存在依赖,然后注入。

2、什么是字节码,使用字节码的好处是什么

      在java中,虚拟机可以理解的代码就是字节码,生成的字节码以.class的文件方式存在。

      使用字节码可以让java代码实现多平台使用。

3、java中的类加载器

      JDK中有三个自带的类加载器,BookStrapClassLoader、EXTClassLoader、APPClassLoader

      BookStrapClassLoader是EXTClassLoader的父类加载器,负责加载%JAVA_HOME%/lib中的jar包和class文件。

      EXTClassLoader是APPClassLoader的父类加载器,负责加载%JAVA_HOME%/lib/ext中的jar包和class文件。

      APPClassLoader是自定义加载器的父类,可以用来加载classpath下的类文件。

      继承classpath可以实现自定义类加载器。

4、双亲委派模型

 实质就是:向上查找,查找缓存。向下查找,查找路径

5、java中的异常类

java中的所有异常类的顶级类是Throwable.

Throwable下有两个类分别是Error和Exception

当出现Error时,是程序无法处理的错误,一旦出现,则程序立马停止。

Exception可以分为两大类

  • RunTimeException(运行时异常),尝尝发生在程序运行时,会导致当前程序运行失败。
  • CheckedException(编译时异常),发生在编译阶段,发生该异常是往往编译不会通过。可以选择捕获或者上抛处理,一般选择捕获。

6、GC如何判断对象可以被回收

       1、引用计数法:每一个对象都有一个引用计数属性,新增一个引用时,计数加一,释放一个引用时,计数减一。当计数为0时被回收。

  • 注意:在java中可能出出现A引用B,B引用A,这时就算它们都不在使用,也不会被回收,因此在java中不使用

       2、可达性分析法:从GC Roots对象开始向下搜索,当某个对象与GC Roots之间没有引用链,则证明该对象不可用,虚拟机就判定是可回收对象。但并不会立即回收。

  • GC Roots对象有哪些:
  1. 虚拟机栈中引用的对象。
  2. 方法区中类静态属性引用的对象。
  3. 方法区中常量引用的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值