笔试面试问题总结

2022年找实习-运维DevOps

某 bank-笔试

  1. 小根堆是什么?堆是什么?

    堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左子节点和右子节点的值。
    最大堆和最小堆是二叉堆的两种形式。
    最大堆:根结点的键值是所有堆结点键值中最大者。
    最小堆:根结点的键值是所有堆结点键值中最小者。
    而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。
    最大-最小堆是最大层和最小层交替出现的二叉树,即最大层结点的儿子属于最小层,最小层结点的儿子属于最大层。
    以最大(小)层结点为根结点的子树保有最大(小)堆性质:根结点的键值为该子树结点键值中最大(小)项。

  2. 在一个进程使用完它的时间片后,会进入什么状态?

    进程的三种状态

  3. ArrayList 的底层原理是什么?

    数组

  4. public class A implements A,B?

    接口可以继承接口,不能实现接口 单继承多实现

  5. 使用 DP 应该满足什么性质?

    DP动态规划

  6. TDD 模式是什么?

    TDD:测试驱动开发(Test-Driven Development)

    测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。

  7. 使用线程 synchronized 有什么用?多选

    java synchronized

  8. 泛型

  9. 客户端发送 SYN = 1 之后进入什么状态?

    TCP的状态

  10. 图的遍历过程

  11. 创建新目录用什么类?File

  12. 下推自动机读几型文法?

    • 0 型文法

      G = ( VT, VN,P, S ),每一个产生式:α \alphaα ——> β \betaβ ,α \alphaα ∈ \in∈ (VN ∪ \cup∪ VT)* 至少含有一个非终结符,而β \betaβ ∈ \in∈ (VN ∪ \cup∪ VT)*, 则G是一个0型文法,功能相当于图灵机,也称短语文法

    • 1 型文法

      1型文法也叫上下文有关文法,此文法对应于线性有限自动机。它是在0型文法的基础上每一个α \alphaα ——> β \betaβ ,都有 | β \betaβ | >= | α \alphaα |,这里的 | β \betaβ | 指的是 β \betaβ 的长度,特例:α \alphaα ——> ϵ \epsilonϵ 也是1型文法

    • 2 型文法

      2型文法也叫上下文无关文法,通过下推自动机(PDA)识别,2型文法是在1型文法的基础上满足,每一个 α \alphaα ——> β \betaβ 都有 α \alphaα 是非终结符

    • 3 型文法

      3型文法叫做正则文法,他对应有限状态自动机。在2型文法的基础上满足,A ——> a | aB(右线性) 或 A—> a|B(左线性) 例子:A ——> ϵ \epsilonϵ | aB , B —> Ab | a,0型文法、1型文法、2型文法,不是3型文法

算法题

  1. 十进制转 16 进制 有多少位是字母?

  2. n x y

    10 7 8 4 5 1

    n 个人 如果某个人前 x 个人的精神值和后 y 个人的精神值都大于他,那么他开始卷

    求第一个开始卷的人

    可以使用线性前缀和

  3. 动态规划题

    n k

    230848942398

    n 个数,求数字串 n 的子串中,能被k整除的个数

    解题思路:如果一个数 abc, c可以被 k 整除,b*10可以被k整除,那么 bc 也可以被k整除; 质数筛

搜索过程中,建立指向其父节点的指针有什么用?

  1. 建立了路径,可以知道某个子节点是从哪个父节点搜索过来的,便于表示路径
  2. 方便回溯,深搜时可以回到父节点,再去搜索其他节点

***9-笔试

选择题:

  • awk 的用法 这个还得是多用才会

  • MySQL grant 一个用户查询权限:

  • ssh 允许 root 用户登录的设定 PermitRootLogin Yes

  • ssh 允许某个用户登录的设定: PermitUser? AllowUsers?

    AllowUsers Sunnyrian

技术问答题:

  • 请写出 Openstack 的四种基础组件,并描述他们的功能用途

https://www.redhat.com/zh/topics/openstack

Nova 是一种用于完整管理和访问 OpenStack 计算资源的工具,能够处理资源的调度、创建和删除。

Neutron 在连接 OpenStack 服务之间的网络。

