面试:Java基础 3-阿里云开发者社区

开发者社区> 一条coding> 正文

面试:Java基础 3

简介: 面试:Java基础 3
+关注继续查看

请你解释为什么会出现4.0-3.6=0.40000001这种现象?


计算机在计算10进制小数的过程中要先转换为2进制进行计算,这个过程中出现了误差。出现0.40000001的情况可以使用BigDecimal类解决


请你介绍一下map的分类和常见的情况


接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.


Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。


它根据键的HashCode值存储数据,遍历时,取得数据的顺序是完全随机的。


HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;


HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。


Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。


LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序


TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。


请你谈谈关于Synchronized和lock


synchronized是Java的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;synchronized修饰静态方法以及同步代码块的synchronized (类.class,需要获得类锁。synchronized修饰成员方法,线程获取的是当前调用该方法的对象锁。JDK1.5以后引入了自旋锁、锁粗化、轻量级锁,偏向锁来有优化关键字的性能。


Lock是一个接口,而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。


请你介绍一下volatile?

?

volatile关键字是用来保证有序性和可见性的。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9542 0
java基础之:java注解
一:元注解????? 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:  1.@Target,  2.@Retention,  3.@Documented,  4.@Inherited  这些类型和它们所支持的类在java.lang.annotation包中可以找到。
826 0
Java基础之003-Java语法
Java基础之003-Java语法 ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ?35岁学习Java 1Java语言基础组成 1.1关键字 1.2标识符 A.?????在程序中自定义的一些名称。
1267 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2933 0
Java 基础语法
基本语?法 2.1关键字? 关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
908 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13244 0
[Java 基础]方法
方法的定义 Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 语法 修饰符?返回值类型?方法名?(参数类型?参数名)?{????...????方法体????...????return?返回值;} ? 方法包含一个方法头和一个方法体。
444 0
[Java 基础]基础语法
Java代码基本规范 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
573 0
+关注
121
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载
http://www.vxiaotou.com