百度提前批一面0718

用go觉得方便吗

挺方便

k8s基本组件介绍

Master节点

Master节点是Kubernetes集群的控制中心,负责管理整个集群的状态和资源分配。它包含以下关键组件:

  1. kube-apiserver
    • 功能:作为集群的中央控制平面的API入口,提供API服务,允许用户通过kubectl工具或其他客户端与集群进行交互。
    • 作用:所有操作都需要通过kube-apiserver发起和处理,它是集群管理、资源配置、整个集群安全机制的入口。
  2. etcd
    • 功能:作为Kubernetes集群的分布式键值存储,存储了整个集群的状态和元数据。
    • 作用:etcd保存了集群的所有状态信息,包括Pod、Service、Deployment等对象的创建、更新和删除等操作,使得Kubernetes系统具有高可用性和复原能力。
  3. kube-controller-manager
    • 功能:负责管理集群中的控制器,监听集群状态的变化并控制集群的状态向用户期望的状态靠拢。
    • 作用:Controller Manager包含多个控制器,每个控制器负责监控和维护一种资源对象的状态,如Deployment、ReplicaSet、DaemonSet等,同时根据用户的需求,自动进行相应的容器调度、扩容、缩容等操作。
  4. kube-scheduler
    • 功能:负责资源的调度,根据资源的需求和约束选择最合适的节点部署Pod。
    • 作用:Scheduler会根据Pod的资源需求、节点的资源情况、节点之间的网络距离等因素进行智能调度,从而实现负载均衡和资源最大化利用的目标。

Node节点

Node节点是集群中运行应用程序的工作节点,每个Node节点包括以下组件:

  1. kubelet
    • 功能:运行在每个节点上,负责维护容器的生命周期,管理Pod的运行状态。
    • 作用:kubelet负责监听节点上Pod的状态,同时负责上报节点和节点上面Pod的状态,与Master节点通信,并管理节点上面的Pod。
  2. kube-proxy
    • 功能:负责实现Kubernetes服务的网络代理和负载均衡。
    • 作用:kube-proxy负责将指定的流量分发到后端正确的机器上,实现集群内Service的负载均衡和访问控制等功能。
  3. 容器运行时(Container Runtime)
    • 功能:负责运行容器化的应用程序。
    • 作用:容器运行时是Kubernetes中用于运行容器的底层组件,它负责将容器镜像转换为可以运行的进程,并提供容器的隔离、资源管理和网络管理等功能。Kubernetes支持多种容器运行时,如Docker、CRI-O、containerd等。

kubectl的命令,查看当前运行的pod命令

kubectl get pods

编辑service的node pod命令

kubectl exec -it pod -- bash

springcloud里面都用了哪些组件

Nacos、sentinel、gateway、openfeign、rabbitmq

平时用的语言用的最多是什么

JAVA、C++

zset能介绍一下它的数据结构吗

压缩列表(ziplist):当满足以下两个条件时,Redis会使用压缩列表作为ZSet的底层存储结构:

  1. 集合中元素数量少于zset-max-ziplist-entries(默认值为128)。
  2. 所有元素的最大长度小于zset-max-ziplist-value(默认值为64字节)。

跳跃表(skiplist):当不满足上述两个条件时,Redis会使用跳跃表作为ZSet的底层存储结构。跳跃表是一种可以进行快速查找的有序数据结构,它通过维护多级索引来实现快速查找。跳跃表的查找、插入和删除操作的时间复杂度都是O(logN),其中N是跳跃表中的元素数量。这使得跳跃表在处理大量数据时具有很高的性能。

跳跃表的结构定义如下(以Redis的C语言实现为例):

  • zskiplistNode:表示跳跃表中的一个节点,包含元素对象(obj)、分数(score)、指向前一个节点的指针(backward)和一个包含多个层的数组(level)。每一层都包含一个指向下一个节点的指针(forward)和一个表示当前节点到下一个节点的跨度(span)。
  • zskiplist:表示一个跳跃表,包含头节点(header)、尾节点(tail)、跳跃表中的节点数量(length)和当前跳跃表的最大层数(level)。

Reids多个请求用单线程处理,怎么保证高性能

  1. 内存操作:Redis 所有的数据都存储在内存中,内存的读写速度远远快于磁盘。这使得 Redis 能够在极短的时间内完成数据的读写操作。

  2. 高效的数据结构:Redis 使用了多种高效的数据结构,如字符串(strings)、列表(lists)、集合(sets)、哈希表(hashes)、有序集合(sorted sets)等,这些数据结构都经过优化,以适应快速读写和高效的空间利用。

  3. 事件驱动:Redis 使用了基于事件的非阻塞 I/O 模型,它使用 I/O 多路复用技术(如 epoll/kqueue)来高效地处理网络请求。这使得 Redis 可以在单个线程中处理多个客户端的并发连接,而不会阻塞。

  4. 避免上下文切换:由于 Redis 是单线程的,它避免了多线程或多进程模型中的上下文切换开销。上下文切换是操作系统在多任务处理时保存和恢复 CPU 状态的过程,这个过程会消耗大量的 CPU 时间。

arraylist和linkedlist什么区别,怎么用

arraylist采用动态数组实现,其底层是数组,扩容1.5倍后会新建数组。

linkedlist采用双向链表实现。

  • ArrayList:适合需要频繁进行随机访问的场景,如频繁通过索引访问元素。
  • LinkedList:适合需要频繁进行插入和删除操作的场景,特别是在列表的头部或尾部进行操作时。

linkedlist怎么实现get

怎么优化get,不能用hashmap映射

linkedlist采用从头遍历实现get

采用跳表优化get

有一些并发工具类,用过哪些

Java并发工具类主要位于java.util.concurrent(简称JUC)包中

CountDownLatch

CyclicBarrier

ReadWriteLock

Semaphore

ConcurrentHashMap

分布式web系统,多节点web服务,服务是分布式的,map怎么共享?

Redis存储

怎么保证优惠卷不超卖,保证高性能

redis分布式锁加上sentinel限流

sentinel限流机制,原理

滑动窗口机制

维护一个窗口,窗口分为若干时间段,每个时间段以及窗口都有计数器,超过则拒绝。当新的请求到来时,滑动窗口会向后滑动,保持窗口大小不变。

数据库sql题:

算法题:

二分查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

装B且挨揍の

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值