Swift 是一种高度容错的对象存储服务,使用 RESTful API 来存储和检索非结构数据对象。

Cinder 提供可通过自助服务 API 访问的持久块存储。

Keystone 负责所有 OpenStack 服务的身份验证和授权。它也是所有服务的端点目录。

​ Glance 可存储和检索多个位置的虚拟机磁盘镜像。

程序题:

写一个脚本,每 30 s ping 一次 1.1.1.1 和 2.2.2.2,如果他们挂了,那么执行一条告警命令 alert xxxxxx;告警规则有收敛,每1h告警一次

问答题:

  • 大学期间你做过的最有成就感的事情是什么?为什么?
  • 你觉得你是一个什么样性格的人?你的什么特质会影响你的发展?
  • 如果你的一个方案被上级领导通过了,但在小组执行过程中受阻无法推进,那么你要怎么样做?

某易-笔试

4 道算法题 1 道问答题

小红拿到了一个 n 个节点、m 条边的无向

小红拿到一个数组 a,她定义一个区间的权值为区间内所有数的乘积末尾 0 的数量,求所有区间的权值之和

称区间 [i, j] 的权值 f[i, j] 为区间内所有数乘积末尾0的数目

例如:一条边连接的两个点的权值是50和60,那么小红删掉这条边获得的价值为3

小红想知道,在保证这张图连通的情况下,最多可以通过删边获得多少价值

输入:第一行: 正整数 1 <= n <= 1e5

第二行: n 个正整数 1 <= ai <= 1e9

样例:input: 3

10 2 5

output: 5

[1, 1] 乘积 10 权值 1

[1, 2] 乘积 20 权值 1

[1, 3] 乘积 100 权值 2

[2, 2] 乘积 2 权值 0

[2, 3] 乘积 10 权值 1

[3, 3] 乘积 5 权值 0

总权值为5

某鹅-笔试

36 道单选题,16 道多选题

  • 网卡 bond 一共有多少种模式链路聚合是模式几?7 6

  • Linux signal 系统是什么?

  • n 道逻辑题

  • 爬 11 个台阶楼梯,每一次爬可以选择爬一个台阶或者两个台阶,有多少种可能?

    https://zhidao.baidu.com/question/55948878.html

  • C++ 知识 k = f( a++) a 等于 3 的话 k 等于几? 3

  • Docker 使用了 Linux 内核的什么特性? Capabilities? Secure Computing mode(Seccomp)?

    docker 依赖于Linux的二个特性:命名空间(namespace)和控制组(cgroups)

  • 进程fork 输出几个p? 14

    for(int i = 0; i < 3; i++)

    {

    ​ print(“p”);

    ​ fork();

    }

  • 37 转 3 进制是什么? 1101

  • NIC Network Interface Controller 网卡 Processer 处理器 Memory 内存 Hard disk 硬盘

  • 会话 1 对一个表上了一个共享锁,那么会话 2 还可以对这个表干嘛? 对某一行上排他锁互斥锁?对整个表又能上什么锁?

  • 用什么指令在 A 服务器检测 B 服务器 HTTP 服务是否工作正常? telnet? ping? nmap?

    curl (但是选项中没有) 我选了 telnet 可以 telnet 服务器 80 端口判断

  • shell 知识: $x= 3 + “15%” + “$25”;

    ​ var_dump($x);

    ​ var_dump(0123==123);

    ​ var_dump(‘0123’==123); 问输出什么?

  • 数据库事务的隔离级别? 哪种不会脏读?

    1)Read Uncommitted(读未提交)

    一个事务在执行过程中,既可以访问其他事务未提交的新插入的数据,又可以访问未提交的修改数据。如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据。此隔离级别可防止丢失更新。

    2)Read Committed(读已提交)

    一个事务在执行过程中,既可以访问其他事务成功提交的新插入的数据,又可以访问成功修改的数据。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。此隔离级别可有效防止脏读。

    3)Repeatable Read(可重复读取)

    一个事务在执行过程中,可以访问其他事务成功提交的新插入的数据,但不可以访问成功修改的数据。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。此隔离级别可有效防止不可重复读和脏读。

    4)Serializable(可串行化)

    提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。此隔离级别可有效防止脏读、不可重复读和幻读。但这个级别可能导致大量的超时现象和锁竞争,在实际应用中很少使用。

    一般来说,事务的隔离级别越高,越能保证数据库的完整性和一致性,但相对来说,隔离级别越高,对并发性能的影响也越大。因此,通常将数据库的隔离级别设置为 Read Committed,即读已提交数据,它既能防止脏读,又能有较好的并发性能。虽然这种隔离级别会导致不可重复读、幻读和第二类丢失更新这些并发问题,但可通过在应用程序中采用悲观锁和乐观锁加以控制。

  • ACID 是什么?

    • Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
    • Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
    • Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
    • Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
  • Redis 是非关系型数据库吗? 是的

  • B+ 树相比 B 树的优点?

  • 数据库分库分表

  • GPU DNN 深度学习神经算法

  • 数据库 grant 操作 quesr@localhost 只能在localhost登录?错 localhost是指本地这台机

    同时给的权限怎么定义?什么时候该用户可以把他的权限又 grant 给别人?

  • 在 OS 内下,ipmitool 命令可以干哪些事情?

  • 传统 BIOS 相比 UEFI BIOS 的不足有什么?

    UEFI BIOS和传统BIOS的一个显著区别就是UEFI是用模块化、C语言风格的参数堆栈传递方式、动态链接的形式构建的系统,比传统BIOS而言更容易于实现,容错和纠错特性更强,缩短了系统研发的时间。它运行于32位或64位模式,乃至未来增强的处理器模式下,突破传统16位代码的寻址能力,达到处理器的最大寻址。它利用加载UEFI驱动的形式,识别及操作硬件,不同于BIOS利用挂载模式中断的方式增加硬件功能。

  • MySQL 联合索引怎么做?

  • OSI 网卡工作在那几层? 物理层 数据链路层 网络层

  • 以下哪些硬件可以热拔插? 内存 CPU 硬盘 电源

