架构师必备之常见面试题整理——高性能三十问!

分布式架构(一)

大型互联网架构演进过程,架构师应具备的分布式知识,主流分布式架构设计详解

分布式系统

分布式系统是一个由硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。其拥有如下特点

  1. 分布性
  2. 对等性
  3. 并发性
  4. 缺乏全局时钟
  5. 故障总是会发生

(开心一笑)

分布式协调和分流(二)

Zookeeper分布式环境指挥官,Nginx高并发分流进阶实战

应用场景

Zookeeper的功能很强大,应用场景很多,结合我实际工作中使用Dubbo框架的情况,Zookeeper主要是做注册中心用。

基于Dubbo框架开发的提供者、消费者都向Zookeeper注册自己的URL,消费者还能拿到并订阅提供者的注册URL,以便在后续程序的执行中去调用提供者。而提供者发生了变动,也会通过Zookeeper向订阅的消费者发送通知。

Zookeeper有哪几种节点类型

持久节点(PERSISTENT)

所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。

持久顺序节点(PERSISTENT_SEQUENTIAL)

这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。

临时节点(EPHEMERAL)

和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。

临时顺序节点(EPHEMERAL_SEQUENTIAL)

可以用来实现分布式锁

高性能缓存和NoSQL面试题(三)

Redis高性能缓存数据库,Memcached进阶实战,高性能缓存开发实战,MongoDB进阶实战

(1)Memcached服务在企业集群架构中应用场景

(2)Memcached服务在不同企业业务应用场景中的工作流程

(3)Memcached服务分布式集群如何实现?

(4)Memcached服务特点及工作原理是什么?

(5)简述Memcached内存管理机制原理?

(6)MySQL的delete与truncate区别?

(7)Redis常见的性能问题怎么解决?

(8)Redis与memcached有什么区别?

(9)Redis有哪些数据结构?

(10)Redis持久化方案区别以及优缺点?

(11)如何来维护集群之间的关系,或者说集群之间如何建立连接?

(12)在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果?

(13)redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多?

(14)redis都有哪些数据类型?分别在哪些场景下使用比较合适?

(15)redis的过期策略都有哪些?手写一下LRU代码实现?

异步与消息中间件面试题(四)

RabbitMq消息中间件,ActiveMq消息中间件,kafka百万级吞实战

(1)如何确保消息正确地发送至RabbitMQ?

(2) 如何确保消息接收方消费了消息?

(3) 如何避免消息重复投递或重复消费?

(4)使用RabbitMQ有什么好处?

(5)如何在activemq.xml里面配置消息队列的大小,来保证队列不会溢出?

(6)如何保证消息队列的高可用啊?

(7)如何保证消息不被重复消费啊(如何进行消息队列的幂等性问题)?

(8)如何保证消息的可靠性传输(如何处理消息丢失的问题)?

(9)如何保证消息的顺序性?

(10)如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

(11)如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路

(12)为什么使用消息队列啊?消息队列有什么优点和缺点啊?

(13)kafka、activemq、rabbitmq、rocketmq都有什么优点和缺点啊?

请说明Kafka相对传统技术有什么优势?

(14)在Kafka中broker的意义是什么?

(15)Kafka服务器能接收到的最大信息是多少?

需要面试题汇总可关注我的公众号【风平浪静如码】领取!

附:高性能架构学习路线导图

写在最后:

欢迎大家关注我新开通的公众号【风平浪静如码】,海量Java相关文章,学习资料都会在里面更新,整理的资料也会放在里面。

觉得写的还不错的就点个赞,加个关注呗!点关注,不迷路,持续更新!!!

原文地址:https://blog.51cto.com/14570694/2473603

时间: 2024-08-23 16:41:50

架构师必备之常见面试题整理——高性能三十问!的相关文章

架构师必备之常见面试题整理——数据库灵魂十问!

常见的数据库面试题有哪些 (一)什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句. 更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了. 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率 可以一定程度上确保数据安全 (二)索引是什么?有什么作用以

linux系统运维企业常见面试题集合(三)

linux系统运维企业常见面试题集合(三) 01  写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行:(2) 一行中,如果包含"11111",则在"11111"前面插入"AAA",在"11111"后面插入"BBB",比如:将内容为0000111112222的一行改为:0000AAA11111BBB2222 [[email protected]~]# cat -n /t

2019最新java常见面试题整理

操作系统说一下线程和进程,它们的区别同步和异步的区别阻塞和非阻塞的区别操作系统中死锁的四个必要条件mmap和普通文件读写的区别,mmap的注意点CPU密集型和IO密集型的区别Linuxlinux 用过的命令kill 用法,某个进程杀不掉的原因(进入内核态,忽略 kill 信号)系统管理命令(如查看内存- 网络情况)管道的使用grep 的使用,一定要掌握,每次都会问在文件中查找shell 脚本find 命令awk 使用讲一下linux的Swap分区硬链接和软连接区别讲一下epoll的基本原理,优点

【持续更新】JavaScript常见面试题整理

[重点提前说]这篇博客里的问题涉及到了JS中常见的的基础知识点,也是面试中常见的一些问题,建议初入职场的园友Mark收藏,本文会持续更新~ 1. 引入JS的三种方式 1.在HTML标签中直接使用,直接内嵌JS(但是不提倡使用): >>>不符合W3C关于内容和行为分离的要求: 2.在HTML页面中使用<scrip> </script>标签包裹JS代码: >>>script标签可以放到页面的各种位置: 3.引入外部的JS文件使用<script&

常见面试题整理---前端(不论出处)

1.浏览器渲染页面的过程 用户输入URL地址 浏览器解析URL解析出主机名 浏览器将主机名转换成服务器ip地址(浏览器先查找本地DNS缓存列表 没有的话 再向浏览器默认的DNS服务器发送查询请求 同时缓存) 浏览器将端口号从URL中解析出来 浏览器建立一条与目标Web服务器的TCP连接(三次握手) 浏览器向服务器发送一条HTTP请求报文 服务器向浏览器返回一条HTTP响应报文 关闭连接 浏览器解析文档 2.异步编程的四种方法 ①回调②事件监听③观察者模式(发布和订阅)④promise 3.解释同

java常见面试题汇总(三)

上一次更新的java面试题,很多小伙伴反应很简单,其实上一期更新的就是更偏基础的面试题,但这并不意味着,面试就这么简单,在java的学习中,有从Java基础.框架.设计模式等等都是重点学习的点.在本文的面试题分享中,我们循序渐进,尽量挑一些重点的内容来分享! 1.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象

献给 2018 还在艰苦奋斗的 Java 程序员,Java 常见面试题及答案!

1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被编译成能被 Java 虚拟机执行的字节码文件. Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译. Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性. 2.JDK和JRE的区别是什么? JDK: java开发工具包,包含了JRE.编译器和其它工具(如:jav

测开常见面试题什么是redis

企业中redis是必备的性能优化中间件,也是常见面试题,首先Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.list.set.zset(sorted set).hash. 那么为什么要使用类似redis? 单机时代,存储只用一台机器装mysq

【转载】JAVA常见面试题及解答(精华)

JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class T { transient int a;  //不需要维持 int b;  //需要维持 } 这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存. volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变.在多线程程序中,有时两个或更多的线程共