每日复习面试题

来源:互联网 发布:三维动画软件图标 编辑:程序博客网 时间:2024/06/05 06:13

JAVA面试基础题

  • Java语言的优点?
    • 简单,高效
    • 面向对象
    • 平台无关性
      • 所谓一处编译,处处运行
    • 交互式特性
      • java是面向对象的网络编程语言,支持TCP/IP协议,使得用户可以通过浏览器访问到Internet上的各种动态对象,并且在网络上用户可以交互的进行各种动作,多线程的引入使得这种交互式操作更为容易.
    • 多线程机制
    • 动态的内存管理机制
      • java语言采用了自动垃圾回收机制进行内存的管理.
    • 安全性
    • Java的效率
  • 面向对象的特征有哪些方面
    • 抽象
      • 抽象是将一类对象的共同特征总结出来,构造类的过程.包括数据抽象和行为抽象两方面.
      • 抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么
    • 继承
      • 继承是从已有类得到继承信息创建新类的过程.
      • 提供继承细心的类被称为父类(超类,基类);得到继承信息的类被称为子类(派生类).
      • 继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段.
    • 封装
      • 通常认为封装是把数据与操作数据的方法绑定起来,对数据的访问只能通过已定义的方法.
      • 面向对象的本质就是把现实世界描绘成一系列完全自治、封闭的对象.我们在类中编写的方法就是对实现细节的一种封装;
      • 我们编写一个类就是对数据和数据操作的封装.可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口.(例:普通洗衣机与全自动洗衣机的差别)
    • 多态性
      • 多态性是只允许不同子类型的对象对同一消息作出不同的响应,简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情.
      • 多态分为编译时的多态性和运行时的多态性,如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(例如:电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么)
      • 方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称后绑定).运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:
        • 方法重写(子类继承父类并重写父类中已有的或抽象的方法)
        • 对象造型(父类的引用引用子类的对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)
  • 什么是java虚拟机?为什么Java被称为”平台无关的编程语言”?
    • java虚拟机是一个可执行java字节码的虚拟机进程,java源文件被变异成能被虚拟机执行的字节码文件
    • java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台编写或者是重新编译.java虚拟机让这个变成可能,因为他知道底层硬件平台的指令长度,和其他特性.
  • 指针
    • java语言让编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效的防止了C/C++语言中指针操作失误,但不是说java中没有指针,而是虚拟机内存使用了指针,知识外人不得使用而已,这也有利于java程序的安全
  • java支持的数据类型有哪些?什么叫自动拆装箱
    • java语言支持的8种基本数据类型:
      • byte,short ,int ,long ,float,double,boolean,char
    • 自动装箱是java编译器在基本数据类型和对应的对象包装类型之间做的一个转化,比如把int 转化成Integer ,double转化成Double 等等,反之就是自动拆箱
  • 什么是值传递和引用传递
    • 对象被值传递,意味着传递了对象的一个副本.因此就算是改变了对象副本 ,也不会改变源对象的值
    • 对象被引用传递,一位置传递的并不是实际的对象,而是对象的引用,因此外部对引用对象所做的改变会反映到所有的对象上.