前言
很多同学会问Java面试八股文有必要背吗?
答案是,必须背,我的好多同学凭借八股文斩获了多个大厂暑期实习offer,相信一定也可以发挥重要作用。
你可以讨厌这种模式,但你也一定要去背的,因为不背的话你就过不了面试,八股文能快速检验出求职者是否为科班出身,专业基础到底强不强。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。
有大神把牛客网的 Java面试题资源全都整理出来了,大家在面试前可以背一遍,一定能“吊打”面试官。
内容涵盖:性能调优系列(Tomcat+JVM+MySQL)Java基础、Java虚拟机、数据库、MyBatis框架、ZooKeeper框架、Dubbo框架、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring
Boot、Spring Cloud、RabbitMQ、Kafka、Linux、中间件、分布式微服务等!!!一键获取java面试真题合集
Java基础、Java虚拟机、数据库、MyBatis框架、ZooKeeper框架、Dubbo框架、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux、中间件、分布式微服务。
一、性能调优系列(Tomcat+JVM+MySQL)
1.1 Tomcat性能优化整理(6)
-
你怎样给Tomcat调优?
-
如何加大Tomcat连接数?
-
怎样加大Tomcat的内存?
-
Tomcat中如何禁止列目录下的文件?
-
Tomcat有几种部署方式?
-
Tomcat的优化经验?
1.2 JVM性能优化整理(21)
-
Java类加载过程?
-
Java内存分配?
-
描述一下JVM加载Class文件的原理机制?
-
GC是什么?为什么要有GC?
-
什么是Java垃圾回收机制?
-
如何判断一个对象是否存活?
-
垃圾回收的优点和原理?并考虑2中回收机制?
-
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?
-
Java中会存在内存泄漏吗?
-
深拷贝和浅拷贝?
-
System.gc()和Runtime.gc()会做什么事情?
-
finalize()方法什么时候被调用?析构函数的目的是什么?
-
如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
-
什么是分布式垃圾回收(DGC)?它是如何工作的?
-
串行(serial)收集(throughput)器和吞吐量收集器的区别是什么?
-
在Java中,对象什么时候可以被垃圾回收?
-
简述 Java 内存分配与回收策率以及 Minor GC 和 MajorGC
-
JVM 的永久代中会发生垃圾回收么?
-
Java 中垃圾收集的方法有哪些?
-
什么是类加载器,类加载器有哪些?
-
类加载器双亲委派模型机制?
-
程序计数器(线程私有)
答:
一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有” 的内存。
正在执行java方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址) 。如果还是Native方法,则为空。这个内存区域是唯一一个在虚拟机中没有规定任何OutOfMemoryError情况的区域。
- 虚拟机栈(线程私有)
答:
是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。栈帧( Frame)是用来存储数据和部分过程结果的数据结构,同时也被用来处理动态链接(Dynamic Linking)、 方法返回值和异常分派(Dispatch Exception)。 栈帧随着方法调用而创建,随着方法结束而销毁——无论方法是正常完成还是异常完成(抛出了在方法内未被捕获的异常)都算作方法结束。
1.3 MySQL性能优化整理(21)
-
为查询缓存优化你的查询
-
EXPLAIN你的SELECT查询
-
当只要一行数据时使用LIMIT 1
-
为搜索字段建索引
-
在Join表的时候使用相当类型的例,并将其索引
-
千万不要 ORDER BY RAND()
-
避免 SELECT *
-
永远为每张表设置一个 ID
-
使用 ENUM 而不是 VARCHAR
-
从 PROCEDURE ANALYSE() 取得建议
-
尽可能的使用 NOT NULL
-
Prepared Statements
-
无缓冲的查询
-
把 IP 地址存成 UNSIGNED INT
-
固定长度的表会更快
-
垂直分割
-
拆分大的 DELETE 或 INSERT 语句
-
越小的列会越快
-
选择正确的存储引擎
-
使用一个对象关系映射器(Object Relational Mapper)
-
小心“永久链接”