1. 奇安信运维测试题
整体涵盖了Linux操作、计算机网络、操作系统、数据结构、Java基础、C++基础以及算法。
参考:https://www.icode9.com/content-1-1306472.html
- 对一个文件的访问,常由用户访问权限和文件属性共同限制。
- TCP比UDP更适合局域网,UDP更适合广域网。
- 当链表为空时,新插入链表的节点既是首节点也是尾结点。
- 有向无环图存在拓扑排序。
拓扑排序:对有向图构造拓扑排序,解决工程是否能够顺利进行的问题。
- 当全部顶点都被输出,说明图中无【环】存在,是AOV网;
- 没有输出全部顶点,说明图中存在【环】,不是AOV网;
- AOV(Activity On Vertex Network)即一种有向无环图。
- 哈希表
- 哈希表的查询时间是hashmap.get(key),常数级的查询时间,因此哈希表查询的时间复杂度是O(1) ;
- 哈希表不保存插入顺序,不可以按照下标读取元素;
- 哈希表不适于做优先级队列;
- 优先级队列具有最高级先出的特点,因此需要元素按照优先级排序,但哈希表是无序的,因此哈希表不适合做优先级队列
- 哈希表查找的思想 ——
- 初始时,Addr = Hash(key)
- 检测Addr位置是否有记录,若无记录则查找失败;若有记录,则进行对比,若对比成功,则查找成功;否则,进入下一步
- 使用冲突解决方案更新Addr,回到第一步。
- 存在一个数字组成的序列[a1,a2,…,aN],若要统计所有数字出现的次数,用以下哪种数据结构比较适合?
- 应该用哈希表,哈希表统计的时候可以根据哈希函数和冲突解决方案进行统计。
- 数据、双链表、单链表要做统计就只能做遍历。
- 一个台阶总共有10 级,一次可以向上走1 级,也可以向上走2 级,请问一共有多少种走法?
- 动态规划题。斐波那契数列。
- MySQL的数据库索引使用的数据结构是B+树。
- B+树数据存放在叶子结点,非叶子结点不存放数据,当查询到叶子结点数据的时候会将前后的数据一起查询出来返回结果,链表形式查询更加方便。
- 我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈希索引(hash index)等。
- epoll的模式
- epoll是Linux内核的可扩展I/O事件通知机制
- epoll的两种模式,EL边缘模式和TL水平模式。epoll默认使用TL,TL支持非阻塞IO
- epoll ET模式必须配合non-blocking IO使用
- 在一个空目录下执行
umask 333; touch hello;
命令后,hello文件的权限为?
- 在一个空目录下执行
- umask [参数] [权限掩码]
- umask命令可以用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将所有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
- root用户下为022(首位0忽略)
```bash
umask过滤权限,333表示-wx-wx-wx
umask 333结果为r—r—r—
umask 333
创建一个空文件hello
touch hello
11. 在DNS系统测试时,假设named进程号是53,如何通知进程重读配置文件
1. kill -HUP 53
```bash
# kill命令格式
# HUP:重新加载进程,INT:中断进程
kill 参数 进程号
# 使用 kill -l 命令列出所有可用信号。
#最常用的信号是:
# 1 (HUP):重新加载进程。
# 9 (KILL):杀死一个进程。
# 15 (TERM):正常停止一个进程。
- 视图可用于限制对表中特定行或列中的数据的访问。
- 数据库中的视图即查询所得的结果集,是动态生成的。
- 要添加索引的一个理由是:提高SELECT语句的性能。
- 您需要从您的数据库中删除名为 EmployeeView 的视图:DROP VIEW EmployeeView
- MySQL删除一个视图命令:drop view viewName
- NAT
- NAT(Network Address Translation),是指网络地址转换;
- https://info.support.huawei.com/info-finder/encyclopedia/zh/NAT.html
- NAT是用来解决IP地址不足的问题的,虽然现在IPv6地址很多,但也不一定未来就不需要;
- 可实现地址转换;可实现端口转换;可同时实现地址和端口转换。
- IPv6过渡技术
- 短期内无法全部使用ipv6,在ipv4和ipv6的过渡过程中需要一些共存策略和过渡技术:
- 双栈技术:同时使用IPv4和IPv6;
- 隧道技术:IPv6 over IPv4隧道和IPv4 over IPv6隧道;
- NAT64(协议转换技术)。
- 短期内无法全部使用ipv6,在ipv4和ipv6的过渡过程中需要一些共存策略和过渡技术:
- OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- 18,19 是java略过
- 面向对象的基本原则
- 面向对象的三大特性:封装、继承、多态
- 面向对象的七(或五大原则,前五项)大基本原则:
- 单一职责原则(SRP) 、
- 开放封闭原则(OCP) 、
- 里氏替换原则(LSP)、
- 依赖倒置原则(DIP)、
- 接口隔离原则(ISP)、
- 迪米特法则(Law Of Demeter)、
- 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)
- 1
- 1
- 1
- 1
- 1
- 1
- 21~27是java题 暂时略过。
- 关于协程
- 协程(Coroutines)是一种比线程更加轻量级的存在。协程完全由程序所控制(在用户态执行),带来的好处是性能大幅度的提升。
- https://cloud.tencent.com/developer/article/1916705
- 通过channel来进行协程间的通信。
- 1
- 哪一个命令可以关机,而不重启?
- 关机是halt / shutdown -h now
- 重启是reboot / shutdown -r now
- Linux开机启动过程:
- 运行第一个进程init(进程号永远为1);
- 读取MBR的引导文件(grub,lilo);
- 引导linux内核;
- 进入相应的运行级别。
- inode
- https://ruanyifeng.com/blog/2011/12/inode.html
- inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础;
- inode包含文件的元信息;每一个文件都有对应的inode,里面包含了与该文件有关的一些信息;
- 可以使用 stat命令,查看某个文件的inode信息;
- 特殊文件(比如乱码文件名)可以通过inode的方式删除;
- inode节点的大小一般是128字节或256字节
- bash符号
- $$ Shell本身的PID(ProcessID)
- $! Shell最后运行的后台Process的PID
- $? 最后运行的命令的结束代码(返回值)
- $- 使用Set命令设定的Flag一览
- $ 所有参数列表。如”$“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
- $@ 所有参数列表。如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。
- $# 添加到Shell的参数个数
- $0 Shell本身的文件名
- $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。