Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。

Java

面试官:说的还可以,那你知道volatile底层的实现机制?

如果把加入volatile关键字的代码和未加入volatile关键字的代码都生成汇编代码,会发现加入volatile关键字的代码会多出一个lock前缀指令。

lock前缀指令实际相当于一个内存屏障,内存屏障提供了以下功能:

1.重排序时不能把后面的指令重排序到内存屏障之前的位置2.使得本CPU的Cache写入内存3.写入动作也会引起别的CPU或者别的内核无效化其Cache,相当于让新写入的值对别的线程可见。

面试官:你在哪里会使用到volatile,举两个例子呢?

状态量标记,就如上面对flag的标记,我重新提一下:

 inta=0;volatileboolflag=false;publicvoidwrite(){a=2;//1flag=true;//2}publicvoidmultiply(){if(flag){//3intret=a*a;//4}}这种对变量的读写操作,标记为volatile可以保证修改对线程立刻可见。比synchronized,Lock有一定的效率提升。2.单例模式的实现,典型的双重检查锁定(DCL)classSingleton{privatevolatilestaticSingletoninstance=null;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){synchronized(Singleton.class){if(instance==null)instance=newSingleton();}}returninstance;}}

这是一种懒汉的单例模式,使用时才创建对象,而且为了避免初始化操作的指令重排序,给instance加上了volatile。

扫码免费领取Java精品面试题

大企业中,Java面试官最爱问的问题集锦相关推荐

  1. 大企业中,Java面试官最爱问的问题集锦(2)

    Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言.如今Java已经广泛应用于各个领域的编程开发. java 面试官:volatile的两点 ...

  2. Java面试官最爱问的垃圾回收机制,Java编程配置思路详解

    Java编程配置优点:相对于xml配置而言,其结构更清晰,可读性更高,同时也节省了解析xml耗时. Java编程配置缺点:修改应用配置参数需要重新编译.其实并不是一个大的问题,实际生成环境中,应用配置 ...

  3. Java面试官最爱问的垃圾回收机制,这位阿里P7大佬分析总结的属实到位

    可达性分析算法:判断对象的引用链是否可达 可达性分析算法是通过判断对象的引用链是否可达来决定对象是否可以被回收. 可达性分析算法是从离散数学中的图论引入的,程序把所有的引用关系看作一张图,通过一系列的 ...

  4. Java面试官最爱问的垃圾回收机制,mysql密码忘记

    一.硬核! 30张图解HTTP常见面试题 在面试过程中.HTTP被提问的概率还是比较高的. 小编我授集了5大类HTTP面试常问的题目,同时这5大类题跟HTTP的发展和演变关联性是比较大的,通过问答+图 ...

  5. Java面试官最爱问的垃圾回收机制,mysqlssl连接

    说在前面 已经到了月中旬了,程序员们即将迎来面试季,今天刚好有一位粉丝找到我,他上周刚面完奇虎360,经过了几轮的面试,最后薪资也谈了,今天主要是问我想这样的大型互联网公司一般多久会正式下offer. ...

  6. 安卓中那些 面试官 最爱问的看似简单实则暗藏玄机的问题(一)

    Java 的 char  是两个字节,如何存  UTF-8 的字符? char是 2 个byte,UTF-8 是 1-3 个byte, 1.Java char 不存在 UTF-8的字节,而是 UTF- ...

  7. 面试官最爱问的并发问题

    转载自  面试官最爱问的并发问题 在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模型(J ...

  8. 面试官最爱问的Redis(三)Redis的基本知识

    面试官最爱问的redis,继续整理了Redis的学习笔记,动力节点的redis视频,13个小时搞定redis,笔记分享给大家. 视频资源:https://www.bilibili.com/video/ ...

  9. java 实体类包含list 怎么取值_舅舅是面试官,偷偷告诉你们面试官最爱问的Java面试题...

    2015 年,因为工作岗位的变动,舅舅开始负责给集团招聘一些技术人员,出于对公司的负责,也为了更好的胜任技术经理的职位,在面试的这件事上,舅舅做了大量的"功课",首先研究了几乎所有 ...

最新文章

  1. 【TensorFlow2.0】(4) 维度变换、广播
  2. Python-ORM实战
  3. Tensorflow实例:(卷积神经网络)LeNet-5模型
  4. 将整型字符串转成整数值
  5. Ubuntu18.04安装Scala
  6. [No0000119]什么是柳比歇夫的时间事件记录法
  7. Linux基础(5)--Linux常用命令表
  8. sqlite 复合唯一索引_SQLite 索引(Index)
  9. 都市男女的32声叹息
  10. 如何完整卸载wxpython_TextCtrl的WXPython C++部分被删除
  11. 前端工程师凭什么这么值钱?
  12. php mysql预约_PHP+MySQL实验室预约管理系统的设计与实现
  13. github webhook php,github 利用webhook配置代码自动发布
  14. mysql中存储过程和函数区别
  15. FL Studio下载2020水果软件注册机音频剪辑功能讲解教程
  16. 高速列车横向17自由度模型
  17. SameSite 属性
  18. [Maven实战-许晓斌]-[第三章] Mave使用入门二(在IDE中的使用) [第四章] 案例的背景介绍...
  19. gethub连接的提示
  20. 还在原地踏步,提高软件测试能力的方法你知道吗?

热门文章

  1. [转载] C++11初始化列表与参数列表的作用
  2. [转载] LeetCode题解(面试16.22):兰顿蚂蚁(Python)
  3. [转载] Python一行代码实现1到100之和
  4. [转载] Go语言的自重写程序
  5. [转载] python之flask框架
  6. [转载] JAVA中分为基本数据类型及引用数据类型
  7. [转载] java中final,finally,finalize三者的作用和区别
  8. 基本概念----Beginning Visual C#
  9. python socket 连续send,出现粘包问题
  10. JSON.stringify的三个参数(转载)