准备面试五

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创建对象的效率比较高。通过反射时,先查找类资源,使用类加载器创建,过程比较繁琐,效率低。

posted @ 2019-07-08 17:08  我是一个菜鸟啊!  阅读(119)  评论(0编辑  收藏  举报