测试必备之Java知识(二)—— Java高级的东西

Java高级

类加载过程

加载(创建class对象) -> 连接(验证-准备-解析) -> 类初始化

类加载器类别

根类加载器:加载java核心类

扩展类加载器:加载JRE目录中的jar包

系统类加载器:加载用户自定义类和classpath下的jar包

Java反射机制基于什么原理

通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义

动态代理基于什么原理

方便运行时动态构建代理、动态处理代理方法调用的机制

动态代理和静态代理的区别

静态代理:事先写好代理类,缺点是每个业务类都要对应一个代理类,不灵活

动态代理:运行时自动生成代理对象,缺点是生产代理对象和调用代理方法需要额外时间

有哪些字节流?

InputStream,FileInputStream,BufferedInputStream

OutputStream,FileOutputStream,BufferedOutputStream

DataInputStream,DataOutputStream

ByteArrayInputStream,ByteArrayOutputStream

ObjectInputstream,ObjectOutputStream

PrintStream,SequenceInputStream

有哪些字符流?

Reader,InputStreamReader,FileReader,BufferedReader

Writer,OutputStreamWriter,FileWriter,BufferedWriter

CharArrayReader,CharArrayWriter,PrintWriter

还有哪些IO流?

StringReader,StringWriter,RandomAccessFile,Properties

常见网络小问题

问题答案
TCP客户端socket是什么?Socket
TCP服务端socket是什么?ServerSocket 
UDP所用socket是什么?DatagramSocket
UDP所发和收数据报的packet是什么?DatagramPacket

GC主要算法

GC主要对象是堆和方法区,堆中把短命对象归为新生代,长命对象归为老年代      

  • 根搜索算法
  • 标记-清除算法
  • 复制算法(新生代GC)
  • 标记-整理算法(老年代GC)
  • 分代收集算法(新生代+老年代GC)

触发主GC(Garbage Collector)的条件

1、当应用程序空闲时,即没有应用线程在运行时,GC会被调用

2、Java堆内存不足时,GC会被调用。当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强制地调用GC线程,以便回 收内存用于新的分配。

内存泄漏的原因

  1. 数据库连接,网络连接,iod连接,不调用close方法,则不被GC
  2. 单例模式,持有外部对象的引用,长生命周期的对象
  3. vector,对象放入vector中
  4. 集合,对象放入集合中,对象被修改属性后remove对象失败
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝测试笔记

来支持下测试小锅锅

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值