Java编程笔试面试题

news/2024/7/5 1:20:16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.常用中间件RabbitMQ,kafka等,原理、区别、优缺点。

RabbitMQ是一个AMQP实现,传统的messaging queue系统实现,基于Erlang。老牌MQ产品了。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量还在其次。

Kafka是linkedin开源的MQ系统,主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输,0.8开始支持复制,不支持事务,适合产生大量数据的互联网服务的数据收集业务。

2.Lock 和 synchronize 实现原理与区别。简述乐观锁悲观锁。分布式锁实现方式

synchronized是托管给JVM执行的,而lock是java写的控制锁的代码。synchronized在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。

但是 Lock 的话就享受不到 JVM 带来自动的功能,出现异常时必须在 finally 将锁释放掉,否则将会引起死锁。在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,synchronized是很合适的。原因在于,编译程序通常会尽可能的进行优化synchronize。

分布式锁实现方式:基于数据库实现,基于缓存(Redis,memcached,tair)实现,基于Zookeeper实现。

3.Redis和memcache区别

Memcached和Redis都能很好的满足解决我们的问题,它们性能都很高,总的来说,可以把Redis理解为是对Memcached的拓展,是更加重量级的实现,提供了更多更强大的功能。具体来说:

a.性能上:

性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。

b.内存空间和数据量大小:

MemCached可以修改最大内存,采用LRU算法。

Redis增加了VM的特性,突破了物理内存的限制。

c.操作便利上:

MemCached数据结构单一,仅用来缓存数据

Redis支持更加丰富的数据类型,也可以在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积。

d.可靠性上:

MemCached不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的。

Redis支持数据持久化和数据恢复,允许单点故障,但是同时也会付出性能的代价。

e.应用场景:

Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。

Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。

转载于:https://my.oschina.net/javafirst/blog/1934078


http://www.niftyadmin.cn/n/2205360.html

相关文章

PC端与移动端也适配

用这段&#xff1a; <meta http-equiv"x-ua-compatible" content"IEedge,chrome1" />没有效果再用下面的&#xff1a;<!-- <meta http-equiv"x-ua-compatible" content"IEedge,chrome1" /><meta http-equiv"Co…

教育单元测试mock框架优化之路(中)

转载&#xff1a;https://sq.163yun.com/blog/article/169564470918451200 三、间接依赖的bean的mock替换 对于前面提供的Mock&#xff0c;SpyInjectMocks的方案&#xff0c;通过了解其源码实现可以发现&#xff0c;存在无法解决间接依赖bean的mock替换问题。还是拿前面的Order…

使用docker和nginx搭建一个下载服务器

2019独角兽企业重金招聘Python工程师标准>>> 概述 这个是以前在公司搞得,因为公司的软件包比较大,然后每次在本地传给客户的时候很慢,一般要一天才可以传完,之后决定把软件包放到别的地方让用户自己下载,要求下载服务器有下面几个需求 支持断点续传支持密码访问支持…

vue回到顶部

方法一&#xff1a;gototop() {let distance document.documentElement.scrollTop || document.body.scrollTop; //获得当前高度let step distance / 30; //每步的距离(function jump() {if (distance > 0) {distance - step;window.scrollTo(0, distance);setTimeout(jump…

WPF 引用 ttf文件

原文:WPF 引用 ttf文件1、在 http://www.iconfont.cn/ 下载图标&#xff0c;将图标加入购物车中&#xff0c;统一下载 2、下载到本地&#xff0c;解压后文件夹如下图。打开 demo_unicode.html 可以查看下载的图标信息和引用方式 3、WPF项目添加iconfont.ttf。 4、WPF XAML 引用…

elasticsearch重建索引

1、重建索引 一个field的设置是不能被修改的&#xff0c;如果要修改一个Field&#xff0c;那么应该重新按照新的mapping&#xff0c;建立一个index&#xff0c;然后将数据批量查询出来&#xff0c;重新用bulk api写入index中 批量查询的时候&#xff0c;建议采用scroll api&…

WPF自定义控件 使用阿里巴巴图标

原文:WPF自定义控件 使用阿里巴巴图标上一篇介绍了 WPF自定义控件 按钮 的初步使用&#xff0c;在进一步介绍WPF自定义控件 按钮之前&#xff0c;先介绍一下如何在WPF项目中使用阿里巴巴图标&#xff0c;方便以后做示例。 1.还是在上一篇项目基础上&#xff0c;在WPF自定义控件…

一个可暂停的飘窗

<!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>飘窗三可暂停</title><style type"text/css">div#roll {width: 200px;height: 200px;back…