某 bank-一面

  1. 自我介绍:

  2. 为什么会选择做运维?

  3. 描述一下网络4层架构和OSI七层协议我更偏向于去描述一个访问qq.com的过程

    能把自己很熟悉的东西,简洁有力地说出来,也是一种能力

  4. TCP 和 UDP 的区别

    TCP(Transport Control Protocol) 是面向连接的协议,就是说在传输数据之前一定要先建立连接,TCP 是通过三次握手完成连接的建立的,断开连接时采用四次挥手

    1466805-20191021113037722-1150740308.png

    UDP(User Data Protocol) 用户数据报协议

    • UDP使用尽最大努力交付,即不保证可靠交付, 因此主机不需要维持复杂的链接状态表
    • UDP是面向报文的。发送方的UDP对应用程序交下来的报文, 在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界, 因此,应用程序需要选择合适的报文大小。
    • 也不算完全没有连接,WireGuard 隧道会在建立隧道时确定双方的握手间隔,以保持连接活跃,确定隧道连通
  5. HTTP 和 HTTPS

    易于理解版本

    简述一下 HTTPS 的加密过程?

    • 客户端想要访问服务端的页面
    • 服务端向客户端发送证书
    • 客户端校验证书,检验收到的证书是否过期,是否可信任,提取出公钥
    • 客户端生成一个随机码,用公钥加密,然后发送给服务端
    • 服务端拿到加密后的随机码,用自己的私钥解密它,得到客户端生成的随机码
    • 服务端用该随机码加密要传输的页面,传输给客户端

    那么客户端是怎么验证这个证书的可信性呢?

    微信截图_20220428163404.png

    CA 颁发证书的过程

    • 首先 CA 把证书持有者的公钥、用途、颁发者、有效时间等信息打包,然后对这个包进行 Hash 计算,得到一个 Hash 值
    • 然后 CA 会使用自己的私钥将该 Hash 值加密,生成数字签名 Certificates Signature
    • 然后把数字签名和上面的信息,合成数字证书,就有了一张证书

    客户端校验服务端的数字证书的过程

    • 首先客户端会使用同样的 Hash 算法 获取该证书的 Hash 值 H1
    • 然后通过操作系统或者浏览器有的 CA 的公钥信息,解密证书的数字签名,得到一个 Hash 值 H2
    • 最后比较 H1 和 H2,如果它们完全相同,那么这个证书是可信任的,否则为不可信

    一般来说,服务端的数字证书的签发者都不会是根证书,那么无法直接通过本地内置的 CA 公钥去直接校验证书,会有这么一个过程

    • 先通过根证书校验中间证书是否可信任
    • 如果中间证书可信任,再用中间证书的公钥去解析网站证书
  6. Nginx 配置,对 ip 限流的配置?

  7. SFTP FTP

    • SFTP 是在 22 端口建立的 SSH 连接的基础上去进行文件传输的,因此它是安全的传输,但因为要加密,会基于加密算法的类型,有性能损耗,传输效率低
    • FTP 的 21 端口用于传输控制信息,是否使用 20 端口作为传输数据的端口与 FTP 使用的传输模式有关,如果采用主动模式,那么使用20端口,被动模式的话使用随机端口传输数据
    • FTP 是用明文传输数据的,不对数据进行加密
  8. 平常用什么去 genkey?ssh-keygen

  9. 对数据库这方面了解怎么样?

