一面7.15北京时间上午十点
简单自我介绍,
讲一下之前接触过的项目,只是简单的介绍了一下项目,没有太深问大概十分钟
开始问些简单八股--------------------------
1️⃣、讲一下hashcode()和equals()关系
equals()和==有什么区别‼️‼️
2️⃣、讲一下重载和重写的区别‼️
3️⃣、讲一下深拷贝、浅拷贝的区别‼️
深拷贝会从堆内存中完全复制一个对象,浅拷贝只是复制对象的符号引用,但是浅拷贝对象和原对象共指向同一个内存地址
4️⃣、讲一下Java异常的基类
运行时异常举几个例子,简单聊一下什么情况下会出现
StackOverFlow、ArrayIndexOutOfBoundsException、NullPointerException
5️⃣、Java并发了解吧
5.1 讲一下 线程的几种状态(new、ready、running、waiting、terminated)‼️
状态间是如何切换的、线程在ready状态能否sleep(不能,因为在ready状态还没有获取到资源,而sleep是线程运行时操作,且不会释放资源)
5.2 sleep 和 wait 的区别,sleep不会释放资源,wait会释放资源
6️⃣、聊一下锁吧(因为在聊线程并发的时候,我总是提到锁的问题,所以面试官就顺着聊了)
6.1 聊一下 乐观锁 和 悲观锁‼️
CAS 什么原理,属于什么,Java中哪些操作使用了CAS,CAS是否是原子性的,如何规避ABA的问题(这个是我自己提的,但是我忘了怎么解决了,扣分-1)
6.2 聊一下 公平锁 和 非公平锁‼️
自己聊到了 reentrantLock 是怎么实现公平锁和非公平锁的 (参数设置true / false),
synchronized 是公平的吗(这里又聊错了扣分-1,synchronized是非公平锁,这意味着在多个线程竞争同一个锁的时候,锁的分配是随机的,不能保证先等待的线程先获得锁)
(非公平锁的实现更加简单,不需要维护一个复杂的等待队列和公平调度机制,减少锁实现中的开销)
#软件开发笔面经#