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对象失败

测试必备之Java知识(二)—— Java高级的东西的更多相关文章

  1. [Java面试二]Java基础知识精华部分.

    一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...

  2. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  3. java基础(二):java内部类

    内部类像寄生虫一样生存在其他类[外部类]的内部.定义在类的内部的类叫内部类,它缩小了可见性.根据内部类定义结构的不同,可以把内部类分为 成员内部类和局部内部类.成员内部类定义的地方和外部类的成员变量和 ...

  4. java基础二 java的跨平台特性

    一:java跨平台的特性: 1.生成不平台无关系的字节码. 2.通过和平台有关的jvm即java虚拟机来执行字节码.jvm不跨平台. 图示: 疑问:1.为什么我们不直接写字节码? 因为字节码只有jvm ...

  5. 重学JAVA基础(二):Java反射

        看一下百度的解释:       JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息     ...

  6. 2017-2018-2 20165215 实验二 Java面向对象程序设计

    20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...

  7. Java知识体系

    Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...

  8. java 多线程二

    java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...

  9. [转帖]java必备的开发知识和技能

    java必备的开发知识和技能 https://blog.csdn.net/qq_34405062/article/details/89389646 学习一下java 其实上学那会儿学的 早就过时加落伍 ...

  10. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

随机推荐

  1. Linux 字节序

    小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高 级的平台以另一种方式(大端)工作. 任何可能的时候, 你的代码应当这样来编写, 它不在 乎它操作的数据的字节序 ...

  2. 【38.63%】【hdu 3047】Zjnu Stadium

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  3. [HNOI2019]白兔之舞

    memset0 多合一无聊题 mod k=t,并且k是p-1的约数 单位根反演石锤了. 所以直接设f[i]表示走i步的方案数, 然后C(L,i)分配位置,再A^i进行矩乘得到f[i] 变成生成函数F( ...

  4. codeforces 677D(分层图dp)

    Codeforces 677D 传送门:https://codeforces.com/contest/677/problem/D 题意: 给你一个n*m的方格图,每个点有一个权值val,现在要求你从坐 ...

  5. Asp.net全局资源文件( App_GlobalResources)和本地资源文件(App_LocalResources)

    今天项目中需要加入对不同语言的支持. 找了半天的资料,关于GlobalResources和LocalResource都说的模棱两可的. 只能自己边找资料边试.     全局资源文件 样例(Demo中有 ...

  6. Spring+dubbo错误(二)

    ERROR [TestContextManager.java:231] Caught exception while allowing TestExecutionListener [org.sprin ...

  7. 使用 Postman 测试你的 API

    使用 Postman 测试你的 API Intro 最近想对 API 做一些自动化测试,看了几个工具,最后选择了 postman,感觉 postman 的设计更好一些,我们可以在请求发送之前和请求获取 ...

  8. 016 Ceph的集群管理_2

    一.Ceph集群的运行状态 集群状态:HEALTH_OK,HEALTH_WARN,HEALTH_ERR 1.1 常用查寻状态指令 [root@ceph2 ~]#    ceph health deta ...

  9. 探索 模块打包 exports和require 与 export和import 的用法和区别

    菜单快捷导航: CommonJS 之 exports和require用法 ES6 Module 之 export 和 import 用法 CommonJS和ES6 Module的区别 循环依赖 和 解 ...

  10. 浅析Java hashCode()方法

      散列码(hash code)是由对象导出的一个整数值. 散列码没有规律,两个不同的对象x和y,x.hashCode()与y.hashCode()基本上不会相同. public static voi ...