测试必备之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线程,以便回 收内存用于新的分配。
内存泄漏的原因
- 数据库连接,网络连接,iod连接,不调用close方法,则不被GC
- 单例模式,持有外部对象的引用,长生命周期的对象
- vector,对象放入vector中
- 集合,对象放入集合中,对象被修改属性后remove对象失败
测试必备之Java知识(二)—— Java高级的东西的更多相关文章
- [Java面试二]Java基础知识精华部分.
一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...
- java基础(二)-----java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- java基础(二):java内部类
内部类像寄生虫一样生存在其他类[外部类]的内部.定义在类的内部的类叫内部类,它缩小了可见性.根据内部类定义结构的不同,可以把内部类分为 成员内部类和局部内部类.成员内部类定义的地方和外部类的成员变量和 ...
- java基础二 java的跨平台特性
一:java跨平台的特性: 1.生成不平台无关系的字节码. 2.通过和平台有关的jvm即java虚拟机来执行字节码.jvm不跨平台. 图示: 疑问:1.为什么我们不直接写字节码? 因为字节码只有jvm ...
- 重学JAVA基础(二):Java反射
看一下百度的解释: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息 ...
- 2017-2018-2 20165215 实验二 Java面向对象程序设计
20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- Java知识体系
Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...
- java 多线程二
java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...
- [转帖]java必备的开发知识和技能
java必备的开发知识和技能 https://blog.csdn.net/qq_34405062/article/details/89389646 学习一下java 其实上学那会儿学的 早就过时加落伍 ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
随机推荐
- Linux 字节序
小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高 级的平台以另一种方式(大端)工作. 任何可能的时候, 你的代码应当这样来编写, 它不在 乎它操作的数据的字节序 ...
- 【38.63%】【hdu 3047】Zjnu Stadium
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- [HNOI2019]白兔之舞
memset0 多合一无聊题 mod k=t,并且k是p-1的约数 单位根反演石锤了. 所以直接设f[i]表示走i步的方案数, 然后C(L,i)分配位置,再A^i进行矩乘得到f[i] 变成生成函数F( ...
- codeforces 677D(分层图dp)
Codeforces 677D 传送门:https://codeforces.com/contest/677/problem/D 题意: 给你一个n*m的方格图,每个点有一个权值val,现在要求你从坐 ...
- Asp.net全局资源文件( App_GlobalResources)和本地资源文件(App_LocalResources)
今天项目中需要加入对不同语言的支持. 找了半天的资料,关于GlobalResources和LocalResource都说的模棱两可的. 只能自己边找资料边试. 全局资源文件 样例(Demo中有 ...
- Spring+dubbo错误(二)
ERROR [TestContextManager.java:231] Caught exception while allowing TestExecutionListener [org.sprin ...
- 使用 Postman 测试你的 API
使用 Postman 测试你的 API Intro 最近想对 API 做一些自动化测试,看了几个工具,最后选择了 postman,感觉 postman 的设计更好一些,我们可以在请求发送之前和请求获取 ...
- 016 Ceph的集群管理_2
一.Ceph集群的运行状态 集群状态:HEALTH_OK,HEALTH_WARN,HEALTH_ERR 1.1 常用查寻状态指令 [root@ceph2 ~]# ceph health deta ...
- 探索 模块打包 exports和require 与 export和import 的用法和区别
菜单快捷导航: CommonJS 之 exports和require用法 ES6 Module 之 export 和 import 用法 CommonJS和ES6 Module的区别 循环依赖 和 解 ...
- 浅析Java hashCode()方法
散列码(hash code)是由对象导出的一个整数值. 散列码没有规律,两个不同的对象x和y,x.hashCode()与y.hashCode()基本上不会相同. public static voi ...