java面试

java基础

1.JDK和JRE的区别

  1. JDK:java开发工具包,包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具
  2. JRE:java运行环境

2.== 和 equals 的区别

对于==来说

  • 基本数据类型:比较两个值是否相同
  • 引用数据类型:比较引用地址是否相同

对于equals来说

  • 基本数据类型:比较引用地址是否相同
  • 引用数据类型:比较值是否相同

3.两个对象的 hashCode()相同,则 equals()也一定为 true对吗

不对,hashcode相同,并不代表键值对等

4.final 在 java 中有什么作用

  • final 修饰的类叫最终类,该类不能被继承。
  • final 修饰的方法不能被重写。
  • final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

5.八种基础数据类型

byte、short、int、long、float、double、boolean、char

6.StringBuilder和StringBuffer的区别

  • StringBuilder单线程下使用,线程不安全,性能好
  • StringBuffer多线程下使用,线程安全,性能相比差

7.常量池放在JVM中的哪里

JDK1.6中,它在方法区中,属于“永久代”
JDK1.7中,它被方法区移除,放在堆中
JDK1.8中,取消了“永久代”,常量池放在元空间,与堆独立

8.抽象类和普通类的区别

抽象类:不可以实例化,可以包含抽象方法(不一定得有抽象方法)
普通类:可以实例化,可以有抽象方法

9.抽象类和接口的区别

抽象类:类可以被单继承,自下而上,子类提出公共方法,下层决定上层,可以有构造方法
接口:类可以被多实现,自上而下,接口方法可以多实现,上层决定下层,不能有构造方法

10.java的IO流分为几种

  • 按功能来分:输入流和输出流
  • 按类型来分:字节流字符流

字节流与字符流区别:字节流8位,字符流16位

11.浅拷贝与深拷贝的区别

浅拷贝只拷贝地址,会改变原对象
深拷贝创建新的对象,不会改变原对象

java集合

1.如何解决hash冲突,有哪四种方法

  • 开放定址法
  • 再哈希法
  • 链地址法
  • 建立公共溢出区

2.容器

在这里插入图片描述

3.HashMap和HashTable

  • HashMap允许空键值,而HashTable不允许
  • HashMap线程不安全,HashTable线程安全

4.说一下 HashMap 的实现原理

HashMap采用链地址法实现数组加链表的方式存储,根据hashcode计算数组下标位置
1.8之前采用头插法,插入链表
1.8之后采用尾插法,链表长度超过8,则采用红黑树存储(查询快)

5.说一下 HashSet的实现原理

HashSet底层由HashMap实现
HashSet的值存放于HashMap的key上,value为PRESENT

6.ArrayList 和 LinkedList 的区别是什么

ArrayList底层是数组支持随机访问
LinkedList底层是双向循环链表,不支持随机访问

7.在 Queue 中 poll()和 remove()有什么区别?

poll() 在获取元素失败的时候会返回空
remove() 在获取元素失败的时候会抛出异常

spring

1.spring中bean的生命周期

在这里插入图片描述

2.springmvc请求流程

在这里插入图片描述

3.三级缓存

在这里插入图片描述

  • 一级缓存:完整的bean对象
  • 二级缓存:半成品bean对象
  • 三级缓存:存放lamda表达式 完成代理对象覆盖过程

redis

1.内存穿透、缓存雪崩是什么,怎么解决?

  • 内存穿透:指缓存查不到无效数据,去查数据库,数据库也查不到,导致大数据库服务器负荷以及浪费大量计算机和网络资源。
    解决方法:设置默认值,查询缓存不存在后,如果默认值没有则查数据库,默认值存在则不查,或者使用布隆过滤器
  • 内存雪崩:指大量缓存同时过期,导致去查数据库,数据库服务器负荷
    解决方法:设置不同的过期时间
  • 内存击穿:指个别缓存过期,导致去查数据库,数据库服务器负荷
    解决方法:可以设置锁来控制,同步操作减少数据库负荷

2.redis 支持的数据类型有哪些

hash、list、string、zset、set

3.redis分布式锁使用注意

1.避免死锁
2.设置过期时间,防止死锁带来的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值