ffaq
从0开始学大数据
-
关于 RAID 技术,以下哪种说法是不正确的?
A、RAID0 的性能最好
B、RAID0 的数据安全性最差
C、RAID0 是实践中最常用的 RAID 技术方案
D、RAID5 的校验位数据螺旋式写入所有硬盘 -
HDFS 架构中,NameNode 的职责不包含? A、记录数据块的校验和信息
B、监听 DataNode 服务器的心跳
C、控制 DataNode 之间数据复制
D、为 Client 程序分配数据块 -
保证 HDFS 高可用的技术方案不包括以下哪种?
A、DataNode 向 NameNode 发送心跳检测,当某个DataNode 失去心跳的时候,NameNode 会对该 DataNode 上的数据块重新备份
B、每个数据块缺省情况下,会被存储在三个 DataNode 上
C、NameNode 进行主从热备
D、从 DataNode 读写数据的时候,数据需要经过 NameNode 进行校验 -
MapReduce 不适合进行下列哪种计算?
A、SQL 查询
B、计算斐波那契数列
C、训练围棋下棋机器人
D、统计网站访问 UV -
Hadoop MapReduce 计算过程中,shuffle的主要作用是?
A、将相同的 key 分发给同一个 reduce 计算任务,以便进行下一步计算
B、将 MapReduce 程序加载到任务计算服务器上
C、根据数据分片数量,构造相应数量的 map 计算任务
D、从 HDFS 中的文件中读取数据 -
用 MapReduce WordCount 程序计算处理一个大规模的纯文本文件,map 函数输入的 value 更接近下列哪个描述
A、文本文件中的一行数据
B、文本文件中一行数据在文件中偏移量
C、文本文件中的一个单词
D、文本文件中一个单词的出现的次数 -
下面关于 Yarn 的说法,哪个是不正确的?
A、ResourceManager 负责整个集群的资源调度管理
B、Yarn 进行资源分配的单位是物理服务器
C、Yarn 进行资源分配的单位是包含了一定量的内存、CPU 等计算资源的虚拟计算容 器
D、NodeManager 负责具体服务器上的资源和任务管理 -
在 Hive 中,MetaStore 组件的作用是?
A、存储数据记录
B、存储执行计划
C、存储 SQL 语句
D、存储表结构 -
Spark RDD 不是什么?
A、Spark 编程模型的核心元素
B、Spark 执行计划
C、Spark 的数据分片集合
D、弹性数据集 -
Spark 比 MapReduce 快的原因不包括?
A、Spark 使用内存存储中间计算结果比 MapReduce使用硬盘更高效
B、park DAG 切分的多阶段计算过程比 MapReduce只有 map 和 reduce 两个阶段更高效
C、Spark 的开发者比 MapReduce 的开发者更优秀
D、Spark 的运行环境比 Hadoop 的运行环境更快
从0开始学架构
-
以下关于架构的描述,正确的是哪个?
A. 架构就是系统的物理结构,包含数据库、缓存、Web 服务器这些子系统
B.架构是第二次软件危机后为了解决软件危机而兴起的一门技术
C. 只有大公司的系统才需要架构设计,小公司不需要架构设计
D. 架构是系统的顶层结构,可以从不同的角度去描述架构 -
关于架构设计的目的,哪个描述是正确的?
A. 架构设计主要是为了任务拆分,以方便团队分工合作
B. 架构设计主要是为了实现高性能和高可靠的系统
C. 架构设计主要是为了解决系统复杂度带来的问题
D. 架构设计主要是为了实现业务需求 -
以下哪些系统属于比较复杂的系统?
A. 某个日 PV 1000 万的新闻网站
B.某个支撑20个运营人员的运营管理后台
C.某个云厂家的5000台服务器的存储系统
D.某个创业公司做的类淘宝的购物平台 -
以下哪些做法违背了架构设计三原则?
A. 小牛从BAT的猫厂离职加入一家20人的创业公司担任CTO,决心把猫厂的技术复制到创业公司,让技术成为公司的核心竞争力
B. 小王在BAT的熊厂工作,为了能够晋级,他每个方案都力求做的高大上,不然晋级肯定没有希望
C. 小明在某大厂负责一个创新业务架构设计,业务方目标是做到日活5000万,小明摩拳擦掌,决心一上来就设计一个亿级日活的架构
D. 小李帮学校做一个简单的服务功能,直接用小程序搞定 -
以下关于架构设计的具体做法,哪些是错误的?
A. 详细的与业务方明确需求、确定目标,甚至为了降低系统复杂度而和业务方商量可否砍掉一些需求
B. 领导说这个系统一定要做到高性能,不然团队出不了成绩,因此团队把高性能作为系统设计的首要复杂度进行分析
C. 架构师对自己的经验和技能非常自信,只设计了一个方案
D. 架构讨论的时候,把运维、测试、运营等关联方都拉上一起讨论 -
关于高性能存储架构设计的说法,哪些是正确的?
A. 读写分离适合读多写少的业务
B. 分库分表适合读写并发都比较大的业务
C. NoSQL功能很强大了,为了避免系统设计复杂,用了NoSQL就不要用SQL了
D. 读写分离和缓存都是为了应对读多写少的业务场景,因此只用其中一个就够了 -
Linux上的数据库系统适合采用哪种高性能服务模式?
A. PPC
B. TPC
C. Reactor
D. Proactor -
以下哪个负载均衡技术适合做机房级别的负载均衡?
A. DNS
B. LVS
C. Nginx
D. 微服务网关 -
以下关于CAP理论的说法,哪些是正确的?
A. 整个分布式系统要么符合CP,要么符合AP
B. 分布式系统要么是CP,要么是AP,不可能存在满足CA的分布式系统
C. CAP理论是不考虑延迟的,因此实际上没有任何系统能做到CP
D. 既然CAP都说了故障情况下肯定会有问题,那我们就直接跟客户说这是科学原理决定的,我们也没办法 -
以下关于高可用存储架构的说法,哪些是正确的?
A. 双机存储系统只有两台机器,设计上比集群存储系统要简单
B. ZooKeeper是数据集中集群,因为每台服务器上都保存相同的数据
C. Elasticsearch是数据分散集群,因为每台服务器上存放的不同的数据
D. 数据分区可以避免单机房出现物理故障的时候不损失数据
软件设计之美
-
下面关于软件设计的叙述中,错误的是?
A 软件设计就是设计模式
B 所有的软件都需要精心的设计
C 软件设计要应对由于长期变化带来的复杂性
D 软件开发中的很多问题是由于缺乏设计造成的 -
程序设计语言的接口是什么?
A 程序设计语言的模型
B 程序设计语言的语法
C 程序设计语言的程序库
D 程序设计语言的运行时 -
下面对单一职责原则(LSP)的理解,哪个符合最新的定义?
A 一个模块只做一件事
B 一个模块应该有且仅有一个变换的原因
C 一个模块应该对一类且仅对一类行为者负责
D 一个模块应该只有一个人负责 -
下面关于编程范式的叙述中,正确的是?
A 用 Java 写出来的程序一定是符合面向对象编程范式的
B 用 C 写不出面向对象的程序
C 函数式编程一定要用函数式编程语言才能实现出来
D 用 Java 也可以写出函数式编程的代码 -
下面关于面向对象编程的叙述中,不正确的是?
A 面向对象就是数据加上函数
B 面向对象的封装就是把数据放到类里面
C 面向对象的继承就是为了复用代码
D 面向对象的多态是区别于基于对象的重要特点 -
下面关于设计模式的叙述中,不正确的是?
A 设计模式是针对一些普遍存在的问题给出的解决方案
B 设计模式一共有 23 种
C 设计模式从某种意义上说是为了解决程序设计语言自身的缺陷
D 设计模式的写法是标准的,一成不变的 -
下面对于一些原则理解正确的是?
A 简单设计就是不需要设计
B DRY 原则指的是代码不要复制粘贴
C YAGNI 原则告诫我们不要做过多的事
D KISS 原则告诉我们尽可能用简单的方式做事情 -
下面关于 DSL 的叙述中,不正确的是?
A DSL 是 Martin Fowler 发明的一门语言
B 写 DSL 就要自己写编译器
C Spring 的 XML 配置文件就是一种外部 DSL
D 表达性是 DSL 一个重要的属性 -
理解一个软件的设计,需要理解哪些部分?
A 算法
B 模型
C 接口
D 实现 -
下面不属于列表转换最典型的模式是?
A map
B find
C reduce
D filter
手把手带你写一个web框架
-
下列关于 net/http 的说法正确的有?
A. 对于 HTTP 协议,无论是请求还是响应,传输的消息体都可以分为两个部分:HTTP 头部和 HTTP Body 体。头部描述的一般是和业务无关但与传输相关的信息,比如请求地址、编码格式、缓存时长等;Body 里面主要描述的是与业务相关的信息。
B. Web Server 的本质,实际上就是接收、解析 HTTP 请求传输的文本字符,理解这些文本字符的指令,然后进行计算,再将返回值组织成 HTTP 响应的文本字符,通过 TCP 网络传输回去。
C. server.ListenAndServe 是 net/http 启动服务的入口,我们可以使用 IDE 跟着这个函数梳理 Web 服务的实现原理。
D. 所有实现了 net/http 接口 Handler 的对象,都可以作为服务器的路由函数,net/http 库自带的默认路由 DefaultServeMux 是通过 map 实现的。 -
下列关于 context 的说法正确的有?
A. 官方推荐所有函数第一个参数为 context,其实完全没有必要。
B. context 的 Done 和 CancelFunc 其实功能差不多,完全可以只监听 Done 事件。
C. net/http 会为每个请求生成一个 context,并且存放在 request 结构体中。
D. context 机制能有效防止 Golang 中系统雪崩。 -
下列关于路由的说法正确 的有?
A. 路由一般使用 HTTP 请求的第一行 Request Line 的三个部分 Method、Request-URI 和 HTTP-Version 来寻找控制器。
B. net/http 默认路由是不支持动态路由匹配的。
C. trie 树算法替代哈希算法能有效提升路由查找效率。_x005f
D. 路由支持的规则越多越好。 -
下列关于中间件的说法正确的有?
A. 中间件的设计,是为了将所有请求都通用的逻辑封装在一个函数中,让请求先经过中间件逻辑再进入业务逻辑。
B. 中间件只能处理 HTTP 请求,无法处理 HTTP 返回。
C. pipeline 思想改造中间件,能让中间件的使用更为优雅。
D. 如果框架有了一个 Recovery 中间件,那么创建新 Goroutine 的时候就不需要管理 panic 了。 -
下列关于封装的说法正确的有?
A. 对于一个框架来说,封装请求和返回值是一件可有可无的事情。
B. 对一个功能的封装,应该先思考接口,再思考实现。
C. jsonp 能解决跨域资源共享问题。
D. 封装输出 HTML 的时候,可以使用官方的 template 库来快速实现。 -
下列关于优雅重启的说法正确的有? A. 优雅关闭其实是没有必要的,低峰期直接结束进程快速启动即可。
B. kill -9 的信号是可以被捕获的,我们也可以使用这个信号量来实现优雅重启。
C. net/http 在 Go1.8 之后在 server.Shutdown 方法中提供了优雅重启的逻辑。
D. 优雅重启的机制主要通过 os/signal 库捕获信号量来处理。 -
下列关于 Gin 框架的描述,哪些是正确的?
A.Gin 的 Recovery 中间件能打印堆栈信息。
B.Gin 的路由使用 radix tree 来实现的