首页 > 编程语言 >Java面试题查缺补漏习题,锁的升级,动态代理

Java面试题查缺补漏习题,锁的升级,动态代理

时间:2023-06-08 18:03:35浏览次数:53  
标签:面试题 动态 加密 补漏 解密 ThreadLocal 线程 习题 代理


之前我们总结了Java面试题目中的关于计算机网络,操作系统,以及JVM虚拟机,以及Java的相关特性。
今天又看了很多面试的视频,对面试的题目进行一下仔细的补充。

1.对称加密与非对称加密的区别:
非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下:
(1)加密过程和解密过程不同:
对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。
(2)加密解密速度不同
对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。
(3)传输安全性不同:
对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。
非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高

2.简述Java的动态代理机制
动态代理的两种实现方式:1)JDK动态代理;2)CGLIB动态代理。
两种动态代理实现:
JDK动态代理是通过接口中的方法名,在动态生成的代理类中调用业务实现类的同名方法。
CGlib动态代理是通过继承业务类,生成的动态代理类是业务类的子类,通过重写业务方法进行代理。

3.详解CAS及其引发的三个问题:
(1)ABA问题; (2)自旋锁开销及jdk8解决方案; (3)单对象操作及解决

4.Synchronized关键字和锁升级
在JDK1.6以前,使用synchronized就只有一种方式即重量级锁,而在JDK1.6以后,引入了偏向锁,轻量级锁,重量级锁,来减少竞争带来的上下文切换。

锁的4中状态:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态(级别从低到高)

Java面试题查缺补漏习题,锁的升级,动态代理_jdk

5.关于ThreadLocal谈谈你对它的理解?

ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。

ThreadLocal和Synchronized都是为了解决多线程中相同变量的访问冲突问题,不同的点是

Synchronized是通过线程等待,牺牲时间来解决访问冲突

ThreadLocal是通过每个线程单独一份存储空间,牺牲空间来解决冲突,并且相比于Synchronized,ThreadLocal具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问到想要的值。


更多关于编程以及CS学习的资源以及相关技术推文,已经放在我的公众号:AI学习经历分享,关注回复“学习资源”,领取大礼包~

Java面试题查缺补漏习题,锁的升级,动态代理_jdk_02

标签:面试题,动态,加密,补漏,解密,ThreadLocal,线程,习题,代理
From: https://blog.51cto.com/u_13638291/6442047

相关文章

  • 一文读懂大厂面试的计算机网络面试题目(超详细整理)(TCP/IP,OSI,HTTP协议)
    对于大厂的面试来说,掌握基本的计算机网络知识十分必要,但是说实话就单单是博主觉得,看书去复习,是最好的“安眠药”,哈哈哈,所以具有针对性的去学习更加的有效果,所以直接看大厂的高频面试题,快速建立知识结构体系。以下的一些是博主通过博览众多平台的博客推文进行的汇总:1.计算机网络OS......
  • Redis 面试题
    1.Redis是什么?Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。2.Redis有哪些数据类型?5种基础数据结构:String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Zset(有序集合)。3种特殊数据结构:HyperLogLogs(......
  • 杭州字节、懂车帝面试题___整理汇总
     =================================字节懂车帝一面  :2023年6月8日  gxr  1.自我介绍2.你们为什么要做对商家判责3.你们这个积分的加减对商家有什么影响吗?4.刚刚提到了百分之95是什么?==平台对建议预售量和商家的预售量对比5.预售量和备货量之间的关系是什么?6.对于商家判......
  • 杭州阿里面试题___整理汇总
    杭州阿里面试题_=======================面试题:阿里一面 zxp  2023年6月8日1、自我介绍下2、你讲下你项目中做的自动化?3、你使用的什么自动化框架?4、具体讲解下框架使用到那些技术栈?5、自动中如何校验结果?6、自动化中的定位方法有那些?7、自动化如何让浏览器跑起来的原理?8、......
  • 杭州恒生面试题___整理汇总
     杭州恒生面试题==============================2023.6.8   -外派恒生电子第1面1.自我介绍2.功能和自动化性能的占比3.讲一下接口自动化测试框架4.一个输入框100-2000字符用等价类和边界值设计测试用例5.文件导入功能设计测试用例6.内链接和左连接的区别7.常用的Linux命令......
  • 2022-2023期末复习题
    2022-2023期末复习题一、单选题1、世界上第一个分组交换网称为(C)。A、TCP/IP网B、局域网C、ARPAnetD、X.25网2、用路由器连接的地域广大的网络称为(A)。A、广域网B、互联网C、局域网D、城域网3、(B)属于通信子网设备。A、服务器B、通信处理机C、终端D、主机......
  • JAVA 基础面试题(框架)
    一、mybatis    首先,mybatis是一个对象关系映射(orm)框架,是为了解决面向对象与关系数据库的存在互不匹配的现象。也就是说mybatis的关注点在于对象与数据库之间的映射,mybatis会把从数据库中拿到的松散数据进行封装,使开发者直接拿到一个对象。mybatis其实就是对jdbc操作数据库......
  • NEFU高级程序设计-期末复习习题组
    1.用链表实现单词序列倒序输出题目用链表实现单词序列倒序输出。与以往不同,请考虑采用一种完全的动态分配方式!为降低难度,“仁慈”的我已经给出了输出和释放的代码,你只要写出创建链表的creat函数定义就可以了。比如输入为:abcbcdcde则输出为:cdebcdabc见题干!你只能在代码输入......
  • 集合详解之 Map(附面试题)
    集合有两个大接口:Collection和Map,本文重点来讲解集合中另一个常用的集合类型Map。以下是Map的继承关系图:Map简介Map常用的实现类如下:Hashtable:Java早期提供的一个哈希表实现,它是线程安全的,不支持null键和值,因为它的性能不如ConcurrentHashMap,所以很少被推荐使用。HashMa......
  • 肖sir___杭州6月份面试__面试题归纳
    迪安科技  2023年6月6日  现场面试1.自我介绍2.为什么来杭州3.学物理为啥去做软件测试4.讲一下最近做的项目5.具体做的什么内容6.投保人多吗7.赔付比例多少8.怎么测试赔付金额准不准9.测试中那一块比较难10.团队有几个测试,项目组多少人11.测试流程12.测试计划包含哪些内容1......