GitHub2021年度前100的Java面试真题&高频知识点汇总

createh511小时前技术教程4

前言

这是我在工作、面试中学习并总结到的一些知识点,都是一些比较典型的、面试常常被问到的问题。

如果你平时没有注意去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你知道怎么回事,但是你平时没有认真总结,你也可能会出现逻辑混乱的情况,从而错失工作机会。

有些知识点不经常使用就会忘记,但是面试还会问,对此,我也是深受其害,所以我决定将这些遇见的问题整理下来,分享出去,帮助更多的人,我们共同进步。

JDK、JRE、JVM之间的区别

  • JDK(Java SE Development Kit),Java标准开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等
  • JRE( Java Runtime Environment) ,Java运行环境,用于运行Java的字节码文件。JRE中包括了JVM以及JVM工作所需要的类库,普通用户而只需要安装JRE来运行Java程序,而程序开发者必须安装JDK来编译、调试程序。
  • JVM(Java Virtual Mechinal),Java虚拟机,是JRE的一部分,它是整个java实现跨平台的最核心的部分,负责运行字节码文件。

我们写Java代码,用txt就可以写,但是写出来的Java代码,想要运行,需要先编译成字节码,那就需要编译器,而JDK中就包含了编译器javac,编译之后的字节码,想要运行,就需要一个可以执行字节码的程序,这个程序就是JVM(Java虚拟机),专用来执行Java字节码的。

String、StringBuffer、StringBuilder的区别

1. String是不可变的,如果尝试去修改,会新生成一个字符串对象,StringBuffer和StringBuilder是可变的

2. StringBuffer是线程安全的,StringBuilder是线程不安全的,所以在单线程环境下StringBuilder效率会更高

==和equals方法的区别

  • ==:如果是基本数据类型,比较是值,如果是引用类型,比较的是引用地址
  • equals:具体看各个类重写equals方法之后的比较逻辑,比如String类,虽然是引用类型,但是String类中重写了equals方法,方法内部比较的是字符串中的各个字符是否全部相等。

答案解析获取方式:关注+转发后,私信【122】获取

1、重载和重写的区别

2、List和Set的区别

3、ArrayList和LinkedList区别

4、谈谈ConcurrentHashMap的扩容机制

5、Jdk1.7到Jdk1.8 HashMap 发生了什么变化(底层)?

6、说一下HashMap的Put方法

7、深拷和浅拷

8、HashMap的扩容机制原理

9、CopyOnWriteArrayList的底层原理是怎样的

10、什么是字节码?采用字节码的好处是什么?

11、Java中的异常体系是怎样的

12、在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常?

13、Java中有哪些类加载器

14、说说类加载器双亲委派模型

15、JVM中哪些是线程共享区

16、你们项目如何排查JVM问题

17、一个对象从加载到JVM,再到被GC清除,都经历了什么过程?

18、怎么确定一个对象到底是不是垃圾?

19、JVM有哪些垃圾回收算法?

20、什么是STW?

21、JVM参数有哪些?

22、说说对线程安全的理解

23、对守护线程的理解

24、ThreadLocal的底层原理

25、并发、并行、串行之间的区别

26、Java死锁如何避免?

27、线程池的底层工作原理

28、线程池为什么是先添加列队而不是先创建最大线程?

29、ReentrantLock中的公平锁和非公平锁的底层实现

30、ReentrantLock中tryLock()和lock()方法的区别

31、CountDownLatch和Semaphore的区别和底层原理

32、Sychronized的偏向锁、轻量级锁、重量级锁

33、Sychronized和ReentrantLock的区别

34、谈谈你对AQS的理解,AQS如何实现可重入锁?

35、谈谈你对IOC的理解

36、单例Bean和单例模式

37、Spring事务传播机制

38、Spring事务什么时候会失效?

39、Spring中的Bean创建的生命周期有哪些步骤

40、Spring中Bean是线程安全的吗

41、ApplicationContext和BeanFactory有什么区别

42、Spring中的事务是如何实现的

