面试 java 2
继续昨天的面试题。
机会是留给有准备的人,大家加油!我也加油!
1. 测试生命周期、测试过程分为几个阶段,以及各阶段的含义?
这个你就算不了解,你也要记住。面试的时候也会问道的。
生命周期:测试计划-----测试设计-----测试开发-----测试执行-----测试评估
测试过程:单元测试-----集成测试------确认测试-----系统测试
单元测试又称模块测试,软件设计中最小的一个模块--程序模块。进行正确性检验的测试工作。
集成测试也叫组装测试和联合测试,在单元测试的基础上,需要将所有的设计模块按照概要设计的需求说明书和详细设计说明书的要求进行组装。
确认测试就是验证软件的功能和性能和其他性能是否和用户要求一致。
系统测试时将通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行使用环境下,对计算机系统进行一系列测试。其目的在于通过与系统需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。
2.java垃圾收集器?
(1)发现无用信息对象
(2)回收被无用对象占用的内存空间,使该空间可被程序再次使用
有两个条件会触发主GC:
1)当应用程序空闲时,即没有应用线程在运行时,GC会被调用。因为GC在优先级最低的线程中进行,所以当应用忙时,GC线程就不会被调用,但以下条件除外。
2)Java堆内存不足时,GC会被调用。 当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强制地调用GC线程,以便回收内存用于新的分配。若GC一次之后仍不能满足 内存分配的要求,JVM会再进行两次GC作进一步的尝试,若仍无法满足要求,则 JVM将报“out of memory”的错误,Java应用将停止。
3.什么是Java虚拟机?为什么Java被称作是“平台无关 的编程语言”?
虚拟机(JVM)是一个连接操作系统和JAVA程序的。因为能连接所以JAVA程序在编译之后,就可以在任何一台计算机上运行。因此JAVA被称为“与平台无关”。
4.JDK和JRE的区别是什么?
JDK就是(Java Development Kit) 是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE是(Java Runtime Enviroment) 是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
5.是否可以在static环境中访问非static变量?
不能直接访问,需要先创建出来非static变量所在的类,然后通过定义的这个类非static变量。
public class Test{ private static int s=200; public static void main(String [] args){ new Test().staticTest(); } private void staticTest(){ System.out println(s); } }
最后输出:200;
6.Java支持的数据类型有哪些?什么是自动拆装箱?
八大基础数据类型:byte , short , int , long , float , double , boolean , char.
对象数据类型:Byte,Character,Integer,Long,Float,Double,Boolean,Short,String。
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。
7.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
(Overloading)重载就是具有相同函数名,返回类型可以不同,参数个数、顺序、类型不同的函数。
public class OverloadingTes{ String name; int age; void print(){ System.out.println("姓名:"+ name + "/t年龄:"+age); } void print(String a,int b){ System.out.println("姓名:"+ a+ "/t年龄:"+b); } void print(String a,int b,int c){ System.out.println("姓名:"+ a+ "/t年龄:"+b+"/tID号:"+c); } }
(Overriding)重写它是指子类和父类的关系,子类重写了父类的方法,但方法名、参数类型、参数个数必须相同.
public class Main{ public static void main(String[] args) { new Son().eat(); ((Father) new Son()).eat(); } } public class Father{ public void eat(){ System.out.println("father"); } } public class Son extends Father { public void eat(){ System.out.println("son"); } }
8.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
a、java类中的一种特殊方法,方法名与类名相同,一般用来初始化一些成员变量
b、重载构造函数就是一个类中,参数不一样的多个构造函数