前言
首先强调几点:
1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的;
2. 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试 之前好好回顾一下自己所做的项目;
2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
3. 注意自己开源的 Github 项目,面试官可能会挖你的 Github 项目提问;
4. 建议提前了解一下自己想要面试的公司的价值观,判断一下自己究竟是否适合这个公司。
另外,我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
接下来进入正题
不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。
“80%的 offffer 掌握在 20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offffer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。
笔主能力有限,如果有不对的地方或者和你想法不同的地方,敬请雅正、不舍赐教。
Spring
Spring 一般是不可避免的,如果你的简历上注明了你会 Spring Boot 或者 Spring Cloud 的话,那么面试官也可能会同时问你这两个技术,比如他可能会问你 springboot 和 spring 的区别。 所以,一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。
另外,AOP 实现原理、动态代理和静态代理、Spring IOC 的初始化过程、IOC 原理、自己怎么实现一个 IOC 容器? 这些东西都是经常会被问到的。
Spring 核心组件
Spring 常用模块
常见面试题
-
使用 Spring 框架的好处是什么?
-
Spring 由哪些模块组成?核心容器(应用上下文) 模块
-
解释 AOP 模块
-
解释 JDBC 抽象和 DAO 模块
-
什么是 Spring IOC 容器? IOC 的优点是什么?
-
什么是 Spring 的依赖注入?有哪些不同类型的 IOC(依赖注入)方式?哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入?
-
什么是 Spring beans?一个 Spring Bean 定义 包含什么?
-
Spring 框架中的单例 bean 是线程安全的吗?解释 Spring 框架中 bean 的生命周期
-
哪些是重要的 bean 生命周期方法? 你能重载它们吗?
-
在 Spring 框架中如何更有效地使用 JDBC?
-
使用 Spring 通过什么方式访问 Hibernate?
-
请介绍下 spring 的事务管理,Spring 框架的事务管理有哪些优点?你更倾向用那种事务管理类型?
-
什么是代理?有几种不同类型的自动代理?
-
什么是 Spring 的 MVC 框架?什么是 Spring MVC 框架的控制器?
关于 JVM 和设计模式
JVM 内存区域
JVM 运行时内存
垃圾回收与算法
关于 Java 虚拟机,在面试的时候一般会问的大多就是①Java 内存区域、②虚拟机垃圾算法、③虚拟机垃圾收集器、④JVM 内存管理、⑤JVM 调优这些问题了。
设计模式
设计模式比较常见的就是让你手写一个单例模式(注意单例模式的几种不同的实现方法)或者让你说一下某个常见的设计模式在你的项目中是如何使用的,另外面试官还有可能问你抽象工厂和工厂方法模式的区别、工厂模式的思想这样的问题。
建议把代理模式、观察者模式、(抽象)工厂模式好好看一下,这三个设计模式也很重要。
JAVA 多线程并发
JAVA 并发知识库
-
说一说自己对于 synchronized 关键字的了解
-
说说自己是怎么使用 synchronized 关键字,在项目中用到了吗?
-
讲一下 synchronized 关键字的底层原理
-
说说 JDK1.6 之后的 synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗?
-
谈谈 synchronized 和 ReenTrantLock 的区别
-
说说 synchronized 关键字和 volatile 关键字的区别
-
为什么要用线程池?
-
实现 Runnable 接口和 Callable 接口的区别
-
执行 execute()方法和 submit()方法的区别是什么呢?
-
如何创建线程池
-
介绍一下 Atomic 原子类
-
JUC 包中的原子类是哪 4 类?
-
讲讲 AtomicInteger 的使用
-
能不能给我简单介绍一下 AtomicInteger 类的原理
-
AQS
最后,由于头条的篇幅有限,所以这些面试题都没有将答案呈现出来,这些知识点都收集在我自己的这一份 Java 核心知识点整理与面试的 PDF 上面了,需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取哦