资源调度系统面试参考

简介: 大规模集群资源调度和管理,对应的技术领域:分布式操作系统研发和运用。提到操作系统,大家就会说这太底层了,其实和我的工作实际过程要求的技术技能有些Gaap。对于广大的研发同学来说,大部分职责都是业务研发,内核这方面的业务需求一般都是基础软件团队的工作范围。但是,对分布式操作系统有兴趣的同学,特别是云平台资源调度管理有兴趣同学,如果想通过应聘进入这个领域,那么有没有一些通用的面试题参考呢。本文就从多年工作、面试过程中,抽取相关内容,供有需要的同学进行学习、总结。下面从调度队列和优化、调度稳定性、分布式一致性、数据分析和算法、开源源码做一个初步的梳理。

调度队列和优化

  1. Golang 实现无重复元素的队列
  2. Golang 实现固定Size的循环队列
  3. 模拟货运运输和优化 假设: 有N个货物,每个货物有三个属性: 货物ID、货物装上车耗费的时间、货物装车后价值。 假设N个货物同时到达站点等待装车,装车操作有序执行
    作答要求:
    (1)模拟N个货物的单个货物的耗费时间、货物价值
    (2)输出:计算N个货物总排队时间
    总排队执行时间:
    定义第n个货物排队+执行耗时 time(n),n=0,time(0)=0
    定义第n个货物装车时间 load(n)= 随机值
    第n个货物排队执行时间:time(n)= time(n-1)+load(n)
    (3)编程语言:java、golang、c、c++ 任意一种
  4. 基于上面试题3,假设货物之间装载没有依赖关系,谁先谁后都是可以的
    假设货车体积有限,如何优化,使得使得等待时间最小、货物价值最大?
    编程语言:java、golang、c、c++ 任意一种
  5. 模拟公平调度算法实现 例如:Linux Completely Fair scheduler (CFS) 或者 hadoop Fair Scheduler模拟实现 参考链接
https://en.wikipedia.org/wiki/Completely_Fair_Scheduler
https://github.com/kanaka/rbt_cfs
http://www.dreamincode.net/forums/topic/147939-fair-scheduling-in-java/
http://dongxicheng.org/mapreduce/hadoop-fair-scheduler/
https://github.com/sakeven/RbTree
  1. 模拟Goroutine调度器 Scalable Go Scheduler Design
    Go Preemptive Scheduler Design
    NUMA‐aware scheduler for Go
  2. 基于Golang 模拟 定时任务框架 要求:支持超时控制、支持主动停止任务、支持任务调度周期的改变

调度稳定性方面

  1. Golang实现 Pod打散的一种算法 需求描述:有一堆候选服务器列表,每个服务器随机分配一个得分,
    服务器同时属于一个pod并且只属于唯一一个pod
    算法输出:进行按得分排序,同时兼顾按pod打散的 topN 输出
    举例:10个结点,结点如下,
{nc:a,score:1.0,pod:1}
{nc:b,score:1.0,pod:2}
{nc:c,score:4.0,pod:3}
{nc:d,score:3.0,pod:2}
{nc:e,score:4.0,pod:5}
{nc:f,score:2.0,pod:4}
{nc:g,score:2.0,pod:3}
{nc:h,score:2.0,pod:1}
{nc:i,score:4.0,pod:3}
{nc:j,score:3.0,pod:2}
top5:输出如下:
{nc:e,score:4.0,pod:5}
{nc:c,score:4.0,pod:3}
{nc:b,score:3.0,pod:2}
{nc:a,score:2.0,pod:1}
{nc:e,score:2.0,pod:4}
top4:输出如下:
{nc:e,score:4.0,pod:5}
{nc:c,score:4.0,pod:3}
{nc:b,score:3.0,pod:2}
{nc:a,score:2.0,pod:1}
或者 任意一个输出都算有效
{nc:e,score:4.0,pod:5}
{nc:c,score:4.0,pod:3}
{nc:b,score:3.0,pod:2}
{nc:e,score:2.0,pod:4}
top6:输出如下
{nc:e,score:4.0,pod:5}
{nc:c,score:4.0,pod:3}
{nc:b,score:3.0,pod:2}
{nc:a,score:2.0,pod:1}
{nc:e,score:2.0,pod:4}
{nc:i,score:4.0,pod:3}

分布式一致性方面

  1. Java或者Golang实现 一致性hash算法
  2. 模拟raft协议中leader 选举。 通俗说N个node,只要一半以及以上node 获得投票 就成为leader,选举结束
  3. Golang实现LRUCache
  4. Golang实现 任务中断或者宕机可恢复的生产者、消费者框架

