Tiven Wang

Java 面试常见问题

425 favorite favorites
bookmark bookmark
share share

热门词汇:

  • 分布式
  • 高并发

分布式

你不得不懂的分布式

常见面试问题

  • Dubbo 的底层实现原理和机制
  • 描述一个服务从发布到被消费的详细过程
  • 分布式系统怎么做服务治理
  • 接口的幂等性的概念
  • 消息中间件如何解决消息丢失问题
  • Dubbo 的服务请求失败怎么处理
  • 重连机制会不会造成错误
  • 对分布式事务的理解
  • 如何实现负载均衡,有哪些算法可以实现?
  • Zookeeper 的用途,选举的原理是什么?
  • 数据的垂直拆分水平拆分。
  • zookeeper 原理和适用场景
  • zookeeper watch 机制
  • redis/zk 节点宕机如何处理
  • 分布式集群下如何做到唯一序列号
  • 如何做一个分布式锁
  • 用过哪些 MQ,怎么用的,和其他 mq 比较有什么优缺点,MQ的连接是线程安全的吗
  • MQ 系统的数据如何保证不丢失
  • 列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。

分布式锁

https://www.jianshu.com/p/d72e8526bea1

分布式缓存

Redis

知乎 - 阿里面试最最俱全的,50道Redis面试题

知乎 - 46道史上最全Redis面试题,面试官能问的都被我找到了(含答案)

Dubbo

https://zhuanlan.zhihu.com/p/31206177

高并发

Java

多线程

40个Java多线程问题总结

ThreadLocal

知乎 - 阿里java架构师面试128题含答案:分布式架构+Dubbo+多线程+Redis

知乎 - synchronized锁定的到底是什么?

知乎 - Synchronized锁在Spring事务管理下,为啥还线程不安全?

  • synchronized:其实是一种 recursive lock,他被加在对象上,如果是 static 静态方法则被加在类上,当同一个线程每次调用 synchronized 方法时锁的计数器都会加一,当调用结束了再减一,直到为零锁释放。

  • ReentrantLock https://zhuanlan.zhihu.com/p/27177956

线程锁和分布式锁

synchronized 是用在线程之间的锁,对于分布式式环境的多进程中就不适用了,要用分布式锁。

数据库锁

知乎 - mysql 乐观锁、悲观锁、共享锁、排它锁、行锁、表锁

  • 乐观锁: 自旋(就地循环等待)乐观锁,总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量

  • 悲观锁(共享锁(写锁),排它锁(读锁)): 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁

    • 共享锁,又称为__读锁__,是悲观锁的一种,可以查看但无法修改和删除的一种数据锁. 比如一个事务正在执行,没有执行commit语句,别的事务只能查询,而不能修改这个事务所对应行。 所有事务的 Select ….都加上 lock in share mode 实现了写锁

    • 排他锁(Exclusive Locks,简称 X 锁),又称为__写锁__、独占锁, 若事务T对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A ,其他任何事务都不能再对A加任何类型的锁,直到 T 释放 A 上的锁。这就保证了其他事务在T释放 A 上的锁之前不能再读取和修改 A。 所有事务的 Select …… 都加上 for update 实现了读锁。 通过查询语句后面+for update使用,注意for update 一定要配合事务一起使用。 ```sql START TRANSACTION;

    SELECT * FROM test WHERE id=1 for update;

    COMMIT ```

经典问题:秒杀减库存问题。

微服务

一年了,我们都用 Spring Cloud 干了啥?

Spring Cloud

中间件

Rabbitmq

1.rabbitmq 的使用场景有哪些?

2.rabbitmq 有哪些重要的角色?

3.rabbitmq 有哪些重要的组件?

4.rabbitmq 中 vhost 的作用是什么?

5.rabbitmq 的消息是怎么发送的?

6.rabbitmq 怎么保证消息的稳定性?

7.rabbitmq 怎么避免消息丢失?

8.要保证消息持久化成功的条件有哪些?

9.rabbitmq 持久化有什么缺点?

10.rabbitmq 有几种广播类型?

11.rabbitmq 怎么实现延迟消息队列?

12.rabbitmq 集群有什么用?

13.rabbitmq 节点的类型有哪些?

14.rabbitmq 集群搭建需要注意哪些问题?

15.rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?

16.rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?

17.rabbitmq 对集群节点停止顺序有要求吗?

Kafka

知乎 - Java 最新面试题

Comments

Back to Top