大家好,我是鸭鸭。
如果给你月薪涨 80%,总包涨 35%,但是新工作需要 11+11+6,你会接这个 offer 吗?
起因是鸭鸭今天刷到了这样一个帖子:
楼主表示“吓人啊”,可见这样的涨幅确实超乎预料。
当然不排除这位候选人之前薪资低于市场价的情况,但如今的行情大家都懂的。
所以说拼多多拼起来是真狠,但它也真敢给。
我们常说想要 work life balance,事实是,在人生的不同阶段,总是会有不同的优先级。刚毕业的时候别说 80% 了,多给 2000 块鸭鸭就直接冲了。而有了一定的积累后,让人心动的价码则开始因人而异。
如果是你的话,你会怎么选?
……
话说想要拿 80% 的涨薪,面试时八股文总不能答不出来。通关面试鸭,帮你吊打面试官!
先从今天这道题开始吧。
Java 中 wait() 和 sleep() 的区别?
重点回答
wait()
和 sleep()
都是用于暂停线程的操作,但它们有明显的区别(先说面试官最关心的):
1)使用要求不同:
wait()
方法必须在同步块或同步方法内调用,否则会抛出IllegalMonitorStateException
。这是因为wait()
依赖于对象锁来管理线程的等待和唤醒机制。调用后,当前线程会释放它持有的对象锁,并进入等待状态。sleep()
方法可以在任何上下文中调用,不需要获取对象锁。调用后,线程会进入休眠状态,但不会释放它持有的任何锁。
2)方法所属类不同:
wait()
:属于Object
类。sleep()
:属于Thread
类。
3)恢复方式不同:
wait()
:需要被其他线程通过notify()
或notifyAll()
显式唤醒,或被wait(long timeout)
的超时参数唤醒。sleep()
:在指定时间后自动恢复运行,或通过抛出InterruptedException
恢复。
4)用途不同:
wait()
:通常用于线程间通信,配合notify()
或notifyAll()
来实现线程的协调工作。sleep()
:用于让线程暂停执行一段时间,通常用于控制线程的执行频率或模拟延时。
扩展知识
常见错误:
- 误用
sleep()
:有时开发者会错误地使用sleep()
进行线程间通信,但是sleep()
不释放锁,可能会导致其他线程无法进入同步块,造成线程饥饿或死锁。 - 忽略中断:
sleep()
可能抛出InterruptedException
,如果不正确处理中断信号,可能会导致线程提前退出或错误行为。
鸭鸭现在做的面试刷题神器面试鸭 ,已经6000题了!欢迎大家来刷题!
我是鸭鸭,我们下期见!