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