准备面试五

本文深入解析Java中volatile与synchronized的区别,探讨装箱拆箱操作,介绍B/S与C/S架构,阐述HTTP、FTP及POP3协议,解析Java数据结构如线性表、链表、栈、队列、图、树,并讲解OOP概念,以及类与对象的关系,隐式与显式转换,Java包装类,和反射与new创建对象的效率对比。

1、volatile和synchronized的区别
    1.volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中获取;synchronized则是锁定当前变量,只有该线程可以访问该变量,其他线程被阻塞。
    2.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、代码块和类级别的。
    3.volatile仅能实现变量的修改可见性,不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。
    4.volatile不会造成线程阻塞,synchronized可能会造成线程阻塞。
    5.volatile标记的变量不会被编译器优化;synchronized标记的变量可以被优化。
    6.volatile能保证数据的可见性,但不能保证数据的原子性(不能保证复合操作的原子性),synchronized即保证了数据的可见性,也保证了原子性。
2、装箱和拆箱操作发生在引用类型和值类型之间。
3、B/S(Browser/Server),浏览器/服务器程序       C/S(Client/Server),客户端/服务端,桌面应用程序
4、HTTP:超文本传输协议    FTP:文件传输协议      POP3:邮件读取协议
5、计算机保存,组织数据的方式叫做数据结构   ,Java的数据结构有哪些?
    线性表(ArrayList)     链表(LinkedList)      栈(Stack)      队列(Queue)
      图(Map)    树(Tree)
6、OOP面向对象编程,面向对象(万物都可以看成一个对象,把一个物体的特征抽象化)
7、类和对象的关系?
    类是对象的抽象,对象是类的具体,类是对象的模板,对象是类的实例。
8、什么是隐式转换,什么是显式转换
    显示转换就是类型强转,把一个大类型数据强制赋值给小类型数据;
    隐式转换就是大范围的变量能够接受小范围的数据;
    隐式转换和显示转换就是自动类型转换和强制类型转换。
9、Java中的包装类都是那些?
    byte:Byte short:Short int:Integer long:Long float:Float double:Double char:Character boolean:Boolean
10、Java反射创建对象效率高还是通过new创建对象的效率高?
    通过new创建对象的效率比较高。通过反射时,先查找类资源,使用类加载器创建,过程比较繁琐,效率低。

转载于:https://www.cnblogs.com/tk970803/p/11152402.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值