43、Spring中什么时候@Transactional会失效

44、Spring容器启动流程是怎样的

45、Spring用到了哪些设计模式

46、Spring Boot中常用注解及其底层实现

47、Spring Boot是如何启动Tomcat的

48、Mybatis的优缺点

49、#{}和${}的区别是什么?

50、索引的基本原理

51、索引设计的原则?

52、事务的基本特性和隔离级别

53、什么是MVCC

54、简述MyISAM和InnoDB的区别

55、Explain语句结果中各个字段分表表示什么

56、索引覆盖是什么

57、最左前缀原则是什么

58、Innodb是如何实现事务的

59、B树和B+树的区别,为什么Mysql使用B+树

60、Mysql锁有哪些,如何理解

61、Mysql慢查询该如何优化?

62、什么是RDB和AOF

63、Redis的过期键的删除策略

64、简述Redis事务实现

65、Redis 主从复制的核心原理

66、Redis有哪些数据结构?分别有哪些典型的应用场景?

67、Redis分布式锁底层是如何实现的?

68、Redis主从复制的核心原理

69、Redis集群策略

70、缓存穿透、缓存击穿、缓存雪崩分别是什么

71、Redis和Mysql如何保证数据一致

72、Redis的持久化机制

73、Redis单线程为什么这么快

74、什么是CAP理论

75、什么是BASE理论

76、什么是RPC

77、数据一致性模型有哪些

78、分布式ID是什么?有哪些解决方案?

79、分布式锁的使用场景是什么?有哪些实现方案?

80、什么是分布式事务?有哪些实现方案?

81、什么是ZAB协议

82、为什么Zookeeper可以用来作为注册中心

83、Zookeeper中的领导者选举的流程是怎样的?

84、Zookeeper集群中节点之间数据是如何同步的

85、Dubbo支持哪些负载均衡策略

86、Dubbo是如何完成服务导出的?

87、Dubbo是如何完成服务引入的?

88、Dubbo的架构设计是怎样的?

89、负载均衡算法有哪些

90、分布式架构下,Session 共享有什么方案

91、如何实现接口的幂等性

92、简述zk的命名服务、配置管理、集群管理

93、讲下Zookeeper中的watch机制

94、Zookeeper和Eureka的区别

95、存储拆分后如何解决唯一主键问题

96、雪花算法原理

97、如何解决不使用分区键的查询问题

98、Spring Cloud有哪些常用组件,作用是什么?

99、如何避免缓存穿透、缓存击穿、缓存雪崩?

100、分布式系统中常用的缓存方案有哪些

101、缓存过期都有哪些策略?

102、常的缓存淘汰算法

答案解析获取方式:关注+转发后,私信【122】获取

总结

java只是一个工具;应用必不可少,但是基础知识是安身立命以及决定自己上限的东西,虽然是为了应付面试官,但是最重要的还是看自己技术底层是否巩固,这样才能逐步的提升自己的技术能力。

如果基础知识比较扎实了,可以看看网络上的面试经验,找找自己不会的知识点,查漏补缺。也祝大家都能拿到心仪的offer!

相关文章

java中常用第三方类库

在日常的开发中我们可能会涉及到很多的字符串,集合等数据结构的操作。虽然jdk有提供的函数,但有时候不是很方便的使用。为了提高工作效果项目中我一般使用的第三方的类库。并且使用别人写好的类库可以很大程度...

GitHub精选 | 一个小而全的Java工具类库

《GitHub精选》是我们分享Github中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个Java工具类库——Hutool。Hutool是一个小而全的Java工具类库,通过静态...

Java网络编程实战:构建你的网络世界

Java网络编程实战:构建你的网络世界在网络的世界里,Java就像一位身怀绝技的侠客,它拥有强大的网络编程能力,可以帮助我们实现各种各样的网络应用。从简单的客户端服务器通信到复杂的分布式系统,Java...

Google Aviator——轻量级 Java 表达式引擎实战

表达式引擎技术及比较Drools简介Drools(JBoss Rules )是一个开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规...