Java 面试应该看些什么_第1张图片

  本文将会从6个方面去介绍 Java 方向的高频面试点。

  Java 语言基础

  基础语法:抽象类和接口的区别、Java 中的泛型是怎么实现的、怎样判断两个 Java 对象是相等的等等类似的问题

  容器相关的面试:List、Set、Map三者的区别、ArrayList和LinkedList 之间的区别、ArrayList的扩容机制、HashMap是线程安全的吗?为什么呢?、HashTable是线程安全的吗?它是怎样实现线程安全的?、JDK1.8之前和之后,HashMap的底层实现发生了哪些变化呢?、我需要一个线程安全的Map,你会选择使用什么?为什么?你是从哪些方面考虑的呢?

  并发编程相关的面试:谈一谈Java中的锁机制、你用过哪些并发容器,说一说它们的特性、Java提供了一些原子类,它们都是以Atomic开头,你知道它们是怎么实现的吗?、线程池的参数以及每个参数的含义,它们对线程池产生怎样的影响、JDK中提供了哪几类线程池,它们各自有什么样的适用场合?

  JVM相关的面试:谈一谈JVM中内存区域是怎样划分的,每一块内存区域中存储的是什么、JVM垃圾回收有几种方式,谈一谈你是怎样理解的、类加载器和类加载过程

  MySQL 相关的知识点面试

  MySQL一共提供了四种事务隔离级别,说一说它们各自的优缺点。我们平时使用的是哪一种事务隔离级别呢?为什么?(先搞清楚你现在用的是哪个版本的MySQL)

  谈一谈你对事务的理解,我们日常的工作中在什么情况下需要使用事务?怎样在MySQL中开启和提交事务?

  你理解索引吗?它是怎样构造的?索引具有哪些特性(你能说出来几种)?(这里需要特别注意,需要先说清楚你使用的是哪一种存储引擎)

  你遇到过慢查询吗?是怎样定位慢查询的?又是怎样优化的呢?

  Redis相关的知识点面试

  我们常说Redis是单进程单线程的,但是它为什么还会这么快呢?你知道这是为什么吗?(从Redis IO模型的角度出发去解释)

  Redis支持哪些数据结构,你平时都是怎样使用的?

  Redis的过期机制是怎样实现的?

  Redis支持哪两种持久化机制,它们各自有哪些优缺点?

  Kafka相关的知识点面试

  把Kafka中的名词解释一下,例如:Topic、Partition、Consumer、Producer、Group等等

  你平时在工作中是怎样使用Kafka的?

  Kafka的容灾机制

  对于丢失消息、重复发送、重复消费这样的问题,你有怎样的解决办法?

  Spring相关的知识点面试

  Spring中的bean作用域与生命周期

  我不清楚Spring中的IOC和AOP是什么,你能给我说清楚吗?

  谈一谈Spring容器启动的过程

  对于SpringBoot和SpringCloud来说,一定要能说清楚框架特性,例如SpringBoot中的配置文件是怎样加载的,规则是怎样的?自动配置是怎么实现的?等等;SpringCloud中提供了哪些组件,Eureka、Zuul、Ribbon、Feign、Hystrix,它们是什么,起到了什么样的作用,简单的说一说它们各自的实现原理与特性。

  项目相关的知识点面试

  不要在简历上写的太过详细,简单写一写这个项目是什么、包含什么样的功能、你在其中是个怎样的角色

  你做的工作中有什么样的亮点吗?体现在哪些方面呢?(例如:性能优化或者重构),没有的话问题也不大

  最核心的点,要能够说清楚这个项目的故事,项目的背景、框架技术选型、开发过程、开发周期、上线、运维等等,这个要提前花大量的时间准备好

  面试官可能会对你的业务作出一些临时修改,并让你重新设计或者优化,这个考察的难度比较高,可以适当的准备