有数据库表

客户表:cust(cust_id,cust_name)

理财产品表:prod(prod_id,prod_name)

客户购买理财产品表:cust_prod(cust_id,prod_id)

  • 查询所有 A 客户购买了,而 B 客户没有购买的产品名

    select prod_name from cust, prod, cust_prod

    where cust.cust_id = cust_prod.cust_id and

    ​ prod.prod_id = cust_prod.prod_id and

    ​ cust_name = “A” and

    ​ not in ( select prod_name from cust, prod, cust_prod

    ​ where cust.cust_id = cust_prod.cust_id and

    ​ prod.prod_id = cust_prod.prod_id and

    ​ )

  • 查询所有 A 客户购买了,而 B 客户也购买了的产品名

  • 查询购买了客户 A 所有产品的客户名

  1. 什么是自动化运维?和传统运维有什么区别?

    例如 PaaS ,开发人员需要什么,我们直接提供什么,运用 openstack、k8s、vSphere 等平台,直接提供需要的服务给开发人员,使软件部署到生产环境这一过程得到简化,实现更高效的开发和生产

    传统运维:告诉我你的需求,需要装什么 Linux 系统? 需要多大的内存硬盘要多少CPU核心?网络需求是什么?

    自动化运维:告诉我你需要部署什么服务,我来写 Jenkins,配置好了之后,开发人员一键即部署服务到生产环境,无需管理各种生产以及开发环境的变化

  2. 未来三年的规划,职业生涯的规划?

东方**-笔试

40 道 选择题 1 道 编程题

  1. w3c 制定的规范 js 处理的顺序是怎样的? 事件捕获 事件处理 事件冒泡

  2. java final 变量 父类实例化被拿去赋值给另外一个实例化,能修改吗?

  3. char a = ‘8’ switch(a + 1)

  4. JS 跨域请求数据使用什么? window.name❌

  5. DevOps 关键组件 持续集成 持续交付 持续测试 快速交付

  6. 使用 trustkit 校验 SSL 证书?

  7. 哪个 HTTP method 用于资源更新? update?

  8. char [][3] 有 10 个元素,第一维度最少是? 4?

  9. SQL injection (SQL注入)是针对客户端的吗? nope

  10. 数组相对链表的优点?存储空间小

  11. 哪种 SQL 语句不需要 COMMIT? CREATE 和 ALTER

  12. git pull 合并吗? 可以选择 merge 或者 rebase

  13. Promise 添加回调函数用什么? .then

  14. StringBuffer 和 StringBuilder

  15. XMLHttpRequest sent() 前使用什么方法? init?

  16. Vue 组件参数传递 parameter

  17. DDoS 破坏了 _ _ 性? 可用性

  18. Vue V-if V-show

  19. ARP 属于 WEB 攻击吗?

  20. 编程题 给一个文件 access.log

    读取文件,提取每一行的浏览器访问记录 URL https://baidu.com/*&^*&(&)^(&*^)

    输出 该域名访问次数 域名 order by 次数