测试开发准备-----Java的准备

Java基础
继承(extends,implements)、封装(类)、多态(重写重载)
1、面向对象与面向过程

2、重写和重载的区别

  • 重写:用于父类与子类之间,子类重写父类的方法,但权限不能大于父类权限;返回值和形参都不能改变。即外壳不变,核心重写!
  • 重载:是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

3、JVM内存区域
程序计数器(Program Counter Register)、Java 虚拟机栈(Java Vitual Machine Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)

  • 程序计数器:保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址)
  • 虚拟机栈:存放局部变量表、操作数、指向当前方法所属的类的运行时常量池的引用、方法返回地址和一些额外的附加信息。为java方法服务
  • 本地方法栈:地方法栈则是为执行本地方法服务的
  • 堆:程序员可以通过malloc函数和free函数在堆上申请和释放空间(C);Java中的堆是用来存储对象本身的以及数组

4、int 和 Integer 有什么区别

  • Integer是int的包装类,int则是java的一种基本数据类型
  • Integer变量必须实例化后才能使用,而int变量不需要
  • Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
  • Integer的默认值是null,int的默认值是0

5、String,StringBuffer与StringBuilder的区别
6、HashMap和Hashtable的区别
7、抽象类和接口的区别
8、怎么实现多线程

  • 继承thread类,通过start启动线程
  • 实现Runnable接口
  • 实现Callable接口并通过FutureTask包装

9、什么是线程安全?怎么实现线程安全
10、什么是死锁,发生原因是什么,如何解决和避免产生死锁
java垃圾回收机制

1)确定哪些对象应该进行回收
     1、引用计数法:为对象创建一个引用计数器,当有引用对他进行引用时,计数器的值加一,当引用失效,计数器的值减一,当计数器值为0时可以进行回收。
     缺点:不能解决对象之间的循环引用(A,B之间互相引用则无法释放)
     2、可达性分析法:把对象之间的引用关系看做一张表,GCRoot为起点,对象之间的引用关系称为引用链,从起点开始向下搜索。若一个对象与GCRoot之间没有引用链,则可以进行回收。
2)回收的时间
      1、在cpu空闲时自动进行回收
      2、在堆内存存储满了之后
      3、主动调用system.gc()后进行回收
3)回收的方法
      1、标记-清除算法
           标记需要回收的内存;进行回收。
           缺点:效率低,标记清除后会产生大量不连续的内存碎片。
      2、复制算法
           将可用内存分为两块,每次只使用一块,当一块内存满了,就将存活着的对象复制到另一块上,然后清除。
           缺点:内存缩小为原来的一半
       3、标记-整理算法
            标记需要回收的对象;整理存活对象,清除回收对象。
        4、分代收集算法
            根据具体场景进行算法选择
             分为:新生代(生命周期短)复制算法
                       老年代:标记-清除,标记-整理算法
                       永久代:存放静态内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值