4.JAVA基础面试题:重要知识

Posted 努力生活...

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.JAVA基础面试题:重要知识相关的知识,希望对你有一定的参考价值。

四.JAVA基础面试题:重要知识

1.为什么JAVA只有值传递

2.JAVA获取运行时类的四种方式

3.动态代理和静态代理的对比

4.unsafe是什么

5.泛型擦除机制出现的问题?

四.JAVA基础面试题:重要知识

1.为什么JAVA只有值传递

  • 实参:传递给形参的实际参数。
    形参:接受实参的参数。
  • 值传递:方法接受实参并且形参生成拷贝。
    引用传递:方法接受实参且形参是实参变量的地址,不生成拷贝,相当于是给实参的引用变量起别名
  • JAVA只有值传递
    引用类型传过去也为地址值,生成副本。
    基本类型传过去为字面量,生成副本。

2.JAVA获取运行时类的四种方式

  • 类.class
  • class.ForName
  • 实例.getClass
  • 类加载器.loadClass

3.动态代理和静态代理的对比

  • ①静态代理
    定义接口,定义实现接口的被代理类,定义实现接口的代理类(内置被代理类)
  • ②动态代理
    • jdk动态代理(代理实现了接口的类)
      Proxy.newProxyInstance(loader,interfaces,invocationhandler)
      invocationhandler要重写invoke方法,参数proxy为代理类,method为被代理类的原生方法,args为传入的参数。动态代理调用方法实际调用invoke方法。

    • CGLIB动态代理(JDK只能代理实现接口的类,其可以通过继承实现代理,被代理类类不需要实现接口)

  • ③对比静态代理和动态代理。
    动态代理更加灵活,不需要写死代码。
    动态代理是在运行时动态生成字节码文件并加载到JVM中,而静态代理编译时就将代理类编译为字节码文件。

4.unsafe是什么

  • unsafe是不安全操作的方法
    可以直接访问内存资源,自主管理内存资源等。
    依赖本地方法(native)。

5.泛型擦除机制出现的问题?

  • 泛型无法用在重载方法的参数中(擦除后参数会相同)
  • 泛型无法用在catch中的异常中(擦除后两个异常会相同)
  • 泛型类中存在静态变量(不同泛型参数公用一份静态变量)

未更新

Java面试题精粹(基础知识)

本篇博文是自己针对网络上已出现的Java面试题帖子汇总,汇总并不是给出链接或直接转载内容,而是分析对比并整理出各帖子中常见、高频的面试题,这些经常露脸的面试题透出面试的趋势(为什么可以成为经典的面试题)及面试官的共通点。而作为求职者、技术爱好者的我们不仅要能够自信、精准得回答这些问题,更要知道为什么出这些问题,面试官想考察我们什么或希望我们给出怎样的回答,适当的再对回答进行拓展以达到更好的效果。面试本身包含了一些心理上的东西,面试官对于问题是有一个心中期许的答案,面试者若能够触摸到边缘或击中要害,结果自然不会差。更最要的是当我们能够清楚对手的出招套路时,我们能够全面地检视自己调整思路,面出最好的状态。

Java面试题精粹系列将分为基础知识、多线程、网站架构、数据结构、数据库、性能及安全、设计模式、Linux、算法(暂定),共计九个模块,本篇以基础知识为主,下面开始讲解具体的面试题。

1.面向对象的特征/特性/特点有哪些?

  先简答出四个点:抽象、封装、继承、多态,接着对每个点表达自己的见解。

  抽象:对同一群/同一类别事物根据实际业务需要将它们公共的特征和行为剥离出来构建成一个类,这一过程就称之为抽象,而抽象的结果就是得到一个类。然后刚刚前面提到的特征就对应类的属性,行为就对应类的方法。而在不同业务场景下所构建的类中的属性和方法存在细微上的差别。

 

  封装:把公共部分的/使用频繁的代码块/代码段整合到一个方法或一个类(例如工具类)中,来对外提供服务并隐藏具体实现。调用者只需关注该方法或该类如何使用而并不需要知道其内部是如何实现的,而对于提供者来说可以方便的对这些提供服务的代码进行维护,这种两者的不同表现是对代码最好的保护(所带来的益处)

 

我们在实际开发中经常用到的第三方jar包就是封装的一种表现形式。

 

  继承:一个类A获得了另外一个类B的公共属性和方法,且A能够直接使用这些东西并在必要情况下按已所需改造这些东西,两者之间因此产生了一种关联关系,称之为继承。子承父业是对继承这个词语比较形象的比喻。

 

例如子类私家车、公交车、自行车、摩托车、货车都继承自父类车,它们从父类继承了属性方形盘、车轮、车座...继承了方法开车、载人、刹车...根据自身实际需要子类对这些属性和方法都进行了一定改造,所以有了不同表现。例如方向盘,私家车、公交车、货车都是圆形的,自行车、摩托车则是以把手形式表现,车轮各自需要的数量不一样,能够承载的人数也不一样,刹车的实现更不一样。

 

继承使得代码有了延续性,可以使用的就直接使用,不能使用的就改造,减少了对公共可复用部分的重复定义。

  多态:定义不够精炼,后需补充。

 

以上是关于4.JAVA基础面试题:重要知识的主要内容,如果未能解决你的问题,请参考以下文章

Java面试题Java基础

Java基础学习JVM知识点总结面试题形式

Java基础+集合+多线程+JVM 面试题总结

java基础知识点

架构师带你面试④Java虚拟机(JVM)面试题2020

Java基础面试题有哪些?