![](https://img-blog.csdnimg.cn/ba156dd97c3e4f48b078425cb0368117.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试复习
文章平均质量分 96
面试复习(Java、Go、云原生、基础架构)
邋遢的流浪剑客
成长中的基础架构攻城狮
展开
-
2024LeetCode分类刷题
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~ 2h个节点。原创 2024-02-14 13:19:14 · 1305 阅读 · 2 评论 -
Istio复习总结:xDS协议、Istio Pilot源码、Istio落地问题总结
基于Istio 1.10版本落地问题总结。原创 2024-02-14 11:45:14 · 1723 阅读 · 0 评论 -
Kubernetes复习总结(三):核心组件原理及源码:client-go、controller-runtime、Scheduler、API Server、kubelet
Controller中主要使用到Informer和WorkQueue两个核心组件Controller可以有一个或多个Informer来跟踪某一个或多个resource。Informer跟Kubernetes API Server保持通讯获取资源的最新状态并更新到本地的cache中,一旦跟踪的资源有变化,Informer就会调用callback把关心的变更的Object放到WorkQueue里面。原创 2024-01-17 20:21:20 · 1416 阅读 · 2 评论 -
Kubernetes复习总结(二):Kubernetes容器网络
这条规则的意思是:凡是发往10.244.2.0/24网段的IP包,都需要经过flannel.1设备发出,并且,它最后被发往的网关地址是:10.244.2.0,也就是Node2上的VTEP设备(也就是flannel.1设备)的IP地址。所以,flanneld进程在处理由flannel0传入的IP包时,就可以根据目的IP的地址(比如10.244.2.3),匹配到对应的子网(10.244.2.0/24),从Etcd中找到这个子网对应的宿主机的IP地址是172.19.216.115。也就是说,来到了隧道的入口。原创 2024-01-06 16:32:07 · 1180 阅读 · 0 评论 -
Kubernetes复习总结(一):Kubernetes内置资源、Device Plugin机制
控制器对象本身,负责定义被管理对象的期望状态。比如,Deployment里的replicas=2这个字段而被控制对象的定义,则来自于一个模板。比如,Deployment里的template字段。可以看到,Deployment这个template字段里的内容,跟一个标准的Pod对象的API定义丝毫不差。而所有被这个Deployment管理的Pod实例,其实都是根据这个template字段的内容创建出来的。原创 2024-01-06 16:23:58 · 1264 阅读 · 0 评论 -
Java中集合相关知识点复习
一、List1、ArrayListArrayList是一种变长的集合类,基于定长数组实现,使用默认构造方法初始化出来的容量是10(1.7之后都是延迟初始化,即第一次调用add方法添加元素的时候才将elementData容量初始化为10)ArrayList允许空值和重复元素,当往ArrayList中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组。ArrayList...原创 2020-05-03 09:18:58 · 1550 阅读 · 0 评论 -
LeetCode分类刷题
一、数组11. 盛最多水的容器283. 移动零70. 爬楼梯15. 三数之和26. 删除排序数组中的重复项189. 旋转数组88. 合并两个有序数组1. 两数之和66. 加一二、链表206. 反转链表24. 两两交换链表中的节点141. 环形链表142. 环形链表 II25. K 个一组翻转链表21. 合并两个有序链表三、栈和队列20. 有效的括号155. 最...原创 2020-01-29 09:35:47 · 1245 阅读 · 0 评论 -
JVM复习(一):JVM内存模型、HotSpot虚拟机对象、垃圾回收算法、垃圾收集器、内存分配与回收策略
一、JVM内存模型JVM运行时数据区域分为线程独占区和线程共享区,线程独占区包括虚拟机栈、本地方法栈、程序计数器,线程共享区包括堆和方法区1、堆堆是JVM内存中最大的一块内存空间,该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。堆被划分为新生代和老年代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Survivor和To Survivor...原创 2020-01-04 10:12:32 · 856 阅读 · 0 评论 -
JVM复习(二):类编译加载执行过程、即时编译
六、类编译加载执行过程Java从编译到运行的整个过程如下图:1、类编译.java文件编译成.class文件的过程中,包括词法分析、填充符号表、注解处理、语义分析以及生成class文件使用javap反编译一个class文件结构中主要包含了如下信息:编译后的字节码文件主要包括常量池和方法表集合这两部分常量池主要记录的是类文件中出现的字面量以及符号引用。字面常量包括字符串常量,声明为fi...原创 2020-01-04 18:13:28 · 878 阅读 · 2 评论 -
垃圾收集器G1详解
G1(Garbadge First Collector)作为一款JVM最新的垃圾收集器,可以解决CMS中Concurrent Mode Failed问题,尽量缩短处理超大堆的停顿,在G1进行垃圾回收的时候完成内存压缩,降低内存碎片的生成。G1在堆内存比较大的时候表现出比较高吞吐量和短暂的停顿时间,而且已成为Java 9的默认收集器G1的GC原理RegionG1的内存结构和传统的内存空间划分有...转载 2020-01-12 10:37:27 · 826 阅读 · 0 评论 -
Java多线程复习(一):JMM、volatile、synchronized、happens-before
一、JMM(Java内存模型)在Java中,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。局部变量、方法定义参数和异常处理器参数不会在线程之间共享,它们不会有内存可见性问题,也不受内存模型的影响JMM本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式Java线程之间的通信由...原创 2019-12-28 10:02:11 · 678 阅读 · 0 评论 -
Java多线程复习(二):UnSafe与CAS、AQS与锁、CountDownLatch、CyclicBarrier、Semaphore
五、UnSafe与CAS1、UnSafeUnsafe类为单例实现,提供静态方法getUnsafe()获取Unsafe实例,当且仅当调用getUnsafe()方法的类为引导类加载器所加载时才合法,否则抛出SecurityException异常AtomicInteger内部使用UnSafe来实现的,源码如下:public class AtomicLong extends Number impl...原创 2019-12-28 15:38:28 · 829 阅读 · 1 评论 -
Java多线程复习(三):并发容器、线程池、ThreadLocal、伪共享
九、并发容器1、并发容器简介在Java1.5之前所谓的线程安全的容器,主要指的是同步容器。不过同步容器最大的问题就是性能差,所有方法都用synchronized来保证互斥,串行度太高了。因此Java在1.5及之后版本提供了性能更高的容器,一般称为并发容器并发容器关系图如下:2、List1)、CopyOnWriteArrayList简介List里面只有一个实现类CopyOnWriteA...原创 2019-12-28 21:35:15 · 917 阅读 · 2 评论 -
并发工具类:Fork、Join和CompletionService
一、Fork/JoinFork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果工作窃取算法:假如我们需要做一个比较大的任务,可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,把这些子任务分别放到不同的队列里,并为每个队列创建一个单独的线程来执行队列里的任务,线程和队列一一对应。比如A线程负责处理A队列里的任务。但是,有的线程会先把自己队列里的任务干完,而其他线程对应的队列里还有任务等待处理。干完活的线程与其等着,不如去帮其他线程原创 2020-07-24 08:25:09 · 568 阅读 · 0 评论 -
JVM与多线程知识点补充
一、垃圾收集器相关1、HotSpot的算法细节实现其实下面讲到的技术本质上是为了解决垃圾回收过程中的具体问题而采用的解决方案,所以我会先说明遇到的问题再讲解HotSpot给出相对应的解决方案1)、OopMap在判断对象是否存活的时候,采用的是可达性分析算法,也就是从GC Roots集合找引用链这样的一个过程。虽然固定可以作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,但如果要逐个检查以这里为起源的引用要消耗不少的时间。而且为了保证分析结原创 2020-08-23 19:02:34 · 680 阅读 · 1 评论 -
Spring事务详解
一、Spring中如何使用事务1、编程式事务 @Autowired private PlatformTransactionManager txManager; public void addRole(Role role) { DefaultTransactionDefinition def = new DefaultTransactionDefiniti...原创 2020-02-10 08:32:32 · 371 阅读 · 0 评论 -
Spring循环依赖及解决方式
一、什么是循环依赖循环依赖就是循环引用,就是两个或多个bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A此处不是循环调用,是对象的相互依赖关系二、Spring怎么解决循环依赖Spring的循环依赖的理论依据基于Java的引用传递,当获得对象的引用时,对象的属性是可以延后设置的(但是构造器必须是在获取引用之前)Spring的单例对象的初始化主要分为三步:c...原创 2020-01-27 15:16:52 · 2296 阅读 · 0 评论 -
Spring常见面试知识点
1、谈谈对Spring IOC的理解?谈谈对Spring DI的理解?IOC反转控制:将之前程序中需要手动创建对象的操作,交由Spring框架来实现,创建对象的操作被反转到了Spring框架。对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象DI依赖注入:Spring框架创建Bean对象时,动态的将依赖对象注入到Bean组件中,实现依赖对象的注入2、依赖查找和依赖注入的区别依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准API实现。而依赖注入则是手动或自动依赖绑定的方原创 2020-06-06 14:40:35 · 1058 阅读 · 0 评论 -
SpringBoot原理分析
本文采用SpringBoot版本2.2.4.RELEASE一、父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> &...原创 2020-01-28 09:42:31 · 548 阅读 · 0 评论 -
Eureka缓存机制
一、Eureka ServerEureka Server存在三个变量:(registry、readWriteCacheMap、readOnlyCacheMap)保存服务注册信息,默认情况下定时任务每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s清理超过90s未续约的节点,Eureka Client每30s从readOnlyCacheMap更新服务注册...原创 2020-01-06 08:12:34 · 1264 阅读 · 0 评论 -
Spring Cloud原理
之前一直在看《Spring Cloud微服务实战》,最近又看了公众号石衫的架构笔记的《拜托!面试请不要再问我Spring Cloud底层原理》,对Spring Cloud的主要组件的原理有了更深的理解,特地做一下总结一、Spring Cloud核心组件:Eureka(1)Netflix Eureka1)、Eureka服务端:也称服务注册中心,同其他服务注册中心一样,支持高可用配置。如果Eur...原创 2019-01-19 15:16:25 · 7933 阅读 · 4 评论 -
MySQL复习(一):MySQL基础架构、InnoDB体系架构、MySQL日志、MySQL索引
一、MySQL基础架构MySQL可以分为Server层和存储引擎层两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个...原创 2020-01-27 10:28:28 · 5366 阅读 · 0 评论 -
MySQL复习(二):MySQL锁、MySQL事务、SQL优化、数据库分库分表
五、MySQL锁根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类1、全局锁全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock。当需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的...原创 2020-01-27 10:37:25 · 1932 阅读 · 0 评论 -
Redis复习(一):Redis数据类型、底层数据结构、过期键删除策略、内存回收策略、RDB和AOF、Redis Pipeline、事务
一、Redis数据类型类型特性string(字符串)二进制安全的,可以包含任何数据,一个键最大能存储512Mlist(列表)双向链表,按照插入顺序排序,可以从链表两端进行push和pop操作hash(散列表)键值对集合,适合存储对象set(集合)元素不重复的无序集合zset(有序集合)将set中的元素增加一个权重参数score,元素按scor...原创 2020-02-23 19:47:42 · 872 阅读 · 1 评论 -
Redis复习(二):Redis主从复制、哨兵与集群、分布式锁、布隆过滤器、缓存雪崩、缓存击穿、缓存穿透、常见的几种缓存模式
七、Redis主从复制在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器,我们称呼被复制的服务器为主服务器,而对主服务器进行复制的服务器则被称为从服务器1、同步和命令传播(旧版复制功能)Redis的复制功能分为同步和命令传播两个操作:同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态命令传播操作则用于在主服务器...原创 2020-03-01 20:44:01 · 824 阅读 · 0 评论 -
Kafka复习(一):基本概念、生产者分区策略、生产者实现原理、消费者组、位移主题、重平衡、消费者分区分配策略
一、基本概念1、Producer+Consumer+BrokerProducer(生产者)将消息发送到Broker,Broker将收到的消息存储到磁盘中,而Consumer(消费者)负责从Broker订阅并消费消息,Consumer使用拉(Pull)模式从服务端拉取消息ZooKeeper是负责集群元数据的管理、控制器的选举2、Topic+Partition在Kafka中,发布订阅的对象是主题(Topic),生产者负责将消息发送到特定的主题(每一条消息都要指定一个主题),而消费者负责订阅主题并进行原创 2021-06-27 21:35:31 · 1205 阅读 · 2 评论 -
Kafka复习(二):控制器、Kafka副本机制、为什么Kafka不支持主从读写分离、高水位和Leader Epoch、Kafka重平衡
四、控制器控制器组件(Controller)主要作用是在ZooKeeper的帮助下管理和协调整个Kafka集群。集群中任意一台Broker都能充当控制器角色,在运行过程中,只能有一个Broker成为控制器。控制器是重度依赖ZooKeeper的1、控制器的选举Broker在启动时,会尝试去ZooKeeper中创建/controller临时节点,第一个成功创建/controller临时节点的Broker会被指定为控制器ZooKeeper中还有一个与控制器有关的持久节点/controller_epoch,原创 2021-07-07 08:06:35 · 877 阅读 · 2 评论 -
面试中所谈的项目中的亮点
前言我是从18年11月份入职的,一直做的是Java开发,起初和大部分人一样都是CRUD,直到去年年底一个小项目让我做了技术经理,虽然我在项目上受到了比较大的打击(做己方的话如果真的遇到一个很难对付的甲方简直让人崩溃),但也确实让我获得很多技术上的成长写这篇博客主要为了回顾一下自己过去做过的项目,也梳理一下面试中谈到项目这块可以说出的亮点,如果对看到这篇博客的你有帮助那就更好了O(∩_∩)O下文中提到的项目上的亮点如下:1)、使用反射+枚举的方式记录变更日志2)、使用策略模式+工厂模式封装银企直连服原创 2020-06-18 07:59:01 · 12187 阅读 · 3 评论 -
2020年社招面经与问题总结(一)
说下本人现在的基本情况,毕业一年,双非本科,之前是项目外包,坐标上海,目标中大型互联网公司蚂蚁金服电话面:主要问做过的项目的一些解决方案(是否有分库分表、是否使用缓存、服务拆分的原则、遇到的有挑战性的技术问题,如何解决)Docker是如何实现虚拟化的、JVM运行时数据区、JVM垃圾回收算法、用过Dubbo吗、SpringCloud相关原理蚂蚁金服电话面卒,我们公司目前做的主要是企业内部的报销相关的系统,数据量、并发量都比较小,用的技术栈也没那么多,所以项目解决方案的话相对来说比较吃亏,而且.原创 2020-09-02 06:34:04 · 3436 阅读 · 7 评论 -
2020年社招面经与问题总结(二)
说下本人现在的基本情况,毕业一年,双非本科,之前是项目外包,坐标上海,目标中大型互联网公司知乎一面:Eureka底层原理、单点登录授权码模式、如何实现HTTP长连接、现在项目的CI/CD流程、NIO和BIO的区别、JVM运行时数据区、JVM垃圾回收器、内存泄露和内存溢出的区别、synchronized和Lock对比、synchronized底层实现、synchronized锁升级过程、ReentrantLock公平锁实现、创建线程的几种方式、线程状态转换、多线程执行任务同步获取结果有哪几种方式、.原创 2020-09-12 19:15:13 · 1155 阅读 · 9 评论