Skip to content

Latest commit

 

History

History
83 lines (59 loc) · 8.87 KB

八股文骚套路之Java基础.md

File metadata and controls

83 lines (59 loc) · 8.87 KB

Java 基础面试准备

救急准备

下面这些问题都是面试互联网大厂后端岗位时的常问问题,我希望你都能熟练的答出来呀!暂时没记牢也不用太担心,我建议你在投简历和约面时,把最想去的公司的面试稍微往后推一推,先面几家自己拿不到 offer 也不会难过的公司。上面这些八股文就是通过我 平时+面试 记熟的,去年 7月 初第一次我面一家中小厂,这些都磕磕绊绊的答不出来,但是到后期 8月底 9月初完全能轻松应对各大厂面试官了。

另外,我通过打星与加粗的方式对下面面试题的重要性进行评级!难度是针对互联网大厂的。

  • ⭐ :面试中不常问到,如果面试官问到尽量能答出来,答不出来也没关系。
  • ⭐⭐ :面试中不常问到,但是如果面试官问到的话,答不出来对你的印象会减分。
  • ⭐⭐⭐:面试中会问到,答不出来面试有点悬。面试官会惊讶为什么你这也不会。
  • ⭐⭐⭐⭐:面试高频考点。
  • ⭐⭐⭐⭐⭐:面试超高频考点。四星考点和五星考点是参加十场面试,至少能有五场面试问到这些的。大家在准备面试过程中尽量把这些知识点的回答条理梳理清楚,面试官一问就开背。

Java 基础常见面试题汇总

  1. Java 语言的特点(如果你简历上有提到 C++ 可能还会问你 Java 和 C++ 的区别)。【⭐⭐】
  2. 比较 JVM 和 JDK 以及 JRE 。【⭐⭐⭐】非常非常基础的一个问题!学了 Java 之后还不知这个问题如何回答的小伙伴自觉去面壁吧!
  3. 为什么说 Java 语言“解释与编译并存”。【⭐⭐】
  4. Java 基本类型有哪几种,各占多少位?【⭐⭐】前些年面试常问的一个问题,去年面试过程中只京东问我了
  5. Java 泛型,类型擦除。【⭐⭐⭐】
  6. ==equals() 的区别。【⭐⭐⭐】:这个问题在 2018 年之前几乎是面试必问的问题,但是现在大厂以及比较少问了,现在小厂中厂问的多。
  7. hashCode()equals() 【⭐⭐⭐⭐】:这个问题经常问,面试官经常问为什么重写 equals() 时要重写 hashCode() 方法?另外,这个问题经常结合着 HashSet 问。
  8. 重载和重写的区别。 【⭐⭐⭐⭐】
  9. 深拷贝和浅拷贝。【⭐】
  10. 面向对象和面向过程的区别。【⭐⭐⭐】
  11. 成员变量与局部变量的区别。【⭐⭐⭐】
  12. 面向对象三大特性是什么。并解释这三大特性。【⭐⭐⭐⭐】
  13. StringStringBufferStringBuilder 的区别。 【⭐⭐⭐⭐】
  14. Java 异常。【⭐⭐⭐】:不会问的特别细。经常的问法是异常可以分为哪几种,然后你答了可检查异常和不可检查异常以后,会让你举例可检查异常有哪些,不可检查有哪些。然后,异常的代码要会写,有一场字节的面试,直接让我写一个把异常捕获了然后抛出去的代码。
  15. 序列化和反序列化【⭐⭐】
  16. 反射【⭐⭐】面试官可能会问你什么是反射,它的优缺点是什么,有哪些应用场景。
  17. List、Set Map 的区别。【⭐⭐】
  18. ArrayListLinkedList 的区别。【⭐⭐⭐⭐】:答清楚每个分别采用什么数据结构,对比相应的优点和缺点。
  19. 比较 HashSetLinkedHashSetTreeSet 三者的异同。【⭐⭐⭐】
  20. HashMap 多线程操作导致死循环问题。【⭐⭐⭐】jdk 1.8 后解决了这个问题,但是还是不建议在多线程下使用 HashMap,因为多线程下使用 HashMap 还是会存在其他问题比如数据丢失。并发环境下推荐使用 ConcurrentHashMap
  21. HashMap 的长度为什么是 2 的幂次方。【⭐⭐⭐】主要是考虑到了对运算效率的提升。
  22. HashMapHashTable、以及 ConcurrentHashMap 的区别。【⭐⭐⭐⭐⭐】:现在面试的超高频考点。当面试官问到这个问题的时候,展现你背面试八股文能力的机会来了。你可以展开去讲在 Java7 和 Java8 中 HashMap 分别采用什么数据结构,为什么 Java8 把之前的头插法改成了尾插法,怎样实现扩容,为什么负载因子0.75,为什么要用红黑树等等一系列的东西。只要面试官不打断我,我在这个知识点上能背到面试官下班。

