您现在的位置是:主页 > 澳门金沙手机版 > 壹线互联网微少见的14个Java面考试题,你颤抖了

壹线互联网微少见的14个Java面考试题,你颤抖了

时间:2018-12-09 14:12  来源:[db:来源]  阅读次数: 复制分享 我要评论

  跳槽不算频万端,但参加以度过不微少面试(电话面试、face to face面试),面度过父亲/小公司、互联网/传统绵软件公司,面糊度过(眼好顺手低,缺乏实战阅历,挂掉落),也面度过人,所幸不因违反败而沮丧,在此经过中时时查缺补养漏,养成了踏实、追铰究底儿子、持续改革的习惯,特此将己己己阅历度过、笔路度过的壹些面考试题记载上,假设恢复案拥有效实,乐当着拍砖讨论,期望能对找工干容许感志趣的同班拥有所僚佐,就续整顿理中。

  1. synchronized和reentrantlock异同

  相反点

  邑完成了多线程同步和内存放却见性语义

  邑是却重入锁

  不一点

  完成机制不一 synchronized经度过java对象头锁标注识表记标注帜和Monitor对象完成 reentrantlock经度过CAS、ASQ(AbstractQueuedSynchronizer)和locksupport(用于闭塞和摒除闭塞)完成 synchronized依顶赖jvm内存放模具保障包罗共享变量的多线程内存放却见性 reentrantlock经度过ASQ的volatile state保障包罗共享变量的多线程内存放却见性

  运用方法不一 synchronized却以修饰实例方法(锁住实例对象)、动态方法(锁住类对象)、代码块(露示指定锁对象) reentrantlock露示调用trylock()/lock()方法,需寻求在finally块中假释锁

  干用厚墩墩程度不一 reentrantlock供拥有限时间收听候锁(设置老壹套时间)、却中缀锁(lockInterruptibly)、condition(供await、signal等方法)等厚墩墩语义 reentrantlock供公允锁和匪公允锁完成 synchronized不成设置收听候时间、不成被中缀(interrupted)

  2. concurrenthashmap为什么读不用加以锁

  jdk1.7

  1)HashEntry中的key、hash、next 均为final 型,不得不表头拔出产、删摒除结点

  2)HashEntry类的value域被音皓为volatile型

  3)不容许用null干为键和值,当读线程读到某个HashEntry的 value域的值为null时,便知道产生了顶牾——突发了重排前言即兴象(put设置新value对象的字节码指令重排前言),需寻求加以锁后重行读入此雕刻个value值

  4)volatile变量count相商读写线程之间的内存放却见性,写操干后修改count,读操干先读count,根据happen-before转提交性绳墨写操干的修改读操干却以看到

  jdk1.8

  1)Node的val和next均为volatile型

  2)tabAt和casTabAt对应的unsafe操干完成了volatile语义

  3. ContextClassLoader(线程左右文类加以载器)的干用

  越度过类加以载器的副亲加委机制去加以载类,如serviceloader完成

  运用线程左右文类加以载器加以载类,要剩意保障多个需寻求畅通信的线程间的类加以载器应当是相畅通个,备止鉴于不一的类加以载器招致典型替换非日(ClassCastException)