面试: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关键字是用来保证有序性和可见性的。


相关文章
|
13天前
|
设计模式 Java 数据库
持续霸榜GitHub的面试神器:字节跳动Java面试参考手册,限时开源
最近又赶上跳槽的高峰期(招聘旺季),好多读者都问我有没有面试字节的神器,我苦苦寻到了一份内部资料《2023字节跳动Java面试参考手册(第二期)》。
|
13天前
|
消息中间件 Dubbo Java
GitHub标星翻倍!阿里大牛呕心沥血终成39w字Java面试笔记
好不容易有个大厂面试机会,面试官才问了两三个问题,就已经回答不上来的,只想找个地缝钻进去,连进入技术面的机会都没有,现在大厂都在大量招聘Java工程师,但面试题怎么都这么难?!
|
17天前
|
设计模式 Dubbo NoSQL
6年Java经验,4面阿里定级P7,多亏阿里13万字+脑图+源码面试笔记
互联网公司的面试,从形式上说,一般分为 2~3轮技术面 +1 轮 HR 面,不过某些公司没有 HR 面试。 在技术面试中,面试官一般会就你所应聘的岗位进行相关知识的考察,也叫基础知识和业务逻辑面试,只要回答的不是特别差,面试官通常会继续跟你聊聊项目,这个时候就开始了项目面试。
|
20天前
|
存储 网络协议 安全
探索Java通信面试的奥秘:揭秘IO模型、选择器和网络协议,了解面试中的必备知识点!
通过深入探索Java通信面试的奥秘,我们将揭秘Java中的三种I/O模型(BIO、NIO和AIO)、选择器(select、poll和epoll)以及网络协议(如HTTP和HTTPS),帮助您了解在面试中必备的知识点。这些知识点对于网络编程和系统安全方面的求职者来说至关重要,掌握它们将为您的职业发展打下坚实的基础!
|
20天前
|
存储 安全 Java
Java并发篇:6个必备的Java并发面试种子题目
文章涉及了几个常见的并发编程相关的主题。首先,线程的创建和生命周期是面试中常被问及的话题,面试官可能会询问如何创建线程、线程的状态转换以及如何控制线程的执行顺序等。其次,synchronized关键字是用于实现线程同步的重要工具,面试中可能会涉及到它的使用场景以及与其他同步机制的比较。此外,抽象队列同步器(AQS)是Java并发编程中的核心概念,了解其原理和应用场景可以展示对并发编程的深入理解。最后,面试中可能会考察对Java线程池和Fork/Join框架的了解,包括它们的使用方法、优势和适用场景等。种子题目务必学会
|
20天前
|
算法 Java 程序员
百度T4幕后揭秘!这份Java面试全栈手册竟让面试官节节败退
当前Java程序员的群体比较庞大,Java本身语言是全场景编程语言,所以不少大厂都要求Java程序员具有全栈开发能力和多场景开发能力,还有就是 当前大厂在不断进行结构升级,构建自身的技术平台(生态)是非常重要的,所以你只能提升自身技术来适应当前的残酷的大环境,相信适者生存这个道理大家还是懂的。
|
22天前
|
算法 Java 程序员
这份Java面试指南在GitHub上超百万下载量!现惨遭大厂集体封杀
作为程序员,你反感面试的时候做题吗?有很多公司在面试中都会有让求职者现场做题的环节,尤其是与开发相关的岗位,比较常见。
|
23天前
|
消息中间件 设计模式 分布式计算
大厂招聘重点全在这!GitHub置顶Java基础-高级面试库+自学路线
最近几年经常会听见这样一种声音:“程序员是吃青春饭的,年龄一大就不吃香了”,在当下这种互联网产业增速放缓,甚至隐约展现出疲态的时刻,此类言论就很有市场。
|
23天前
|
NoSQL Java 关系型数据库
大环境逐渐好转,Java 岗先爆了!大厂后端Java面试宝典合集需要吗
上半年大家听到“就业大环境很差”、“工作不好找”之类的太多了。如今大环境已经逐渐好转,虽然不需要太过焦虑,但是也要持续的提升自己。
京东新招1.5W!互联网工程师Java面试知识精华已助1500人成功入职
就在上周,京东官媒宣布,2024 届校招正式启动,并且新招 15000 人。
相关产品
云迁移中心
推荐文章
更多