Java基础技术JVM面试【笔记】】的更多相关文章

Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管理 JVM 内存结构是什么样的? JVM 内存的主要分为五个区: 方法区(Method Area) 虚拟机栈(VM Stack) 本地方法栈(Native method stack) 堆(Heap) 程序计数器(Program Counter Register) 堆(Heap) 堆会在虚拟机启动时进…
java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.)此类不保证映射的顺序,特别是它不保证该顺序恒久不变 另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的 HashMap 内部的数据结构? 各个版本的实现略有不同 JDK1.7 及以前的 Ha…
Java基础技术基础面试[笔记] String.StringBuilder以及StringBuffer三者之间的区别? 三者的区别可以从可变性,线程安全性,性能这三个部分进行说明 可变性 从可变性来说,String不可变,StringBuilder与StringBuffer可变 因为在String类中,是使用只读字符数组保存字符串的,所以String是不可变的 而StringBuilder与StringBuffer,两者都继承自AbstractStringBuilder类,而在AbstractS…
Java基础技术多线程与并发 什么是线程死锁? ​死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去,我们就可以称此时的系统处于死锁状态,即系统产生了死锁 死锁产生的条件是什么? 死锁产生的条件可以分成四个,且这四个都必须同时存在才能形成死锁 ​(1) 互斥条件:该资源任意一个时刻只由一个线程占用 (2) 请求与保持条件:一个线程以及进程因请求资源而阻塞时,对已获得的资源保持不放 (3) 不剥夺条件:线程以及进…
Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking IO)是同步并阻塞的 IO,线程发起 IO 请求后,不论内核是否准备好 IO 操作,都会一直阻塞直到操作完成 NIO(Non-blocking IO)是同步非阻塞的 IO,线程发起 IO 请求后立即返回:内核在做好 IO 操作的准备之后,通过调用注册的回调函数通知线程做 IO 操作,线程开始阻塞,直到…
最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05------------------- 原本说好的2月份写出,但是因为知识点太多,就跳票了.... ----------------2018.04.03------------------- 今天终于有时间来整理这些笔记,然后将他们整理分类分成几个不同的模块,这样大家看起来也更方便些,以后会慢慢来完…
Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe这个程序存放在JDK的安装目录下的bin目录中.当然在JDK的安装目录下的bin目录中还有jmap以及jconsole两个工具都是可以查看JVM的堆内存结构的哟!接下来我会为大家展示这三个工具的方法,他们各自有各自的优点,如果是Windows开发环境的话,我个人比较喜欢jvisualvm的,如果在L…
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量/方法,都需要在类信息已经加载进入内存的前提下.在Java虚拟机规范中,类加载过程也就是类的生命周期包括7个部分:加载.验证.准备.解析.初始化.使用.卸载.不过我们先不写这几个阶段,先讲讲类加载器的知识,然后再来看具体的类加载过程. 1. 类加载器 关于类加载器,我主要关注两个方面,一是类加载器的…
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎会好些,所以这篇改成详解字节码. 由于Java纯面向对象的特性,字节码只要能表示一个类的信息,就可以表示整个Java程序了,JVM只要能加载一个类的信息,就能加载整个程序了.所以,不管是字节码,还是JVM加载机制,关注点都是在类.我关注的点主要在于: 1. 由于字节码不是一次性全部加载进入内存,那么…
Java横向技术 网络[笔记] 计算机网络 服务器返回给客户端 http 响应包的状态码有哪几大类?302.304 分别是什么意思? ​ 状态码分为五大类: ​(1)信息性状态码(Informational),表示请求已被接受,需要继续处理.码值范围:1xx ​(2)成功状态码(Success),表示请求已成功被服务器接收.理解.并接受.码值范围:2xx (3)重定向状态码 (Redirection) ,表示需要客户端采取进一步的操作才能完成请求.码值范围:3xx ​(4) 客户端错误状态码 (…
前言 近间陆续面试了不少的求职的前(JAVA).后(WEB)端开发人员,包括实习生.应届毕业生.一两年工作经验的.也有三四年工作经验的,也算见过了比较多的开发人员,想在这里做个总结,本次主要讲一讲面试和后端(java)相关的东西: 关于面试准备 先推荐一个写的不错的博客,专门关于面试的,比较详尽仔细:关于面试.我在这里简单总结几点: 1.简历要用心准备好,个人信息,特别是联系方式一定要清晰明确,自身掌握的技能要完成清晰,项目经历最好按照时间顺序,说明本人在项目中的职责,完成的工作,有什么样的提升…
众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型的垃圾回收算法 2.1. 标记-清除算法(Mark-Sweep) 2.2. 复制算法(Copying) 2.3. 标记-整理算法(Mark-Compact) 2.4. 分代收集算法(Generational Collection) 3. 典型的垃圾收集器 3.1. Serial/Serial Old…
JVM学习笔记二之GC GC即垃圾回收,在C++中垃圾回收由程序员自己来做,例如可以用free和delete来回收对象.而在Java中,JVM替程序员来执行垃圾回收的工作,下面看看GC的详细原理和执行过程. 1.对象已死? 1.1 引用计数法 Java GC不采用引用计数法是因为无法解决对象互相引用导致无法回收的问题. 1.2 可达性分析法 从GC ROOT开始搜索,搜索不到的并且经过第一次标记.清理后未复活的对象. GC ROOT包括: 虚拟机栈中引用的对象 方法区中静态属性引用的对象 方法区…
*java语言特点 1,简单易用 2,跨平台 拥有JVM虚拟机(运行程序) 3,面向对象 4,支持多线程*java核心机制 1,java虚拟机 JVM 2,垃圾回收机制*JDK和JRE JDK JRE java运行环境 JVM跨平台核心 关系:JDK JRE JVM JAVA的基本语法关键字:    1.全部小写    2.各自有各自的作用标识符   字母,数字,下划线,美元符号.不能以数字开头常量和变量   常量是程序在运行期间固定的不可改变   变量在内存中一块区域内,变量的值可以在一定范围…
1.内存模型 1.1.堆 堆是所有线程共享的,主要存放对象实例和数组. 新生代和老年代的比例是1:2. 新生代中三个区域的比例是 8 : 1 : 1. 1.1.1.新生代 对象分配在eden区中,当eden区满时会触发minor gc,将eden区中存活的对象,复制到survivor0区中,清空eden区,当survivor0中满了时,会将存活的对象复制到survivor1区中,然后将survivor0和survivor1交换,保持survivor1是空的.每经过一次yong gc 年龄就 1.…
1. 基础知识点图解 编程语言核心结构:变量.基本语法.分支.循环.数组.…… Java面向对象的核心逻辑:OOP.封装.继承.多态.接口…… 开发Java SE高级应用程序:异常.集合.I/O.多线程.反射机制.网络编程… 2. 各种语言对比 名称 适用对象 C 操作系统.嵌入式领域.数据库.服务器.单片机.编译器.Linux开发 C++  开发桌面软件.操作系统.图形处理.游戏.网站.搜索引擎.数据库 Java  Android平台应用.应用服务器程序.网站.嵌入式领域.大数据技术(包括Ha…
提要 01 IO流(BufferedWriter)02 IO流(BufferedReader)03 IO流(通过缓冲区复制文本文件)04 IO流(readLine的原理)05 IO流(MyBufferedReader)06 IO流(装饰设计模式)07 IO流(装饰和继承的区别) 01 IO流(BufferedWriter)字符流的缓冲区缓冲区的出现提高了对数据的读写效率.对应类BufferedWriterBufferedReader缓冲区要结合流才可以使用在流的基础上对流的功能进行了加强 /*…
1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从它的基类那…
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10697554.html ,多多支持哈! 一.什么是GC? GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法.Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理.要请求垃圾收集,可以调用…
1.什么是 GC?为什么要有 GC?GC(Garbage Collection)是垃圾收集的意思,负责清除对象并释放内存.Java 提供的 GC 功能可以自动检测对象是否超过作用域从而达到自动回收内存的目的,从而防止内存泄漏. 2.final, finally 和 finalize 的区别?final 用于声明属性,方法和类,表示属性不可变,方法不可被重写,类不可被继承. finally 是异常处理语句结构的一部分,表示总是执行. finalize 是 object 类的一个方法,在垃圾收集器执…
Day 23 08 Udp接收端09 Udp键盘录入数据方式10 Udp聊天11 TCP传输12 TCP传输213 TCP练习14 TCP复制文件 08 Udp接收端 需求:定义一个应用程序,用于接收udp协议传输的数据并处理. 思路:1.定义UdpSocket服务.2.定义一个数据报包,因为要存储接收到的字节数据,而数据报包对象中有更多的功能可以提取字节数据中不同的数据信息.3.通过socket服务的receive方法将接收到的数据存入已经定义好的数据报包中.4.通过数据报包对象的特有功能.将…
Day20 10 创建java文件列表11 Properties简述12 Properties存取13 Properties存取配置文件14 Properties练习15 PrintWriter16 合并流17 切割文件 10 创建java文件列表 练习:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中,建立一个java文件列表的文件. 思路:1.对指定的目录进行递归2.获取递归过程所有的java文件的路径3.将这些路径存储到集合中4.将集合中的数据存储到一个文件中. import…
目录 1.多线程运行的安全问题 2.多线程同步代码块 3.同步方法的锁是this 4.静态同步方法的锁是Class对象 5.单例设计模式(面试中的考点) 6.死锁(一个发生死锁的例子) 多线程运行的安全问题 例子:售票系统 class Ticket implements Runnable { //定义静态变量ticket private static int ticket=100; public void run() { while(true) { //判断票编号是否大于0 if(ticket>…
第一章:初识java 1.1.java的概述 ü  什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合. ü  Java的作用:1:安装和运行本机上的桌面程序.2:通过浏览器访问面向internet的应用程序 ü  Java技术平台:1.java SE是java的核心2.java EE主要用于网络程序和企业应用开发. 1.2.开发一个java程序 n  开发java程序的步骤: 编写源程序 编译源程序 运行程序 n  Java程序的结构 编写程序框架(public class He…
JVM内存结构 Heap Space: 堆内存(Heap Space)是由Young Generation和Old Generation组成,而Young Generation又被分成三部分,Eden,From Survivor和To Survivor,默认比例为8:1:1 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,大部分对象实例都在这里分配内存. 堆是垃圾收集管理的主要区域,如果在堆内存耗尽,并且无法再扩展时,将会抛出OutOfMemoryEr…
JDk=JRE +java的开发工具(javac.exe java.exe javadoc.exe)JRE =JVM +Java核心类库 2.为什么 要配置 path环境变量 ?如何配置?JAVA_HOME =bin的上一层目录path =%JAVA_HOME%\bin 3.常用的命令行操作都有哪些(至少四个)cd mdrddelcd ..cd/ 4.创建如下类 使得运行的话可以输出创建一个java 文件: ChairMan.javapublic  class   ChairMan{ publi…
java网络编译: 基础知识:①.ip地址和端口号:ip地址是用来识别网络中的一个实体,而这个实体可以理解为一个主机,而端口号则是用来区分具体的通讯程序的.②.tcp / udp协议:tcp是一个可靠数据传输:http和ftp都是采用的它:而udp是一个无连接的协议.如qq聊天.③.URL:统一资源定位器,指向了互联网的一个资源,下面看一下通过URL来获取数据示例: ④.InetAddress:这个是java中代表IP地址的类. socket:①.创建socket实例:②.客户端连接:     …
Day 15 集合框架01 TreeSet02 TreeSet存储自定义对象03 二叉树04 实现Comparator方式排序05 TreeSet练习06 泛型概述07 泛型使用08 泛型类09 泛型方法10 静态方法泛型11 泛型接口12 泛型限定13 泛型限定2 01 TreeSet |--Set   |--HashSet   |--TreeSet 可以对集合中的元素进行排序 import java.util.*; class TreeSetTest { public static void…
Day14 08 LinkedList09 LinkedList练习10 ArrayList练习11 ArrayList练习2 12 HashSet13 HashSet存储自定义对象14 HashSet判断和删除的依据 08 LinkedList LinkedList特有的方法:addFirst() addLast() getFirst() getLast()获取元素,但不删除元素.如果集合中没有元素,会出现NoSuchElementException. removeFirst() remove…
Day14 集合框架01 体系概述02 共性方法03 迭代器04 List集合共性方法05 ListIterator06 List集合具体对象特点07 Vector中的枚举 01 体系概述 集合类为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就需要对对象进行存储.集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同?数组虽然也可以存储对象,但长度是固定的,集合的长度是可变的.数组中可以存储进本数据类型,集合只能存储对象.集合类的特点:集合…