架构设计分布式数据结构与算法面试题
目录
- 架构设计
- 请列举出在JDK中几个常用的设计模式?
- 什么是设计模式?你是否在你的代码里面使用过任何设计模式?
- 静态代理、JDK动态代理以及CGLIB动态代理
- 静态代理
- 动态代理
- cglib代理
- 单例模式
- 工厂模式
- 观察者模式
- 装饰器模式
- 秒杀系统设计
- 分布式
- 分布式概述
- 分布式
- 集群
- 微服务
- 多线程
- 高并发
- 分布式系统设计理念
- 分布式系统的目标与要素
- 分布式系统设计两大思路:中心化和去中心化
- 分布式与集群的区别是什么?
- CAP定理
- CAP定理的证明
- BASE理论
- BASE理论的核心思想
- BASE理论三要素
- 1. 基本可用
- 2. 软状态
- 3. 最终一致性
- 数据结构与算法
- 冒泡排序(最高位确认最大)
- 选择排序(最低位选最小)
- 快速排序
- 递归
- 二分查找
- 一致性Hash算法
- 概述
- 一致性Hash算法原理
架构设计
请列举出在JDK中几个常用的设计模式?
什么是设计模式?你是否在你的代码里面使用过任何设计模式?
静态代理、JDK动态代理以及CGLIB动态代理
静态代理
动态代理
cglib代理
单例模式
工厂模式
观察者模式
装饰器模式
秒杀系统设计
分布式
分布式概述
分布式
集群
微服务
多线程
高并发
分布式系统设计理念
分布式系统的目标与要素
分布式系统设计两大思路:中心化和去中心化
分布式与集群的区别是什么?
CAP定理
CAP定理的证明
BASE理论
BASE理论的核心思想
BASE理论三要素
1. 基本可用
2. 软状态
3. 最终一致性
数据结构与算法
冒泡排序(最高位确认最大)
选择排序(最低位选最小)
快速排序
递归
二分查找
一致性Hash算法
概述
一致性Hash算法原理
Java代码实现
public class ConsistentHash<T> {/*** 节点的复制因子,实际节点个数 * numberOfReplicas = 虚拟节点个数*/private final int numberOfReplicas;/*** 存储虚拟节点的hash值到真实节点的映射*/private final SortedMap<Integer, T> circle = new TreeMap<Integer, T>();public ConsistentHash(int numberOfReplicas, Collection<T> nodes) {this.numberOfReplicas = numberOfReplicas;for (T node : nodes) {add(node);}}public void add(T node) {for (int i = 0; i < numberOfReplicas; i++) {// 对于一个实际机器节点 node, 对应 numberOfReplicas 个虚拟节点/** 不同的虚拟节点(i不同)有不同的hash值,但都对应同一个实际机器node* 虚拟node一般是均衡分布在环上的,数据存储在顺时针方向的虚拟node上*/String nodestr = node.toString() + i;int hashcode = nodestr.hashCode();System.out.println("hashcode:" + hashcode);circle.put(hashcode, node);}}public void remove(T node) {for (int i = 0; i < numberOfReplicas; i++) {circle.remove((node.toString() + i).hashCode());}}/*** 获得一个最近的顺时针节点,根据给定的key 取Hash* 然后再取得顺时针方向上最近的一个虚拟节点对应的实际节点* 再从实际节点中取得 数据** @param key* @return*/public T get(Object key) {if (circle.isEmpty()) {return null;}// node 用String来表示,获得node在哈希环中的hashCodeint hash = key.hashCode();System.out.println("hashcode----->:" + hash);//数据映射在两台虚拟机器所在环之间,就需要按顺时针方向寻找机器if (!circle.containsKey(hash)) {SortedMap<Integer, T> tailMap = circle.tailMap(hash);hash = tailMap.isEmpty() ? circle.firstKey() : tailMap.firstKey();}return circle.get(hash);}public long getSize() {return circle.size();}/*** 查看表示整个哈希环中各个虚拟节点位置*/public void testBalance() {//获得TreeMap中所有的KeySet<Integer> sets = circle.keySet();//将获得的Key集合排序SortedSet<Integer> sortedSets = new TreeSet<Integer>(sets);for (Integer hashCode : sortedSets) {System.out.println(hashCode);}System.out.println("----each location 's distance are follows: ----");/** 查看相邻两个hashCode的差值*/Iterator<Integer> it = sortedSets.iterator();Iterator<Integer> it2 = sortedSets.iterator();if (it2.hasNext()) {it2.next();}long keyPre, keyAfter;while (it.hasNext() && it2.hasNext()) {keyPre = it.next();keyAfter = it2.next();System.out.println(keyAfter - keyPre);}}public static void main(String[] args) {Set<String> nodes = new HashSet<String>();nodes.add("A");nodes.add("B");nodes.add("C");ConsistentHash<String> consistentHash = new ConsistentHash<String>(2, nodes);consistentHash.add("D");System.out.println("hash circle size: " + consistentHash.getSize());System.out.println("location of each node are follows: ");consistentHash.testBalance();String node = consistentHash.get("apple");System.out.println("node----------->:" + node);}}
转载链接:https://blog.csdn.net/ThinkWon/article/details/105870730
架构设计分布式数据结构与算法面试题相关推荐
- 架构设计分布式数据结构与算法面试题(2020最新版)
Java面试总结(2021优化版)已发布在个人微信公众号[技术人成长之路],优化版首先修正了读者反馈的部分答案存在的错误,同时根据最新面试总结,删除了低频问题,添加了一些常见面试题,对文章进行了精简优 ...
- 分布式数据结构与算法面试题
分布式 分布式概述 分布式 分布式(distributed)是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段,将一个业务拆分成不同的子业务,分布在不同的机器上执行.服务之间通过远程调用协同工 ...
- 数据结构与算法面试题(2022版)
序列号 内容 链接 1 Java基础知识面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124023797 2 Java集合容 ...
- 【2021最新版】数据结构+算法面试题总结(9+20道题含答案解析)
文章目录 1.栈(stack) 2.队列(queue) 3.链表(Link) 4.散列表(Hash Table) 5.排序二叉树 6. 前缀树 7.红黑树 8.B-TREE 9.位图 算法面试题 1. ...
- 2021最新汇总数据结构与算法面试题(准备面试的可以看看)
闲来无事整理了一下数据结构与算法面试题,准备面试的可以看看. 这份面试题汇总除了Java语言的,我还整理了C++和Golang语言的,无论你是做什么开发这份数据结构与算法面试题汇总都可以看,如果你是做 ...
- 数据结构经典算法面试题
转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html 由于这些题,实在太火了.所以,应广大网友建议要求,在 ...
- 数据结构和算法面试题系列—二叉树面试题汇总
这个系列是我多年前找工作时对数据结构和算法总结,其中有基础部分,也有各大公司的经典的面试题,最早发布在CSDN.现整理为一个系列给需要的朋友参考,如有错误,欢迎指正.本系列完整代码地址在 这里. 0 ...
- Java数据结构与算法面试题,首发Java程序员人手必备的进阶知识体系,(1)
在市场上很少能够看到一套不错的学习笔记,小编也是花了挺久的时间总结了这份**<Java程序员人手必备的进阶知识体系>**,帮助大家系统化高效的进阶学习,而不是零散低效的阅读. 2020全新 ...
- Java开发经典实战!java数据结构和算法面试题及答案
美团一面(50分钟左右) 进程和线程 死锁的必要条件 网络,七层协议 TCP和UDP的区别 hashmap 详细讲一下 hashmap底层是如何解决hash冲突的 hashmap和linkedhash ...
最新文章
- scala(3):class和object,trait的区别
- 通过nginx访问.html出现Access Denied提示怎么解决(亲测)
- 运行中的Nginx进程间的关系
- RHCE-samba服务
- NLP-Beginner:自然语言处理入门练习-任务一
- html5中3个盒子怎样设置,Web前端开发任务驱动式教程(HTML5+CSS3+JavaScript)任务10 盒子模型及应用.pptx...
- “匿名句柄” 是一切皆文件背后功臣……
- 对python文件方法open的探究
- SDOI2017round1酱油记day0
- 基于模型与不基于模型的深度增强学习_CVPR2018: 基于时空模型无监督迁移学习的行人重识别...
- 用户如何设置浏览器主页的历史记录和管理加载项
- Redis单线程模型
- OSI七层模式简单通俗理解
- 计算机网络期末考试代做,代做计算机作业-易指做帮写网
- Spring框架初学习
- TCP网络编程(基于UDP的网络聊天室)
- 交换机之恢复重置设备密码
- proxmox VE开NAT小鸡 无法联网,怎么开NAT模式
- Java 快速排序,递归排序算法
- 英语语法浅述-动词、时态和语态
热门文章
- 我是服务的执政官-服务发现和注册工具consul简介
- JMS与Spring之二(用message listener container异步收发消息)
- 谈自动化测试与CI中一些常见的谬见
- Gateway Sentinel 做网关降级/流控,转发header和cookie
- Android 简单几行代码实现摇一摇功能
- mac 下载的破解软件显示 文件已损坏
- 13新功能_再聊聊灵感盒 -Marginnote 3.6.12/13新功能
- Spring Cloud Gateway Predicate.Path过滤分析
- Navicat Premium 未保存和已执行SQL存储位置
- sql的子查询超级慢-子查询酿的祸