Java|面试官:开口要25K,我就用了2成功力,把你问到怀疑人生(Java)( 二 )
程序员:额...没有
面试官:我看你说对并发编程有些了解 , 你能跟我讲一下Synchronized和Lock锁它的底层实现原理吗?
程序员:啊....Synchronized是一个语义级的支持 , 它在一个对象头里面 , 它有一个Mark Word的标记去记录它的锁 , Lock显示锁是利用了它底层是一个AQS , 它式一个双向链表的先进先出的一个队列 , 它只有当前持有锁的线程就是一个对头 , 然后它释放出来之后 , 就会利用一个自旋的操作 , 让下一个线程作为队头这样子
面试官:那它们两个分别是什么层面的呢 , 是jdk层面还是JVM层面 , 还是?
程序员:Synchronized是JVM层面的 , Lock是jdk层面的
面试官:刚刚你说到了Synchronized , 你有去了解过它锁方法、锁对象和锁代码块分别是怎么去实现的吗?
程序员:额.....这个没有
面试官:那你了解Synchronized锁升级过程吗?
程序员:没有....
面试官:那刚刚提到了Lock , CAS你能给我简单的介绍一下吗?
程序员:CAS就是比较并交换
面试官:恩恩 , 提到这点就可以了 , 那你有在实际开发过程中有实际的一些应用吗?应用到乐观锁的一个过程
程序员:有的 , 就譬如 , 我在更新数据库的时候 , 如果一个数据库用的是乐观锁的话 , 我也用一个自旋的操作 , 就把他更新到成功为止
面试官:自旋的效率会不会很低?如果一直取不到这个锁的话 , 那可能会造成一些线程堵塞 , 或者在高并发场景下其他的会影响到很多效率 , 有考虑到这个问题吗?
程序员:也考虑到了.....如果并发高的时候确实不太适用用自旋 , 这个时候更适合用悲观锁
面试官:那跟我聊一下线程池吧
程序员:线程池是.....我还是先说一下它的工作流程 , 再变成先提交进来 , 它先进入核心吃里面 , 如果线程书大于coreSize , 就会进入一个阻塞队列 , 阻塞队列满了后就会新建一些线程 , 进入最大的池里面;当线程数 , 连maxSize的超出了之后 , 它就会执行一个拒绝策略 , JDK自带的拒绝策略有四种:一种是直接丢弃;一种是抛异常;一种是由调用者的线程执行;一种是丢弃阻塞队列里面等待时间最长的一个线程
面试官:我看你简历上还提到了熟练掌握JVM调优的知识 , 我能问一下你了解它调优的一些基本步骤吗?
程序员:啊....一口老血 , 调优的基本步骤....就譬如 , 我从...恩..我从OOM说起吧....如果生产上发生一个OOM异常 , 首先是要判断它是在堆里面发生的还是元空间里面 , 还有......它还有一种类型就是GC效率过低.....吧啦吧啦
注意:由于内容过多 , 避免影响到阅读体验 , 下面的面试环节我就不码字了 , 全以截图代替了!
面试官:我看你基本上都是待了一年就离职了 , 你能说一下你离职的原因吗?
程序员:.........
面试官:你对自己职业规划大概是什么样的?
程序员:往互联网金融行业走
面试官:你有什么想问我的?
程序员:问了一些之前没太懂的
面试总结:从这场面试官中可以看出 , 面试官没有深问 , 不然估计80%的内容都答不上来 , 基本上都是偏基础的东西 , 底层的内容没有怎么问 , 写了个Dubbo在简历上 , 面试官都没有问他Spring Cloud , Hystrix容器这些 , 连bus都可以问出一堆东西 , 一旦问了真的就只有尴尬了 , 问到怀疑人生 。
如何备战面试首先 , 像这位朋友一样 , 可以去投一些小公司的简历 , 去面试扫盲 , 看看哪些东西不会 , 欠缺哪些知识 , 然后回家做面试复盘 。
针对自己简历做优化 , 不要搞得写了一个Dubbo , 然后面试官稍微往深一点问你就答不出来了 。 简历上注意以下三点:
(1)注意区分:了解 , 熟悉 , 精通 , 不要乱写 , 面试官很多问题都是根据简历描述来进行的;
- Java|淘宝商家要小心了!取消的“中差评”体系又回来啦!
- javascript|游戏开发之旅-JavaScript重新介绍
- Java|java多线程并发小demo
- Java|java程序猿如何才能走远,怎么做自己的职业规划
- 蚂蚁花呗|血亏!阿里P8轻易把总结了近一年的java高级特性笔记送人了
- jvm|清纯小学妹连续被三个大汉硬怼:JVM学成这样,还敢来面试?
- 百度|Java高级进阶多线程学习之路(七)ThreadLocal
- javascript|家里宽带是300M的,但是实际测速才2M应该这样维权。
- 社交|十一国庆过后,秋招Java岗,陆续收到字节/招银等offer
- Java|Java面试之基础问题答案口述整理