下面这些问题都是面试互联网大厂后端岗位时的常问问题,我希望你都能熟练的答出来呀!暂时没记牢也不用太担心,我建议你在投简历和约面时,把最想去的公司的面试稍微往后推一推,先面几家自己拿不到 offer 也不会难过的公司。上面这些八股文就是通过我 平时+面试 记熟的,去年 7月 初第一次我面一家中小厂,这些都磕磕绊绊的答不出来,但是到后期 8月底 9月初完全能轻松应对各大厂面试官了。
另外,我通过打星与加粗的方式对下面面试题的重要性进行评级!难度是针对互联网大厂的。
- ⭐ :面试中不常问到,如果面试官问到尽量能答出来,答不出来也没关系。
- ⭐⭐ :面试中不常问到,但是如果面试官问到的话,答不出来对你的印象会减分。
- ⭐⭐⭐:面试中会问到,答不出来面试有点悬。面试官会惊讶为什么你这也不会。
- ⭐⭐⭐⭐:面试高频考点。
- ⭐⭐⭐⭐⭐:面试超高频考点。四星考点和五星考点是参加十场面试,至少能有五场面试问到这些的。大家在准备面试过程中尽量把这些知识点的回答条理梳理清楚,面试官一问就开背。
Java 基础常见面试题汇总 :
- Java 语言的特点(如果你简历上有提到 C++ 可能还会问你 Java 和 C++ 的区别)。【⭐⭐】
- 比较 JVM 和 JDK 以及 JRE 。【⭐⭐⭐】非常非常基础的一个问题!学了 Java 之后还不知这个问题如何回答的小伙伴自觉去面壁吧!
- 为什么说 Java 语言“解释与编译并存”。【⭐⭐】
- Java 基本类型有哪几种,各占多少位?【⭐⭐】前些年面试常问的一个问题,去年面试过程中只京东问我了
- Java 泛型,类型擦除。【⭐⭐⭐】
==
和equals()
的区别。【⭐⭐⭐】:这个问题在 2018 年之前几乎是面试必问的问题,但是现在大厂以及比较少问了,现在小厂中厂问的多。hashCode()
和equals()
【⭐⭐⭐⭐】:这个问题经常问,面试官经常问为什么重写equals()
时要重写hashCode()
方法?另外,这个问题经常结合着HashSet
问。- 重载和重写的区别。 【⭐⭐⭐⭐】
- 深拷贝和浅拷贝。【⭐】
- 面向对象和面向过程的区别。【⭐⭐⭐】
- 成员变量与局部变量的区别。【⭐⭐⭐】
- 面向对象三大特性是什么。并解释这三大特性。【⭐⭐⭐⭐】
String
、StringBuffer
和StringBuilder
的区别。 【⭐⭐⭐⭐】- Java 异常。【⭐⭐⭐】:不会问的特别细。经常的问法是异常可以分为哪几种,然后你答了可检查异常和不可检查异常以后,会让你举例可检查异常有哪些,不可检查有哪些。然后,异常的代码要会写,有一场字节的面试,直接让我写一个把异常捕获了然后抛出去的代码。
- 序列化和反序列化【⭐⭐】
- 反射【⭐⭐】面试官可能会问你什么是反射,它的优缺点是什么,有哪些应用场景。
List
、Set、
Map
的区别。【⭐⭐】ArrayList
和LinkedList
的区别。【⭐⭐⭐⭐】:答清楚每个分别采用什么数据结构,对比相应的优点和缺点。- 比较
HashSet
、LinkedHashSet
和TreeSet
三者的异同。【⭐⭐⭐】 - HashMap 多线程操作导致死循环问题。【⭐⭐⭐】jdk 1.8 后解决了这个问题,但是还是不建议在多线程下使用
HashMap
,因为多线程下使用HashMap
还是会存在其他问题比如数据丢失。并发环境下推荐使用ConcurrentHashMap
。 - HashMap 的长度为什么是 2 的幂次方。【⭐⭐⭐】主要是考虑到了对运算效率的提升。
HashMap
、HashTable
、以及ConcurrentHashMap
的区别。【⭐⭐⭐⭐⭐】:现在面试的超高频考点。当面试官问到这个问题的时候,展现你背面试八股文能力的机会来了。你可以展开去讲在 Java7 和 Java8 中HashMap
分别采用什么数据结构,为什么 Java8 把之前的头插法
改成了尾插法
,怎样实现扩容
,为什么负载因子
是0.75
,为什么要用红黑树
等等一系列的东西。只要面试官不打断我,我在这个知识点上能背到面试官下班。
由于篇幅问题,我并没有写上面这些问题的答案。你可以自行查阅,你也可以参考 JavaGuide 这个开源项目,涵盖了大部分 Java 程序员所需要掌握的核心知识。背面试八股文,这是一个必看的开源项目(学 Java 基础以及实战也推荐看这个项目)。
- Github 地址:https://github.com/Snailclimb/JavaGuide
- Gitee 地址:https://gitee.com/SnailClimb/JavaGuide(Github 无法访问或者访问速度比较慢的小伙伴可以看码云上的对应内容)
- 在线阅读地址: https://javaguide.cn/
推荐大家跟着《Java 编程的逻辑》来学习 Java 基础知识。这个阶段 Java 基础弱的同学应该好好把握住。趁还有时间,边看书边把书中的实例跟着敲一敲,把书中的技术都用一用,体会一下 Java 的编程思想。
这本书真正做到了深入浅出的讲解 Java 知识,内容有深度,但描述通俗易懂。极力推荐。
学习内容按照《Java 编程逻辑》的目录进行介绍:
- 第 1 章:编程基础 : 这一章的学习内容有,数据类型和变量、赋值、基本运算、条件执行、循环、函数用法、函数调用基本原理。这些都是 Java 最基础的,肯定要会。
- 第 2 章:理解数据背后的二进制 : 主要讲了二进制、字符的编码与乱码等计算机领域必备的基础知识。
- 第 3 章->第 5 章 类 : 这里是面试的高频考点。封装、继承、多态三大特性,重载、重写,哪些可以被继承、哪些不可以被继承等等经常会被面试官问到。所以这三章要认真的学习。多体会面向对象的编程思想,也能帮助大家写出高质量的代码。
- 第 6 章 异常 :这块不用学的太细,但是基础的把异常捕获抛出是要学会的,写代码也经常要用。对常见异常类型要掌握。
- 第 7 章 常用基础类 :
String
相关的好好看一下,不止对String
的概念要熟,对String
的操作也要熟。虽然面试的手撕代码过程中大部分面试官是允许你查 API 的,但是涉及到String
的操作还是尽量别查了,面试官可能会觉得你平常的代码量太少了。其它的常用基础类基本了解就好。 - 第 9 章->第 12 章 集合部分 :集合部分是 Java 后端面试的一个超高频考点。
ArrayList
、LinkedList
、HashMap
、队列的操作要熟练,写代码题时经常要用到这几个容器。另外对上述几个集合的实现原理,所采用的数据结构要了解清楚,也要体会一下这些集合设计的好在哪里。 - 第 15 章->第 20 章 并发部分 :并发部分是各个大厂面试的超高频考点。常问的考点有线程的基本概念、
Synchronized
、线程的协作机制、CAS
、ReentrantLock
、ConcurrentHashMap
、线程池。要充分理解上述知识点的实现思想,并且记牢这些知识点的工作流程。另外最好能看一些上述考点在实际场景中的应用。如果能把这些技术恰当的应用在你的项目里,并解决了实际问题,面试官会比较惊喜的。并发这部分内容会在后面单独抽一篇文章详细介绍。 - 第 21 章 -> 第 24 章 :反射、注解、动态代理、类加载机制这快如果有时间的话学一下,然后结合着
Spring
的实现原理进行回答,可以当作你面试的亮点。
如果你比较喜欢看视频的话,推荐你看一下尚硅谷的《Java 基础教程系列》。
这应该是我看过最全的 Java 基础课程之一了,内容不光涵盖 Java 方方面面,还涉及到数据结构、设计模式、JVM 内存结构等知识。
如果你的 Java 基础没有打好的话,也可以选择对应的章节进行学习。
看看这个点赞、投币、收藏、转发量是多么恐怖!
尚硅谷算得上是比价良心的培训机构了,免费开源了很多免费且高质量的教学视频,帮助了很多小伙伴学习编程。
公众号“CS 指南”后台回复“尚硅谷”可以领取尚硅谷这个系列完整的视频教程。