avatar

Java面试题8

1.JVM内存结构

1
2
3
按线程是两部分: 线程独占和线程共享
线程独占: 程序计数器、本地方法栈和虚拟机栈
线程共享:方法区(具体实现元空间(计算机内存独立存在)和永久代,永久代1.7移除)和堆

2.类加载的过成

1
加载,验证,准备,解析,初始化

3.常用的类加载器

1
2
3
启动类加载器(Bootstrap classLoader)
拓展类加载器(Extension classLoader)
应用类加载器(System classLoader)

4.Redis的缓存击穿、缓存雪崩和缓存穿透

1
2
3
缓存击穿: 就是说某些数据的访问非常频繁,处于集中式高并发访问的情况,当这些数据在同一时间集体过期,大量的请求直接击穿缓存请求到数据库,就像是在一道屏障上凿开了一个洞
缓存雪崩: 指缓存中大批量热点数据过期后系统涌入大量查询请求,因为大部分数据在Redis层已经失效.请求渗透到数据库层,大批量请求犹如洪水一般涌入,引起数据库压力造成查询堵塞甚至宕机
缓存穿透: 某些数据没有在Redis中找到,然后去数据库中查找也未找到,但用户仍在频繁的发送请求到后台

5.TCP/UDP网络协议的区别

1
2
TCP:面向连接,需要进行三次握手建立连接和四次挥手断开连接,特点:安全性高,传输效率低,速度慢
UDP:面向非连接,特点:安全性低,传输效率高,速度快

6.什么是JWT

1
全称是JSON WebToken,主要功能是为了做校验;第一部分:Header:头部包括令牌的类型(即JWT)及使用的哈希算法(如HMAC SHA256或RSA);第二部分:Payload:是负载,内容也是一个Json对象,它是存放有效信息的地方,它可以存放JWT提供的现成字段;第三部分:Signature:是签名,此部分用于防止JWT内容被篡改,这个部分使用Base64url将前两部分进行编码,编码后使用点(.)连接组成字符串,最后在Header中声明

7.对称加密和非对称加密的区别

1
2
3
4
5
6
1.加密和解密过程不同
对称加密度过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文;但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密
2.加密解密速度不同
对称加密解密的速度比较知快,适合数据比较长时的使用;非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用
3.传输的安全性不同
对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获道的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低

8.JDK1.8新特性

1
2
3
4
5
6
1.Lambda表达式
2.函数式接口
3.方法引用和构造器调用
4.Stream API
5.接口中的默认方法和静态方法
6.新时间日期API

9.Zookeeper和Dubbo

1
2
Dubbo是阿里开发的,它是一个分布式、高性能的服务框架,主要就是用来做两个服务器之间的交互
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,Dubbo用Zookeeper作为服务的注册中心

10.RabbitMQ的优缺点?

1
2
优点: 解耦、异步、削峰
缺点: 降低了系统的稳定性,增加了系统的复杂性
文章作者: 123
文章链接: https://gao5805123.github.io/123/2020/05/24/Java%E9%9D%A2%E8%AF%95%E9%A2%988/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123
打赏
  • 微信
    微信
  • 支付宝
    支付宝