【美团大数据面试】Java面试题附答案

目录

1.多线程代码示例

2.单例代码示例

3.LinkedBlockingQueue原理解析

4.模板设计模式讲解

5.生产者-消费者队列设计方法

6.堆内存和栈内存的区别

7.ThreadLocal底层机制

8.synchronized原理,存在的问题,解决方案

9.volatile使用场景和原理,与synchronized的差异

10.Java内存模型解析

11.hashtable、hashmap性能提升方法

12.redis缓存问题解决方案

13.布隆过滤器原理

14.多线程实现方式和差异

15.线程池的作用和实现方法


1.多线程代码示例

java使用多线程的三种方式:

  1. 继承Thread类,并重写run方法。
  2. 实现Runnable接口,重写run方法
  3. 实现Callable<返回值>接口,重写call方法

参考:java多线程使用详解与案例,超详细-CSDN博客

2.单例代码示例

 参考:java单例模式——详解JAVA单例模式及8种实现方式_单例模式java实现-CSDN博客

3.LinkedBlockingQueue原理解析

LinkedBlockingQueue是一个由链表实现的有界队列阻塞队列。

LinkedBlockingQueue是一个基于链表的阻塞队列,其内部维持一个基于链表的数据队列,实际上我们对LinkedBlockingQueue的API操作都是间接操作该内部数据队列。


4.模板设计模式讲解

模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
简单说,模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤,这种类型的设计模式属于行为型模式。

参考:Java设计模式——模板方法模式【Template Method Pattern】_java 模板模式-CSDN博客

Java设计模式之(十三)——模板方法模式-腾讯云开发者社区-腾讯云


5.生产者-消费者队列设计方法

生产者消费者队列,顾名思义,就是一个队列,不停地有生产者在里面生产对象并通知阻塞的消费者可以消费了,如果队列满了,生产者就阻塞不能再生产;消费者来消费(也就是读取并拿走队列里的对象)并通知阻塞的生产者,直到把队列消费空,就阻塞不能再消费。

生产者消费者问题(Producer-consumer problem),也称有限缓冲问题(Bounded-buffer problem),是一个多线程同步问题的经典案例。生产者生成一定量的数据放到缓冲区中,然后重复此过程;与此同时,消费者也在缓冲区消耗这些数据。生产者和消费者之间必须保持同步,要保证生产者不会在缓冲区满时放入数据,消费者也不会在缓冲区空时消耗数据。不够完善的解决方法容易出现死锁的情况,此时进程都在等待唤醒。
 

参考:Java多种方式解决生产者消费者问题(十分详细)_生产者消费者问题java-CSDN博客Java并发编程(1)—— 实现一个生产者消费者队列(三种方式)_java 消费者生产者队列-CSDN博客


6.堆内存和栈内存的区别

Java堆内存

堆内存在Java运行时被使用来为对象和JRE类分配内存。不论什么时候我们创建了对象,它将一直会在堆内存上创建。垃圾回收运行在堆内存上来释放没有任何引用的对象所占的内存,任何在堆上被创建的对象都有一个全局的访问,并且可以在应用的任何位置被引用。

Java栈内存

Java的栈内存被用来线程的执行,他们包含生命周期很短的具体值的方法和在堆中使用这个方法对象的引用。栈内存是LIFO(后进先出)序列。当方法被调用的时候,堆内存中一个新的块被创建,保存了本地原始值和在方法中对其他对象的引用。这个方法结束之后,这个块对其他方法就变成可用的了。栈内存与堆内存相比是非常小的。

我们用下边的例子理解堆内存和栈内存


7.ThreadLocal底层机制

ThreadLocal就是我们俗称的线程本地变量,它常用来做数据隔离,填充的数据只属于当前线程。变量的数据对别的线程而言是相对隔离的,在多线程环境下,能够防止自己的变量被其它线程篡改。

ThreadLocal顾名思义可以根据字面意思理解成线程本地变量。也就是说如果定义了一个ThreadLocal,每个线程都可以在这个ThreadLocal中读写,这个读写是线程隔离的,线程之前不会有影响。
每个Thread都维护自己的一个ThreadLocalMap ,所以是线程隔离的。
 

参考:JAVA并发编程---ThreadLocal底层原理全解析_inhertablethreadlocal底层原理-CSDN博客

java 浅谈ThreadLocal底层源码(通俗易懂) - 知乎

ThreadLocal底层实现原理详解 - 掘金


8.synchronized原理,存在的问题,解决方案


9.volatile使用场景和原理,与synchronized的差异


10.Java内存模型解析


11.hashtable、hashmap性能提升方法


12.redis缓存问题解决方案


13.布隆过滤器原理


14.多线程实现方式和差异


