2016 - 2024

感恩一路有你

hashmap添加和扩容的顺序 java面试必问题你在项目中碰到过什么问题?

浏览量:1978 时间:2023-06-11 18:57:12 作者:采采

java面试必问题你在项目中碰到过什么问题?

"如果做HashMap的扩展,如何在不影响读写的情况下实现扩展? "我认为把门槛推高并不是体现在刁钻问题的数量和知识的深度,而是一个非常清晰明确的问题,可以考察面试官 的各种能力。这个问题背后:

1.了解HashMap在java中的实现;如果面试官知道这一点,说明他至少关心过java提供的数据类型的实现,甚至很可能看过源代码,他应该不是一个纯粹的苦力。

2.知道 amp的意思在不影响读写的情况下扩展容量表明他了解工作中的多线程。

3.如果他能在concurrentHashMap中提到相关内容,说明他在日常编程中使用了并发包,他可以继续讲下去,否则他对多线程的使用可能很初级。

4.如果他能想出一些解决方案,哪怕是不完整的,也能看出他对cas、分布式一致性之类算法的理解。这个问题是面试官问的...

写个例子说明HashMap线程不安全?

谢谢你邀请我!让 s介绍一下jdk 1.7扩展的死循环问题!

HashMap扩展源代码如下:

r

map扩容为什么是2倍?

Map计算添加元素的位置,使用位运算,效率特别高;另外,HashMap的初始容量是2的幂,容量也以2倍的形式扩展,因为容量是2的幂,这样可以使添加的元素均匀分布在HashMap中的数组上,减少哈希碰撞,避免形成链表结构,降低查询效率。

hashmap和hashtable的区别?

hashmap和hashtable的区别

1.继承的父类是不同的

Hashtable从Dictionary类继承,HashMap从AbstractMap类继承。但是两者都实现了Map接口。

2.线程安全是不同的

javadoc中hashmap的描述如下:这个实现是不同步的。如果多个线程同时访问一个哈希映射,并且其中至少有一个线程在结构上修改了该映射,那么它必须保持外部同步。

Java工程师是如何使用Redis的?

不仅仅是Java工程师,基本上所有平台开发工程师都需要使用redis,主要是作为缓存而不是memcached。

因为涉及到底层,Redis是C语言中可以快速读写的工具。但是在实际中,Java、PHP、Python等编程语言都可以使用Redis。这种良好的语言扩展性使得Redis在原有的memcached缓存中迅速领先。领地占领了城市,很快划定了自己的圈地。

Redis最突出的优点是极快的读写速度,可以作为服务器和MySQL之间的缓存,也可以作为分布式集群系统中多台服务器之间的缓存。

接下来简单介绍一下以上两种情况。

服务器和MySql之间的缓存是众所周知的。虽然MySQL可以在索引的帮助下提高查询速度,但是如果所有的用户 的阅读请求取自MySQL。在这种场景下,如果将一段时间内频繁读取的数据提前放入redis,利用其读取速度快的优势,一方面减轻MySQL读取数据库的压力,另一方面可以加快用户端感受到的页面访问速度。例如,情人节 s日快到了,大众点评直接把花店、送花等信息放在缓存里,肯定能大大减轻MySQL的阅读压力。

此外,在某些场景下,有些数据需要多次修改才能完全入库。在修改过程中间,如果每次都要修改MySQL,也会增加对MySQL的读写压力。此时如果使用Redis存储中间状态,可以进一步缓解MySQL上的读写压力,从而提高整体服务的稳定性。

出于可扩展性和稳定性的考虑,一些集群规模的服务通常有多个功能相同的Tomcat。因此,如果一个任务由两个步骤组成,第一步是用户启动任务,第二步是用户在Tomcat给出反馈后单击OK,然后继续处理。此时,一个用户发送了一个任务,这个任务在第一步中由一个Tomcat处理,然后反馈给用户。用户单击OK后,请求被发送到BotomCat。作为一个僵尸猫,它也受到了蒙蔽。因为它不能和雄猫交流,所以它没有 我不知道前因后果。

此时,如果服务器之间没有缓存,该任务将不会继续。

有了server之间的缓存,Tomcat在处理完第一步之后,会在redis中记录自己做了什么,然后需要执行第二步的时候,不管请求是给A还是B,只需要在redis中读取下一步的记录就可以继续了。

这就是服务器间缓存的意义。

以上只是我举的一个很简单的例子,希望能帮助你理解和明白redis并不局限于JAVA语言。

我 m Susie,来自BAT的Java开发工程师。我每天都分享我的科技知识。欢迎关注我,和我一起进步。

HashMap MySQL 缓存 redis 压力

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。