转载:https://mp.weixin.qq.com/s/M8YyxloxZnMACH9QCQN7HA Volatile的特征: A.禁止指令重排(有例外) B.可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存. 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量. Volatile的重排序 1.当第二个操作为volatile写操做时,不管第一个操作是什么(普通读写…
Volatile的特征: A.禁止指令重排(有例外) B.可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存. 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量. Volatile的重排序 1.当第二个操作为volatile写操做时,不管第一个操作是什么(普通读写或者volatile读写),都不能进行重排序.这个规则确保volatile写之前的所有操作都不会被重排序到…
上周陪同之前一起工作的同事去面试(乔治,小袁,鹏飞(面试人)),第一站是去深圳,第二站上海,第三站杭州.面试什么公司我在这里就不多说了,你们知道是一线公司就行.其实本来真的没打算写这篇文章,主要是自己的记忆力不是很好,再者是最近好多人询问2018年最新的面试题有点多,我实在回答不过来,而且怕为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 说实话,虽作为陪同人,面试的时候我是不可以一同进去面试的,鹏飞在面试完后出来也是凭借他模糊的记忆,来慢慢回忆当时HR问的几个问题,以下是我整理的一些…
前几天写了Java面试题汇总---基础版,总结了面试中常见的问题及答案,那我今天基于昨天的话题做一次升级,也就是说,求职者除了要学习了解哪些常见的基础面试题之外,还得准备些什么呢? 对有工作经验的求职者来说,项目经历也是一个重点.这个我想大家应该还是比较清楚,你要知道,一般招聘有经验的人,不是你投的,就是HR通过用人部门需求关键词搜索到你的.比如用人部门想招聘几个有分布式开发和电商项目经验的,那么HR可能会用“Dubbo”,“SpringCloud”,“电商”等关键词搜索.那你去面试,这些技术及…
我发现一个奇怪的现象:总是听到身边的程序员朋友谈论BAT(中国大陆互联网的三大巨头:百度.阿里.腾讯)以及如何进入BAT,却鲜少有测试会去谈论或者考虑这些问题. 我不知道这是为什么,或者我就算知道也只是片面的了解,所以我还不如不说,免得回头又来打自己的脸. 最近有幸与给阿里测试团队做过培训的骨灰级测试大神交流了一些有关测试的问题,正好也说到了这个问题. 这位大神并没有为我解释上面的问题,而是跟我说了一些BAT测试工程师所需要具备的素质.其实也是变相地从另外一个方面解答了我的疑惑. 那么下面我给大…
面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修…
经典的Java面试题(第二部分),这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI (Comm…
1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么. 继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类).继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的<Java与模式>或<设计模式精解…
今天继续为大家整理Java面试题,并涉及数据库和网络等相关知识,希望能帮助到各位开发者. 1,为什么要用spring,Spring主要使用了什么模式? spring能够很好的和各大框架整合,它通过IOC容器管理了对象的创建和销毁  工厂模式.在使用hiberna,mybatis的时候,不用每次都编写提交的事务的代码,可以使用spring的AOP来管理事务.AOP其实就是一个动态代理的实现(声明式事务和编程式事务). 主要使用了模式: 工厂模式:每个Bean的创建通过方法: 单例模式:默认的每个B…
第一阶段:三年我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发.我们知道如何团队协作.如何使用项目管理工具.项目版本如何控制.我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段. 第二阶段:五年五年又是区分程序员的第二个门槛.有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个C…