由于篇幅问题,我并没有写上面这些问题的答案。你可以自行查阅,你也可以参考 JavaGuide 这个开源项目,涵盖了大部分 Java 程序员所需要掌握的核心知识。背面试八股文,这是一个必看的开源项目(学 Java 基础以及实战也推荐看这个项目)。

JavaGuide 首页

系统学习

推荐大家跟着《Java 编程的逻辑》来学习 Java 基础知识。这个阶段 Java 基础弱的同学应该好好把握住。趁还有时间,边看书边把书中的实例跟着敲一敲,把书中的技术都用一用,体会一下 Java 的编程思想。

这本书真正做到了深入浅出的讲解 Java 知识,内容有深度,但描述通俗易懂。极力推荐。

学习内容按照《Java 编程逻辑》的目录进行介绍:

  • 第 1 章:编程基础 : 这一章的学习内容有,数据类型和变量、赋值、基本运算、条件执行、循环、函数用法、函数调用基本原理。这些都是 Java 最基础的,肯定要会。
  • 第 2 章:理解数据背后的二进制 : 主要讲了二进制、字符的编码与乱码等计算机领域必备的基础知识。
  • 第 3 章->第 5 章 类 : 这里是面试的高频考点。封装、继承、多态三大特性,重载、重写,哪些可以被继承、哪些不可以被继承等等经常会被面试官问到。所以这三章要认真的学习。多体会面向对象的编程思想,也能帮助大家写出高质量的代码。
  • 第 6 章 异常 :这块不用学的太细,但是基础的把异常捕获抛出是要学会的,写代码也经常要用。对常见异常类型要掌握。
  • 第 7 章 常用基础类String 相关的好好看一下,不止对 String 的概念要熟,对 String 的操作也要熟。虽然面试的手撕代码过程中大部分面试官是允许你查 API 的,但是涉及到 String 的操作还是尽量别查了,面试官可能会觉得你平常的代码量太少了。其它的常用基础类基本了解就好。
  • 第 9 章->第 12 章 集合部分 :集合部分是 Java 后端面试的一个超高频考点。ArrayListLinkedListHashMap、队列的操作要熟练,写代码题时经常要用到这几个容器。另外对上述几个集合的实现原理,所采用的数据结构要了解清楚,也要体会一下这些集合设计的好在哪里。
  • 第 15 章->第 20 章 并发部分 :并发部分是各个大厂面试的超高频考点。常问的考点有线程的基本概念、Synchronized、线程的协作机制、CASReentrantLockConcurrentHashMap、线程池。要充分理解上述知识点的实现思想,并且记牢这些知识点的工作流程。另外最好能看一些上述考点在实际场景中的应用。如果能把这些技术恰当的应用在你的项目里,并解决了实际问题,面试官会比较惊喜的。并发这部分内容会在后面单独抽一篇文章详细介绍。
  • 第 21 章 -> 第 24 章 :反射、注解、动态代理、类加载机制这快如果有时间的话学一下,然后结合着 Spring 的实现原理进行回答,可以当作你面试的亮点。

如果你比较喜欢看视频的话,推荐你看一下尚硅谷的《Java 基础教程系列》。

这应该是我看过最全的 Java 基础课程之一了,内容不光涵盖 Java 方方面面,还涉及到数据结构、设计模式、JVM 内存结构等知识。

如果你的 Java 基础没有打好的话,也可以选择对应的章节进行学习。

看看这个点赞、投币、收藏、转发量是多么恐怖!

尚硅谷算得上是比价良心的培训机构了,免费开源了很多免费且高质量的教学视频,帮助了很多小伙伴学习编程。

公众号“CS 指南”后台回复“尚硅谷”可以领取尚硅谷这个系列完整的视频教程。