Java面试史上最骚的JAVA专业术语面试100问(51-100)。

前言:

(面试题是根据一些朋友去面试提供的,再就是从网上整理了一些)
前面更新了1-50的题,正好昨天星期六放假,回家抽时间又整理了一下后面的,我真是一个辛勤的小蜜蜂。
所以请给我一个小小的赞或者…
在这里插入图片描述
不多说废话了,上菜!

正文:

51、什么是线程安全?

52、什么是死锁?如何避免死锁?

死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。

举个例子,A 同学抢了 B 同学的钢笔,B 同学抢了 A 同学的书,两个人都相互占用对方的东西,都在让对方先还给自己自己再还,这样一直争执下去等待对方还而又得不到解决,老师知道此事后就让他们相互还给对方,这样在外力的干预下他们才解决。

当然这只是个例子没有老师他们也能很好解决,计算机不像人如果发现这种情况没有外力干预还是会一直阻塞下去的。

53、synchronized的实现原理是什么?

54、有了synchronized,还需要volatile做什么事?

55、synchronized的锁优化是怎么处理的?

Synchronized和Volatile的区别:

1、Volatile 仅能使用在变量级别;Synchronized则可以使用在变量、方法、和同步代码块等类级别的。

2、Volatile仅能实现变量的修改可见性和有序性,并不能保证原子性(复合操作的原子性);Synchronized则可以保证变量的可见性、有序性、原子性。

3、Volatile不会造成线程的阻塞;Synchronized可能会造成线程的阻塞。

4、Volatile标记的变量不会被编译器优化(因为这是由cpu指令完成);Synchronized标记的变量可以被编译器优化(JAVA1.6后性能优化很多)。

在这里也整理了一份Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC,源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

需要的朋友可以点击:这个!点这个,暗号:csdn。

在这里插入图片描述
56、JMM是什么?

57、Java并发包都有哪些?

58、什么是fail-fast?

59、什么是fail-safe?

60、什么是CopyOnWrite?

61、什么是AQS呢?

62、什么是CAS呢?

63、乐观锁是怎样的?

就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将比较-替换这两个动作作为一个原子操作尝试去修改内存中的变量,如果失败则表示发生冲突,那么就应该有相应的重试逻辑。

64、乐观锁悲观锁区别是什么?

65、数据库如何实现悲观锁和乐观锁?

66、数据库锁和隔离级别有什么关系?

67、数据库锁和索引有什么关系?

68、什么是聚簇索引?

聚簇索引也叫簇类索引,是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。

每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。
在这里插入图片描述

69、什么是非聚簇索引?

70、索引最左前缀是什么?

71、什么是B+树索引?

72、什么是联合索引?

73、什么是回表?

74、分布式锁有了解吗?

75、Redis怎么实现分布式锁?

76、为什么要用Redis?

因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等,都对数据库提出了更高的要求,所以引入了缓存中间件,目前市面上比较常用的缓存中间件有Redis 和 Memcached 不过中和考虑了他们的优缺点,最后选择了Redis。

77、Redis和memcache区别是什么?

78、Zookeeper怎么实现分布式锁?

79、什么是Zookeeper?

80、什么是CAP?

CAP 理论是针对分布式数据库而言的,它是指在一个分布式系统中,
一致性(Consistency, C)、可用性(Availability, A)、分区容错性(Partition Tolerance, P)
三者不可兼得。

81、什么是BASE?和CAP什么区别?

82、CAP怎么推导?如何取舍?

83、分布式系统怎么保证数据一致性?

84、什么是分布式事务?分布式事务方案?

85、线程安全的单例?

86、不用synchronized和lock能实现线程安全的单例吗?

87、什么是Paxos算法?

88、ArrayList和LinkedList和Vector的区别·

89、谈一下计模式遵循的面向对象设计原则!

90、Arrays.asList获得的List使用时需要注意什么

91、List和原始类型List之间的区别?

在编译时编译器不会对原始类型进行类型安全检查,却会对带参数的类型进行检查。

需要的朋友可以点击:这个!点这个,暗号:csdn。
在这里插入图片描述

92、List和List

93、synchronized是如何实现的?

94、BIO、NIO和AIO的区别、三种IO的用法与原理

95、ConcurrentSkipListMap

96、String.valueOf和Integer.toString的区别

97、Integer的缓存机制

98、Set如何保证元素不重复?

99、Java中如何保证线程安全?

100、你使用过JVM相关的参数,列举几个。

-Xms:初始内存大小,默认物理内存1/64,等价于-XX:InitialHeapSize

-Xmx:最大分配内存,默认物理内存1/4,等价于-XX:MaxHeapSize

-Xss:设置单个线程栈的大小,等价于-XX:ThreadStackSize

-Xmn:设置年轻代大小,

-XX:MetaspaceSize:设置元空间大小

-XX:+PrintGCDetails 打印GC收集细节 GC/FullGC

最后:

提供【免费】的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

需要的朋友可以点击:这个!点这个,暗号:csdn。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题【免费】给。
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值