Java基础和底层面试题附答案

时间:2025-02-18 08:18:24

在大公司的面试里,最爱考的就是基础和底层的知识,可谓必考题,也是很多人薄弱的地方。在小公司的面试里,也有不少考基础的。整理一下基础知识和底层原理相关的高频面试题。为了方便自我检测,答案隐藏起来了,需要看答案的自行向右拖动滚动条查看。

目录:

Java篇

Java的基本数据类型和对应的占用空间
参考答案:/java/

面向对象的三大特征?

                                                                                                                              封装、继承、多态。
  • 1

什么是多态

                                                                                                                     接口的多种不同实现方式就是多态。比如同一个接口,使用不同的实例,执行不同的操作。             (这个很重要,一定要理解,有点抽象,不理解的请自行百度。)
  • 1

局部内部类可以修改局部变量吗?

                                                                                                           不能。原因:因为局部内部类要访问局部变量,局部变量必须被声明为final,所以局部内部类无法修改局部变量。JDK1.8后,在局部内部类访问局部变量即使变量没有被声明为final也是自动认为该变量是final,所以局部内部类只能访问而无法修改局部变量。注意!!!成员内部类是可以修改局部变量的。
                                                                   
  • 1
  • 2

反射和clone创建对象会调用构造函数吗?

                                                                                                           反射会,clone不会。
                                                                   
  • 1
  • 2

JAVA创建对象的方式有几种?分别是什么?

                                                                                                         四种。分别是:
                                                                                                      1.用new关键字创建
                                                                                                      2.调用对象的clone方法
                                                                                                      3.利用反射,调用Class类的或者是Constructor类的newInstance()方法
                                                                                                      4.用反序列化,调用ObjectInputStream类的readObject()方法
                                                                   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

多线程篇

Synchronized和Lock的区别

  参考答案:  /ldkjsdty/article/details/114333345                
  • 1

volatile和synchronized的区别

  参考答案: /suifeng3051/article/details/52611233                
  • 1

JVM启动的是多线程吗?

                                                                                                                    JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。
  • 1

如何让主线程等待所有子线程执行完了再执行?

                                                                                                          方法:1.使用Thread的join()方法,在调用Thread的start()方法后调用Thread的jion()方法。Thread的join()方法的作用是让父线程等待子线程结束之后才能继续执行。
                                                                                                                 2.使用工具类CountDownLatch。
                                                                                                                 3.使用工具类CyclicBarrier。
                                                                                                                 4.使用线程池。
                                                                                                                 参考:/m0_37125796/article/details/81105099
  • 1
  • 2
  • 3
  • 4
  • 5

Java进程间通信的方式有哪些

  参考答案:  /fnlingnzb-learner/p/                
  • 1

数据结构篇

Set、List、Map的区别与联系?
ArrayList和LinkedList区别?
Vector和ArrayList 区别?
参考解析:/qq_39241239/article/details/82116734

Map的有序和无序实现类有哪些?

                                                                                                                       、Hashtable不是有序的;

                                                                                                                      和LinkedHashMap是有序的(TreeMap默认 Key 升序,LinkedHashMap则记录了插入顺序)。
  • 1
  • 2
  • 3

JVM篇

对象被垃圾回收器回收前会调用什么方法?

                                                                                                             finalize()
  • 1

java双亲委派机制及作用?

  参考答案:/p/1e4011617650                                                                                       
  • 1

MySQL

MySQL索引在什么情况下会失效?

                                                                                                                    参考:/p/3ccca0444432。
  • 1

算法

整理中…

Spring篇

Spring 中创建的Bean(例如Controller)默认是单例还是多例的?

                                                                                                                                       默认是单例的。
                                                                                                                                   
  • 1
  • 2

Spring框架中的三大核心思想是什么?

                                                                                                                       DI(依赖注入)
                                                                                                                       IOC(控制反转)
                                                                                                                       AOP(面向切面编程)
  • 1
  • 2
  • 3

Spring MVC篇

整理中…

MyBatis篇

MyBatis的缓存机制?

																																					分为一级缓存和二级缓存,并预留了集成第三方缓存的接口,一级缓存默认开启,二级缓存需要手动开启;一级缓存只是相对于同一个SqlSession而言。
																																					更多参考:/happyflyingpig/p/
  • 1
  • 2

Redis

redis的数据类型有哪些?

																																						1.字符串(String)
																																						2.哈希(Hash)
																																						3.列表(List) 
																																						4.集合(Set)
																																						5.有序集合(sorted set)
  • 1
  • 2
  • 3
  • 4
  • 5

Web篇

关闭浏览器后,session是否还存在?

                                                                                                                                       存在于浏览器上的唯一标识符JSESSIONID(sessionid)消失了,但是服务器中存放的sessionid并没有立马销毁。更多参考内容:             /heyboom/p/                                 
  • 1