目录

  • 架构设计
    • 请列举出在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

架构设计分布式数据结构与算法面试题相关推荐

  1. 架构设计分布式数据结构与算法面试题(2020最新版)

    Java面试总结(2021优化版)已发布在个人微信公众号[技术人成长之路],优化版首先修正了读者反馈的部分答案存在的错误,同时根据最新面试总结,删除了低频问题,添加了一些常见面试题,对文章进行了精简优 ...

  2. 分布式数据结构与算法面试题

    分布式 分布式概述 分布式 分布式(distributed)是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段,将一个业务拆分成不同的子业务,分布在不同的机器上执行.服务之间通过远程调用协同工 ...

  3. 数据结构与算法面试题(2022版)

    序列号 内容 链接 1 Java基础知识面试题(2022版) https://blog.csdn.net/qq_43061290/article/details/124023797 2 Java集合容 ...

  4. 【2021最新版】数据结构+算法面试题总结(9+20道题含答案解析)

    文章目录 1.栈(stack) 2.队列(queue) 3.链表(Link) 4.散列表(Hash Table) 5.排序二叉树 6. 前缀树 7.红黑树 8.B-TREE 9.位图 算法面试题 1. ...

  5. 2021最新汇总数据结构与算法面试题(准备面试的可以看看)

    闲来无事整理了一下数据结构与算法面试题,准备面试的可以看看. 这份面试题汇总除了Java语言的,我还整理了C++和Golang语言的,无论你是做什么开发这份数据结构与算法面试题汇总都可以看,如果你是做 ...

  6. 数据结构经典算法面试题

    转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html 由于这些题,实在太火了.所以,应广大网友建议要求,在 ...

  7. 数据结构和算法面试题系列—二叉树面试题汇总

    这个系列是我多年前找工作时对数据结构和算法总结,其中有基础部分,也有各大公司的经典的面试题,最早发布在CSDN.现整理为一个系列给需要的朋友参考,如有错误,欢迎指正.本系列完整代码地址在 这里. 0 ...

  8. Java数据结构与算法面试题,首发Java程序员人手必备的进阶知识体系,(1)

    在市场上很少能够看到一套不错的学习笔记,小编也是花了挺久的时间总结了这份**<Java程序员人手必备的进阶知识体系>**,帮助大家系统化高效的进阶学习,而不是零散低效的阅读. 2020全新 ...

  9. Java开发经典实战!java数据结构和算法面试题及答案

    美团一面(50分钟左右) 进程和线程 死锁的必要条件 网络,七层协议 TCP和UDP的区别 hashmap 详细讲一下 hashmap底层是如何解决hash冲突的 hashmap和linkedhash ...

最新文章

  1. scala(3):class和object,trait的区别
  2. 通过nginx访问.html出现Access Denied提示怎么解决(亲测)
  3. 运行中的Nginx进程间的关系
  4. RHCE-samba服务
  5. NLP-Beginner:自然语言处理入门练习-任务一
  6. html5中3个盒子怎样设置,Web前端开发任务驱动式教程(HTML5+CSS3+JavaScript)任务10 盒子模型及应用.pptx...
  7. “匿名句柄” 是一切皆文件背后功臣……
  8. 对python文件方法open的探究
  9. SDOI2017round1酱油记day0
  10. 基于模型与不基于模型的深度增强学习_CVPR2018: 基于时空模型无监督迁移学习的行人重识别...
  11. 用户如何设置浏览器主页的历史记录和管理加载项
  12. Redis单线程模型
  13. OSI七层模式简单通俗理解
  14. 计算机网络期末考试代做,代做计算机作业-易指做帮写网
  15. Spring框架初学习
  16. TCP网络编程(基于UDP的网络聊天室)
  17. 交换机之恢复重置设备密码
  18. proxmox VE开NAT小鸡 无法联网,怎么开NAT模式
  19. Java 快速排序,递归排序算法
  20. 英语语法浅述-动词、时态和语态

热门文章

  1. 我是服务的执政官-服务发现和注册工具consul简介
  2. JMS与Spring之二(用message listener container异步收发消息)
  3. 谈自动化测试与CI中一些常见的谬见
  4. Gateway Sentinel 做网关降级/流控,转发header和cookie
  5. Android 简单几行代码实现摇一摇功能
  6. mac 下载的破解软件显示 文件已损坏
  7. 13新功能_再聊聊灵感盒 -Marginnote 3.6.12/13新功能
  8. Spring Cloud Gateway Predicate.Path过滤分析
  9. Navicat Premium 未保存和已执行SQL存储位置
  10. sql的子查询超级慢-子查询酿的祸