-
校招已经过去一年,在此挂出去年有赞校招面经,一轮卒 泪奔
-
sychronized 加两个sychronize可以吗? 和可重入锁有什么区别?
- synchronized拥有强制原子性的内部锁机制
- 在一个线程使用synchronized方法时调用该对象另一个synchronized方法,即一个线程得到一个对象锁后再次请求该对象锁,是永远可以拿到锁的
-
volatile
-
Java内存模型
-
如何实现一个双向链表?
-
AQS
- 同步器 多线程并发执行,通过某种共享状态来同步,只有当状态满足xxx条件时,才会触发线程执行xxx
- AQS框架如何构建同步器
- 功能
- 获取同步状态 如果允许,则获取锁,如果不允许就阻塞线程,直到同步状态允许获取
- 释放同步状态 修改同步状态,并且唤醒等待线程
- 需求
- 独占锁和共享锁两种机制。
- 线程阻塞后,如果需要取消,需要支持中断。
- 线程阻塞后,如果有超时要求,应该支持超时后中断的机制
- 独占模式
- tryAcquire 本身不会阻塞线程,如果返回 true 成功就继续,如果返回 false 那么就阻塞线程并加入阻塞队列
- 可中断时获取,取消,超时模式获取
- 共享模式
- 可以认为同步状态的维护、获取、释放动作是由子类实现的功能,而动作成功与否的后续行为时有AQS框架来实现。
- 功能
-
CAS
-
final 可以修饰类? 有什么好处?
-
finalize() 方法会触发GC吗
-
三次握手,四次挥手
-
有在Linux开发的经历?linux常用命令知道? 如何查看节点,查看cpu命令? grep知道吗 不知道。。。。。
-
git和svn有哪些区别? 平时怎么使用git fetch和poll命令
-
如何实现一个线程池?要注意哪些地方,线程超出最大容量如何处理?答了异常好像不满意
- JDK1.5中提供了4种策略:
- AbortPolicy 直接抛出异常
- CallerRunsPolicy 只用调用者所在线程来运行任务
- DiscardOldestPolicy 丢弃队列中最近的一个任务,来执行当前任务
- DiscardPolicy 不处理不丢弃
- JDK1.5中提供了4种策略:
-
线程的几种状态
-
Spring boot有哪些好处? 阅读过源码?
-
Spring在开发中用在哪里?Aop是如何实现的?
-
applicationContext BeanFactory了解吗?
-
可重入锁 ReentrantLock了解多少?
-
进程和线程的区别?
-
进程之间的通信有哪些?
-
死锁发生的条件?
-
重排序了解吗?
-
hashMap的get()实现,1.8比1.7有哪些改进?
- 首先计算 key 的 hashCode,找到数组中对应位置的某一元素,然后通过 key 的 equals 方法在对应位置的链表中找到需要的元素
-
equals()
-
ConcurrentHashMap? 和hashtable区别??
-
平时有关注技术论坛? 怎么学习? 写博客? github上有什么东西?
-
归并排序了解? 时间复杂度? 稳定性标准是什么?
-
java深拷贝 浅拷贝
- 浅拷贝:
- 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象
- Cloneable接口
- 深拷贝:
- 深复制把要复制的对象所引用的对象都复制了一遍
- 对象序列化 对象写入到一个字节流中,再从字节流中将其读出来
- 浅拷贝:
-
总结
- 对待问题的细节还不够深入
- 建议看一些jdk源码和spring源码,并思考为什么要这样做,触类旁通
有赞 校招 面经
最新推荐文章于 2022-06-07 14:22:19 发布