Java面试题库

数据结构

1. map的底层存储结构

  • 数组、hash冲突后追加链表,链表太长了转红黑树

2. 如何用两个stack实现一个Queue(编码)

3. 用数组实现一个Queue(编码)

JDK语法

1.你怎么理解函数式接口?Function, Supplier,Consumer 如何使用?(可选)

2. String为何是final的?

3. Object有哪些方法?有什么作用?

多线程

1. ConcurrentHashMap线程安全实现机制

  • 以前是分段锁(减少锁冲突)
  • 现在是CAS实现

2. jdk中乐观锁有哪些实现

3. 线程池的使用

4. 写出一个死锁(编码)

5.ThreadLocal是什么?有什么需要注意的?

  • JVM

    1. 了解哪些垃圾回收算法,JVM的垃圾回收机制

    2. 什么是堆外内存(Direct Memory)(可选)

设计模式

1. 如何初始化单例类

2. 你了解哪些设计模式?你用了哪些设计模式来提高你代码的可维护性?

  • Spring

    1. 你用AOP写过哪些功能

    2. 什么是Srping的动态代理?Spring如果决定使用JDK动态那里还是cglib代理

    3.Controller和RestController有什么区别

    4.

Mysql

1. 什么是索引?主键索引和普通索引有什么区别?

2. 什么是数据库的水平切分和垂直切分?

3. 如何开启一个事务?举个例子,说明下事务是什么?

4. Mysql的redo log和bin log有什么作用?(可选)

5. Mysql支持JSON类型存储吗?支持索引吗?

6. 你平时是如何对Mysql语句进行优化的?

Redis

1. 持久化机制是怎么样的

2. 集群模式下,getKey操作是如何工作的

3. 如何复用redis链接?

  • 使用连接池
  • 如果链接超过一定时间就会因网络问题断掉,如何处理?

    • 定期清除空闲的连接

4. 用过lua脚本吗?怎么用的,每次请求都提交整个脚本吗

5.除了String,你还用过redis的哪些数据类型

  • 只需要第一次提交脚本内容时候生成一个sha值,后续每次通过evalSha直接调用

消息队列(可选)

1. 哪些场景适合用消息队列?

2. 什么是ACK机制

3.kafka的消费者组是做什么的(可选)

4.什么是死信队列(可选)

微服务组件(可选)

1. 为什么要用注册中心?

2. 如何实现配置的热更新?

3. nacos实现热更新的机制是什么?

注:
(可选)的题目需要根据应聘人情况酌情考察。
(编码)的题目是编程题。当然只说思路也是可以的
list是答案,答案只写了基本思路。

你可能感兴趣的:(java面试)