数据分析和算法

  1. N个时序结点,每个结点包括timestamp、value
    要求拟合 时序趋势
  2. 有N个数据结点,数值区间0 到 100
    要求给出 N个结点的 99分位值
  3. 有N个数据结点,数值区间0 到 100 要求 给出一个数值,给出这个数值的分组值
  4. 组合关系挖掘 给定N个Node,每个Node上0到M 个 Container
    同时,Node分配一个cpu值,每个Container一个cpu值
    Node 和Container的 cpu 值区间0到60
    Node cpu = 上面所有Container cpu 和 每个Container 包括一个 id,name,cpu值
    并且Container id相同的,其cpu值也相同

    要求:
    从N个Node和每个Node上面的Container数据中
    挖掘有效组合关系模型,也就 那些Container在一起最佳
    最佳的标准:Node cpu值最大或者最小
  5. 有N个Node,M个Container,每个Node 包括CPU、mem、disk值
    每个Container也包括CPU、mem、disk值
    有Q个工单,每个工单对应一种Container和数量
    要求:
    如何将Q个工单资源编排进N个Node,使得N个Node的分配率最好

开源源码

  1. etcd源码
  2. kubelet源码
  3. yarn 源码
  4. messos源码
  5. CloudSim源码
  6. Google-cluster-sim 源码
  7. Golang源码
  8. Docker 源码
  9. Pouch 源码


原文参考 https://github.com/sebarzi/interview_scheduler/blob/master/questions_part_one.md

目录
相关文章
|
2月前
|
缓存 NoSQL 关系型数据库
|
6月前
|
存储 运维 算法
|
7月前
|
Dubbo Java 应用服务中间件
2023JAVA面试题全集(超全面!超系统!超实用!)早做准备,早上岸
前两个月,公司java岗位面了50+候选人,面试下来发现几类过不了的情况,分享大家防止踩坑: 新技术倒是掌握得挺多,基础的却一塌糊涂。
2023JAVA面试题全集(超全面!超系统!超实用!)早做准备,早上岸
|
15天前
|
分布式计算 资源调度 监控
Hadoop生态系统深度剖析:面试经验与必备知识点解析
本文深入探讨了Hadoop生态系统的面试重点,涵盖Hadoop架构、HDFS、YARN和MapReduce。了解Hadoop的主从架构、HDFS的读写流程及高级特性,YARN的资源管理与调度,以及MapReduce编程模型。通过代码示例,如HDFS文件操作和WordCount程序,帮助读者巩固理解。此外,文章强调在面试中应结合个人经验、行业动态和技术进展展示技术实力。
|
27天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
57 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
|
5月前
|
设计模式 Java 数据库
持续霸榜GitHub的面试神器:字节跳动Java面试参考手册,限时开源
最近又赶上跳槽的高峰期(招聘旺季),好多读者都问我有没有面试字节的神器,我苦苦寻到了一份内部资料《2023字节跳动Java面试参考手册(第二期)》。
|
1月前
|
Dubbo Java 程序员
2024JAVA面试题全集(超全面!超系统!超实用!)早做准备,早上岸
前两个月,公司java岗位面了50+候选人,面试下来发现几类过不了的情况,分享大家防止踩坑: 新技术倒是掌握得挺多,基础的却一塌糊涂。 工作多年,从未学习过工作之外的技术栈,也没有对技术有任何的兴趣,遇到问题就百度去csdn看解决方案。 业务单一化和技术栈老化,技术简单,工作七八年,所有的项目都是spring+mybatis/hibernate+mysql。 这些情况一般面试就没啥希望了,毕竟对于大部分程序员来说:最重要的肯定是建立一个系统的知识支撑体系,使自己具备扎实的Java基础能力。 如果是冲击大厂的话,还能够满足大厂招聘需求,具备过硬的技术和较强的实战能力。 除此之外,面试
120 0
|
7月前
|
缓存 Java 程序员
面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?
前两天在知乎上看到一个问答,说的是: 一个Java程序员具备什么样的素质和能力才可以称得上高级工程师? 这个问题也引发了我的一些思考,可能很多人会说,“作为高级工程师,基础得过硬、得熟练掌握一门编程语言、至少看过一个优秀开源项目的源代码、有过高并发/性能优化的工作经验、沟通能力强等等”。
56 0
|
3月前
|
存储 Linux 编译器
Linux系统中驱动面试分享
Linux系统中驱动面试分享
41 0