![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java面试
基础+框架
陈俊的博客
软中华硬玉溪,头发越短越牛逼
展开
-
懒汉式和懒汉式线程安全(双检索)
首先写一个单例的懒汉模式:package THREAD;/** 懒汉模式*/public class Sluggard { private static Sluggard instance =null; public Sluggard(){ } public static Sluggard Getintance(){ if(instance==null){ instance=new Sluggard();原创 2021-03-07 22:22:20 · 826 阅读 · 0 评论 -
Interger和Int的区别
1:int是基本数据类型2:Interger是int的包装类,他有一个final修饰的int字段springBean的生命周期:原创 2021-03-07 22:03:52 · 829 阅读 · 0 评论 -
关于异常的高频面试题
1:Exception和error的区别他俩都是继承自超类Throwable,在java中只有Throwable类型的实例才能捕获或者抛出异常。Error 类及其子类。程序中无法处理的错误,表示运行应用程序中出现了严重的错误。特点:此类错误一般表示代码运行时 JVM 出现问题。通常有 Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如 OutOfMemoryError:内存不足错误;StackOverflowError:栈溢出错误原创 2021-03-07 17:34:01 · 283 阅读 · 0 评论 -
关于jvm中的方法区和常量池问题
1:方法区:首先这个问题要分jdk:1.8之前是独立的,里面只要是装着类的信息,代码和静态变量。方法区和堆的物理存储是连接在一块的,但是这种做法会出现一些问题,程序中加载的jar包和类过多的话,就会出现啊oom(内存溢出)的错误。1.8之后:方法区不存在的,但是多了一个元空间,他就是用来代替方法区的,但是元空间和堆在物理空间上是隔离的,虽然性能降低了,但是解决了oom问题,元空间的地址不是jvm地址而是你的电脑本地内存,只要你的本地内存充足,就可以一直运行。2:常量池1.8之前常量池在方法区中,原创 2021-02-28 16:05:52 · 183 阅读 · 0 评论 -
java获取GET和POST请求参数
URL和参数列表一 获取请求方式request.getMethod(); get和post都可用,二 获取请求类型request.getContentType(); get和post都可用,示例值:application/json ,multipart/form-data, application/xml等三 获取所有参数keyrequest.getParameterNames(); get和post都可用,注:不适用contentType为multipart/form-data原创 2021-02-28 15:54:18 · 994 阅读 · 0 评论 -
简述GET和POST的区别
表面的区别GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。get方式提交数据的大小(一般来说1024字节),http协议并没有硬性限制,而是与浏览器、服务器、操作系统有关,而POST理论上来说没有大小限制原创 2021-02-28 15:51:55 · 228 阅读 · 0 评论 -
start()和run()的区别
start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run() : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程!下面来看一段代码加深理解吧!class MyThread extends Thread{ public MyThread(String name) { super(name); } public void原创 2021-02-28 15:48:39 · 445 阅读 · 0 评论 -
通过字节码分析字符串面试题和intern()方法
首先给大家一段代码判断一下:String x="abc"+"cba";String y="abccba"; System.out.println(x==y);String d="aa";String z="bb";String s=z+d;String e="aabb"; System.out.println(s==e);大家思考一下两个输出语句的结果是?第一个是true,第二个是false为什么呢?第一个从字节码来看x=“abccba”;然后创建y的时原创 2021-02-21 18:08:05 · 94 阅读 · 0 评论 -
java整数型常量池
首先看一段代码: Integer a=127; Integer b=127; System.out.println(a==b); Integer x=128; Integer y=128; System.out.println(x==y);输出结果是:truefalse问题来了127和128只差一个数为啥输出结果就是不一样呢?看一下Integer的源码那你就知道了首先在源码里面有一个叫IntegerCach原创 2021-01-22 21:26:45 · 516 阅读 · 0 评论 -
System.out.println()源码分析
首先来看一段代码: Object object=new Object(); object=null; System.out.println(object); System.out.println(object.toString());大家可以先自己想一下会输出什么?正确的输出就是下面所示:nullException in thread "main" java.lang.NullPointerException那么就来分析一下这句话原创 2021-01-22 18:45:00 · 469 阅读 · 1 评论 -
强制类型转换
先看看这道题:以下 b 的值是: byte b = (byte)129;答案是:-127解释:这题考察的就两个知识点:一、强制转换(主要涉及各个类型占几个字节,这里我只简单说一下byte型占一个字节,也就是8位,int型4个字节,32位);二、在计算机系统中,数值一律用补码来表示(存储)正数:补码=反码=原码(当然以二进制形式表达)129 int类型(4个字节)二进制: 00000000 00000000 00000000 10000001强制转换byte型后,只有一个字节即 1000000原创 2020-11-30 17:07:45 · 325 阅读 · 0 评论 -
关于静态代码块,构造方法,构造代码块的执行先后顺序
总结一下:1.执行顺序:静态代码块>构造代码块>构造方法理由:静态代码块(static{})在类加载的时候执行一次。构造代码块({}内的部分)在每一次创建对象时执行,始终在构造方法前执行。构造方法在新建对象时调用( 就是new的时候 )。注意: a.静态代码块在类加载的时候就执行,所以它的优先级高于入口main()方法。b.当三种形式不止一次出现,同优先级是按照先后顺序执行。来看一道题巩固一下:public class B{ public static B t1 = n原创 2020-11-30 15:29:54 · 2671 阅读 · 0 评论 -
值传递和引用传递的问题
先看看下面这段代码的输出结果:public class Example{ String str=new String("tarena"); char[]ch={'a','b','c'}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+" and ");原创 2020-11-29 15:39:06 · 225 阅读 · 0 评论 -
关于抽象类和接口的默认访问权限
关于抽象类JDK 1.8以前,抽象类的方法默认访问权限为protectedJDK 1.8时,抽象类的方法默认访问权限变为default关于接口JDK 1.8以前,接口中的方法必须是public的JDK 1.8时,接口中的方法可以是public的,也可以是default的JDK 1.9时,接口中的方法可以是private的...原创 2020-11-29 15:11:51 · 1342 阅读 · 1 评论 -
“==“和“euqals()“的用法
先看看这个题你会不会做?==如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址对于复合数据类型(类),使用equals()和“==”效果是一样的,两者比较的都是对象在内存中的存放地址(确切的说,是堆内存地址)。equals注意:equals方法不能作用于基本数据类型的变量如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所原创 2020-11-28 23:59:20 · 212 阅读 · 0 评论 -
java面试知识点总结(1)—垃圾回收
首先大家先做一道题。1、在java中,对象的内存在哪个时刻回收,取决于垃圾回收器何时运行。2、一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法, 并且在下一次垃圾回收动作发生时,才会真正的回收对象占用的内存(《java 编程思想》)3、在C++中,对象的内存在哪个时刻被回收,是可以确定的,在C++中,析构函数和资源的释放息息相关,能不能正确处理析构函数,关乎能否正确回收对象内存资源。在java中,对象的内存在哪个时刻回收,取决于垃圾回收器何时运行,在java中,所有原创 2020-11-26 23:23:45 · 119 阅读 · 0 评论