15.线程池的作用和实现方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/297295.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中使用数据库可视化操作工具

文章目录 1.入门介绍2. 没有数据库驱动3. 准备&测试连接3.1测试报错 4.连接5.编写SQL语句 1.入门介绍 在IDEA的专业版的右侧工具栏应该会有DataBase按钮如果没有的同学可以这样操作(必须是IDEA专业版) 新建数据库 2. 没有数据库驱动 如果提示: missing driver files ,…

小狐狸ChatGPT付费创作系统 安装或者升级后出现404错误无法登陆或一直提示解决办法

近几天很多会员安装或者升级小狐狸ChatGPT付费创作系统至2.1.8版本&#xff0c;不管打开超管后台或者站点管理后台都出现404的错误提示&#xff0c;或者新安装登陆超管后台还是提示未登陆状态。近几天将系统安装至多台服务器多个站点测试均出现以下提示&#xff0c;重启了服务器…

C# float/double 减 float/double 等 (X.xxxxxxxxxxxxxE-07)(黑盒测试)

问题 因为没有深究原理&#xff0c;所有只进行了“黑盒测试” 黑盒测试结论&#xff1a; 问题操作结论float/double运算进过一系列的运算后大概率 &#xff01; 0.0 &#xff0c; 而是等于0.00000000000xxxx等于X.xxxxxxxx一串数字的时候不影响下一步继续使用当需要显示fl…

Django之按钮(actions)

开篇就是道歉&#xff0c;哈哈哈哈&#xff0c;托更了好久好久&#xff0c;最近太忙了没啥时间更新&#xff0c;各位看官有催更的阔以给我私信哇&#xff0c;希望各位看官给个三连&#xff01;&#xff01;&#xff01;&#x1f60d;&#x1f60d;&#x1f60d;&#x1f60d; …

SLAM算法与工程实践——SLAM基本库的安装与使用(6):g2o优化库(2)g2o编程框架

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

嵌入式 开发——DMA内存到外设

学习目标 加强理解DMA数据传输过程加强掌握DMA的初始化流程掌握DMA数据表查询理解源和目标的配置理解数据传输特点能够动态配置源数据学习内容 需求 串口发送数据 uint8_t data = 0x01; 串口发送(data); 实现串口的发送数据, 要求采用dma的方式 数据交互流程 CPU配置好DM…

10.2多点触摸屏驱动

多点电容触摸&#xff08;MT&#xff09;协议 多点电容触摸&#xff08;MT&#xff09;协议是 input 子系统的一部分&#xff0c; MT 协议被分为两种类型&#xff0c;分别是 Type A 和 Type B &#xff1a; Type A &#xff1a;适用于触摸点不能被区分或者追踪的设备&#xf…

【Java】springboot

文章目录 Spingboot1、起步依赖2、构建springboot工程jar包3、springboot配置文件4、多环境配置5、maven和boot多环境兼容问题6、配置文件分类7、springboot整合mybatis Spingboot springboot用来简化spring的初始搭建以及开发过程。 比方说&#xff0c;创建一个springmvc程序…

Ps2022版DR5插件扩展窗口不展示及未正确签署等问题修复

前言 最近在安装DR5的时候遇到了一些报错问题&#xff0c;翻看了几篇文章找了一些实质性的方案&#xff0c;亲测有效&#xff0c;有同样问题的小伙伴自己对号入座哈。 窗口扩展不显示问题 问题 很多人第一次安装DR5时会发现这个【窗口-扩展】是灰色的&#xff0c;且没有DR5…

class087 动态规划中根据数据量猜解法的技巧【算法】

class087 动态规划中根据数据量猜解法的技巧【算法】 2023-12-24 14:36:06 算法讲解087【必备】动态规划中根据数据量猜解法的技巧 code1 打 怪 兽 // 贿赂怪兽 // 开始时你的能力是0&#xff0c;你的目标是从0号怪兽开始&#xff0c;通过所有的n只怪兽 // 如果你当前的能力…

35c3 krautflare

参考这篇文章可以彻底了解本题的漏洞所在 https://xz.aliyun.com/t/6527 由于Math.expm1经过patch以后的返回值不可能是-0&#xff0c;但是patch的地方是在typer优化中&#xff0c;所以实际上如果没有优化的话是可以返回-0的&#xff0c;这就意味着如果我们先不停地Math.expm1…

【C++】unordered_set/unordered_multiset/unordered_map/unordered_multimap

我们下面来学习C的另外两个容器&#xff1a;unordered_set和unordered_map 目录 一、unordered系列关联式容器 二、unordered_map 2.1 unordered_map的介绍 2.2 unordered_map的接口说明 2.2.1 unordered_map的构造 2.2.2 unordered_map的容量 2.2.3 unordered_map的迭…