创建后不能被更改不可以被继承,但是可以通过创建StringBuffer或者是StringBuilder对象 进行更改 StringBuffer是线程安全的 StringBuilder 线程不安全的操作效率高 4. 分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存变化等、gc变化 2.jvm常见的调优参数 Xms2g :初始化堆内存为 2G Xmx2g: 堆最大内存为2g XX:NewRatio =4 设置新生代和老年代的比例为1:4 XX:+UseParNewGC 指定使用parNew和 Serial Old 垃圾回收器组合 XX:UseParalleOldGC 指定使用parNew+parOld 垃圾回收器组合 XX:+PrintGC 开启打印GC回收日志 XX:+PrintGCDetails 打印GC详细日志 3. jvm垃圾回收算法 标记清理算法 标记整理算法 复制算法 分代算法 4. JVM组成部分 类加载器 运行时数据区 执行引擎 本地库接口 运行流程: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)
主要是出于安全和性能的考虑,可归纳为如下4点 由于字符串无论在任何 Java 系统中都广泛使用,会用来存储敏感信息,如账号,密码,网络路 径,文件处理等场景里,保证字符串 String 类的安全性就尤为重要了 字符串作为基础的数据结构,大量地应用在一些集合容器之中,尤其是一些散列集合,在散列集合 中,存放元素都要根据对象的 hashCode() 方法来确定元素的位置。 说一说你对Java反射机制的理解 ? Java程序中的对象在运行时可以表现为两种类型,即编译时类型和运行时类型。 Java中的容器,线程安全和线程不安全的分别有哪些? 从Java5开始,Java在java.util.concurrent包下提供了大量支持高效并发访问的集合类,它们既能包装 良好的访问性能,有能包装线程安全。
4.float f=3.4 错误,默认是double的,需要强转,或者f=3.4f; 5.int和integer 为了将基本数据类型当做对象操作,Integer为包装类(wrapper class)。 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream 在Java诞生初期,垃圾回收是Java最大的亮点之一,因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁,如今Java的垃圾回收机制已经成为被诟病的东西。 标准的Java进程既有栈又有堆。栈保存了原始型局部变量,堆保存了要创建的对象。Java平台对堆内存回收和再利用的基本算法被称为标记和清除,但是Java对其进行了改进,采用“分代式垃圾收集”。 面试题 - 编程实现文件拷贝。
前段时间给大家发过一份 java 面试题的思维导图,接下来我会用通俗、简洁、易记的话将其整理成一系列的文章,加深自己印象的同时,也希望能助大家跳槽成功! 1. 说说 java 的基本数据类型以及所占的字节数。 byte、short、int、long,1、2、4、8;boolean、char、float、double,1、2、4、8。 2. 4. switch 可以作用在哪些类型上? byte、short、int、char、String、enum 5. 什么是内部类?优点是什么? 写在一个类里面的类,叫做内部类。 什么是 java 的多态? 多态就是要到运行时才能确定类型,体现为重载和重写。 7. 为什么重写了 equals 方法就要重写 hashCode 方法? 18. java 中的异常体系你知道吗?
JAVA 说出ArrayList, Vector, LinkedList的存储性能和特性(集合类:ArrayList与 LinkedList的区别,为什么JAVA提供这样两种同样带有顺序的集合类,它们有什么不同 在JAVA中,如何跳出当前的多重嵌套循环? 用break; return 方法。 abstract class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。 java中实现多态的机制是什么? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。 什么是java序列化,如何实现java序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
JRE是Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。 但是,它不能用于创建新程序。 这是一个值得深度思考的问题,具体原因推荐看这篇文章: https://blog.csdn.net/sszgg2006/article/details/49148189 4.import java 和 javax 4)为什么两个对象有相同的 hashcode 值,它们也不一定是相等的? 在这里解释一位小伙伴的问题。以下内容摘自《Head Fisrt Java》。 " + (i1 == i4)); System.out.println("i4=i5 " + (i4 == i5)); System.out.println("i4=i5+i6 " + true i1=i4 false i4=i5 false i4=i5+i6 true 40=i5+i6 true 解释: 语句 i4 == i5 + i6,因为+这个操作符不适用于 Integer
java基本数据类型有哪些? 介绍下java的集合? java的是反射? java线程创建方式继承Thread类:定义一个类继承Thread类,重写run方法。这种方式不推荐,因为Java单继承机制会限制该类的复用性。 newCachedThreadPool:是一种可以缓存的线程池,它可以用来处理大量短期的突发流量特点:①最大线程数是Interger.MaxValue②线程存活时间是60秒③阻塞队列用的是SynchronousQueue(4)
1)算术运算符的介绍 (2)算术运算符的分类 (3)算术运算符的使用细节 三、关系运算符 (1)关系运算符介绍 (2)关系运算符分类 (3)关系运算符细节 总结 ---- 前言 掌握基础的算数运算符和关系运算符 j = ++i i = 6 ,j = 5 i = 6 ,j=6 -- 自减: 分为自减在前和 自减在后两种 i = 5 ;j = i-- i = 5 ;j = --i i = 4 ,j = 5 i = 4 ,j=4 (3)算术运算符的使用细节 1)自增自减运算符都作为独立的语句使用,前++(--)和后++(--)都完全等价于 i = i + ( - ) 1 ;
本文来源于并发编程网清英的一篇文章:你应该知道的JAVA面试题,最近自己也在面试一些候选人,发现这篇文章中的有些点我也拿不准,因此按照自己的理解整理一份参考回答。 基础题目 1. Java线程的状态 Java线程在某个时刻只能处于以下六个状态中的一个。 参考资料:《Java并发编程实战》 4. Cookie和Session的区别 HTTP是无状态协议,但是在实际应用中有跟踪客户端状态的需求,Cookie和Session是两种不同的实现方案。 A+B+C可以代替A+B,如果查询是A+C则只能使用到A列索引; 关于InnoDB的认识:InnoDB使用B+Tree作为存储数据结构,属于聚簇索引,每个辅助索引最后都会指向主键的值,每次查询两次;(4) Java虚拟机运行时数据区 程序计数器(PC):Java线程私有,类似于操作系统里的PC计数器,用于指定下一条需要执行的字节码的地址; Java虚拟机栈:Java线程私有,虚拟机展描述的是Java方法执行的内存模型
排序算法 1.冒泡排序算法 int[] array= {10,9,8,7,6,5,4,3,2,1}; int temp=0; for(int i=1;iarray[j+1]) { 4. 装饰者设计模式: 向一个现有的对象添加新功能,但又不改变其结构。装饰者设计模式本质是创建一个装饰类,用来包装原有类。将已有对象传入另一个类的构造器中创建新的对象来增强实现。 在字节流的基础上添加了缓存等功能。 5. 适配器模式: 将已有的数据转换成需要的数据。适配器模式将原本不兼容而不能一起工作的类变的可以一起工作。 中的GC GC是垃圾收集的意思,Java提供的GC功能可以自动检测对象是否超过作用域从而达到回收内存的目的,Java语言没有提供释放已分配内存的操作方法,垃圾收集器会自动进行管理。 标准的Java进程既有栈又有堆。栈保存了原始型局部变量,堆保存了要创建的对象。Java平台对堆内存回收和再利用的基本算法被称为标记和清除,Java对其进行了改进,采用"分代式垃圾收集"。
来源不详了原文地址: Java 基础面试题-20211228欢迎访问我的博客: http://blog.duhbb.com/题目转发和重定向的区别HashMap 和 HashTable 的区别什么是死锁 深拷贝和浅拷贝的区别Java 中注释的代码一定不会执行吗? 没有注释的代码一定会执行吗? 运行到 P1:Request(R2) 时, 将因 R2 已被 P2 占用而阻塞;当 P2 运行到 P2:Request(R1) 时, 也将因 R1 已被 P1 占用而阻塞, 于是发生进程死锁死锁产生的 4 虚拟机自带的一种堆栈跟踪工具.jstack 用于打印出给定的 java 进程 ID 或 core file 或远程调试服务的 Java 堆栈信息. 原文地址: Java 基础面试题-20211228欢迎访问我的博客: http://blog.duhbb.com/
static int a=0; } public static void main(String[] args) { System.out.println(aaa.a); } } 4、 .getName()); } public static void main(String[] args) { aa aa=new aa(); aa.f("11");//结果:java.lang.String aa.f(11);//结果:java.lang.Integer aa.f(111.1f);//结果:java.lang.Float aa.f(111.1);//结果:java.lang.Double public synchronized int capacity() { return value.length; } 4、StringBuilder是线程不安全的,底层没有加同步锁 如果要操作少量的数据用:String (2)单线程操作字符串缓冲区 下操作大量数据 :StringBuilder (3)多线程操作字符串缓冲区 下操作大量数据 :StringBuffer 三、总结 以上就是一些面试题内容
字节码是指的java程序编译后的结果。是一组8位字节为基础单位的二进制流 动态性,它具有适应不断变化的环境的能力,它能够支持动态内存分配,从而减少了内存浪费,提高了应用程序的性能。 解释性,Java 被编译成字节码,由 Java 运行时环境解释。 多线程性,Java支持多个执行线程(也称为轻量级进程),包括一组同步原语。 4,值传递和引用传递的区别 值传递 是指在调用函数时将实际参数复制一份到函数中,这样的话如果函数对其传递过来的形式参数进行修改,将不会影响到实际参数。 下面是简单程度的理解 java实际只有值传递,并非是引用传递,非基础类型传递应当是地址作为值。 总结: 除了基本类型之外的,所有类型,包括数组的赋值,都是引用传递,这一句话就可以搞定了。 bits,默认值是 0L; 所以整数型的占用字节大小空间为 long > int > short > byte 浮点型 浮点型有两种数据类型:float 和 double float 是单精度浮点型,占用 4
51、java中实现多态的机制是什么? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。 答:static i = 10; //常量 class A a; a.i =10;//可变 54、什么是java序列化,如何实现java序列化? 57、在JAVA中,如何跳出当前的多重嵌套循环? 答:用break; return 方法。 java.awt java.io java.util java.sql常用的接口:Remote List Map Document NodeList线程编程方面 60、java中有几种方法可以实现一个线程 Java中的线程有四种状态分别是:运行、就绪、挂起、结束 68、简述synchronized和java.util.concurrent.locks.Lock的异同 ?
hey guys ,这不是也到了面试季了么,cxuan 又打算重新写一下 Java 相关的面试题,先从基础的开始吧,这些面试题属于基础系列,不包含多线程相关面试题和 JVM 相关面试题,多线程和 JVM Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行许多语句,而不必一次执行它 面向对象的:基于类和面向对象的编程语言。 Arrays.asList 不支持基础类型的转换 Java 中的基础数据类型(byte,short,int,long,float,double,boolean)是不支持使用 Arrays.asList 2、多态是设计模式的基础,能够降低耦合性。 Java 中有哪些语法糖 语法糖指的是计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。 因为 Java 代码需要运行在 JVM 中,JVM 是并不支持语法糖的,语法糖在程序编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。
继承 继承是使用已存在的类作为基础建立新类的技术,可以在新类上定义新的属性和新功能,也可以使用父类的属性和功能,可以完成对父类功能的重写覆盖,也可以在父类的功能上进行增强。 4. 4. Java的Executors工具类中,提供了4种类型线程池的创建方法,它们的特点和适用场景如下: 第1种是:固定大小线程池(newFixedThreadPool),特点是线程数固定,可以控制线程最大的并发数 4.
4,final在java中的作用? 被final修饰的类不能被继承 被final修饰的变量是常量 被final修饰的方法不能被重写 5,java中的Math.round(-1.5)等于多少? 6,String属于基础的数据类型吗? 不属于,String是java定义的一个最终类。 7,java中操作字符串都有哪些类,他们之间有什么区别? TCP是面向连接的可靠的传输协议,全双工模式需要以三次握手为基础建立连接。 4,TCP为什么要三次握手?两次不行吗? 由于TCP是以无结构字节流为基础没有边界并且TCP的帧结构中也没有数据长度字段,和UDP不一样,UDP是以报文为基础,有数据长度字段,基于上述两点TCP便有可能产生粘包。
本文主要包括Java基础及面向对象相关面试题。 1,Java科普 1.1 为什么安装包要分JDK和JRE? JRE主要包含JVM,用于运行Java程序。 JDK:Java Development Kit Java开发工具包【开发Java程序用】 JRE:Java Runtiome Environment Java运行环境【运行Java程序用】 所以设置环境变量的根本目的是在电脑的任何一个文件夹下都可以编译运行Java程序。 1.4 Java和C++区别 题外话,Java和C++有什么区别? 表示变量:4个字节(转换为int存储) 表示byte数组:1个字节 2.2 为什么long可以自动转换为float? false 短路逻辑运算符 &&:左边为fasle直接返回flase(不计算右边) ||:左边为true直接返回true(不计算右边) 就是为了简化计算量 ^表示异或,相同为false,不同为true 4,
4、包装类 在集合类中,我们是无法将int 、double等类型放进去的。因为集合的容器要求元素是Object类型。 13、简述Java反射机制及其作用。 Java反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制 一般认为,Java 内的传递都是值传递,Java 中实例对象的传递是引用传递。 15、Java 支持多继承么? Java 中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是 Java 中的接口支持多继承,即一个子接口可以有多个父接口。 16、什么是死锁? 它是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待的现象。
Mybatis本身不带日 志统计,使用Log4j进行日志记录。 也就是说,相对于常见的 JDBC/SQL 持久层方案中需要 管理 SQL 语句,Hibernate采用了更自然的面向对象的视角来持久化 Java 应用中的数据。 Mybatis 只支持针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor 这 4 种接口的插件, Mybatis 使用 JDK 的动态代理, 为需要拦截的接口生成代理对象以实现接口方法拦 截功能, 每当执行这 4 种接口对象的方法时,就会进入拦截方法,具体就是 InvocationHandler 的 invoke() 方法, 拦截那些你指定需要拦截的方法