自动化运维+数据结构必会题,上岸必备,祝大家逢面必过

Posted 普通网友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维+数据结构必会题,上岸必备,祝大家逢面必过相关的知识,希望对你有一定的参考价值。

自动化运维+数据结构必会题

Day1

1.shell中的变量有哪几种?

a)本地
b)全局
c)内置

2.shell中命令变量如何定义?

a)$(命令)
b)命令

3.shell中定义变量的时候如果含有其他变量的引用,应该如何定义?

a)data=”$var”

4.请说出如下shell中内置变量的含义

a)$$ 进程号

b)$n 脚本获取的第n个参数

c)$# 脚本获取的参数个数

d)$? d)上一命令的执行结果

e)$0 脚本名

5.shell中如何进行字符串截取(截取公式)?并说明参数意义

a)$var:start:n

b)var表示带截取关键字变量,start表示从索引为第几位开始截取,n表示截取多少个字符

6.shell中常用的测试语句有哪些?

a)Test
b)[]

7.shell中数值计算如何进行数值计算?应该注意些什么?

a)$((计算公式))

b)let 计算公式

c)shell中进行数值计算只能对整型数据进行加减乘除操作

Day2

8.请说出常见的shell中的流程控制语法

a)if

b)case

c)for

d)while

e)until

9.参数和功能详情如下:


脚本 X.sh 使用方式 X.sh [ start|stop|restart ]
脚本内容

# case语句使用场景
case "$1" in                 
    "start")                 
        echo "服务启动中..."                  
        ;;                  
    "stop")                 
        echo "服务关闭中..."                  
        ;;                          
    "restart")                   
        echo "服务重启中..."             
        ;;                  
    *)                 
        echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"      
        ;;                  
esac
 

9.shell中函数如何获取函数调用是的传参?

a)在函数内部使用$n

10.代码发布的整体流程是什么?

获取代码
打包代码
传输代码
停止应用
解压代码
防止代码
开启应用
检查效果
对外访问

11.企业中常用的代码仓库是什么?

a)Gitlab

b)Svn

Day3

12.如何进行Python源码安装?

a)Python setup.py install

13.如果源码安装c程序

a)配置 ./configure
b)编译 make
c)安装 make install

Day4

1.算法的特征?

1)有穷性: 一个算法必须保证执行有限步骤之后结束;

2)确切性: 算法的每一步骤必须有确切的定义;

3)输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身给出了初始条件;

4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

5)可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次数运算后即可完成。

2.什么是算法?什么是数据结构?

算法是独立存在的一种解决问题的方法和思想。

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

3.简单描述一下如何计算一个算法的时间复杂度?

基本操作,即只有常数项,认为其时间复杂度为O(1)
顺序结构,时间复杂度按加法进行计算
循环结构,时间复杂度按乘法进行计算
分支结构,时间复杂度取最大值

判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略
在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度

4.什么是空间复杂度?

空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。

5.书序表的实现形式有哪些?各自有什么特点

基本形式
数据元素本身连续存储,每个元素所占的存储单元大小固定相同

元素外置
元素的大小不统一,将实际数据元素另行存储,而顺序表中各单元位置保存对应元素的地址信息

Day5

6.顺序表的两种实现方式是什么?有什么特点?两种方式在扩容时的表现?

一体式结构
整体性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。

分离式结构
表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。

一体式结构由于顺序表信息区与数据区连续存储在一起,所以若想更换数据区,则只能整体搬迁,即整个顺序表对象(指存储顺序表的结构信息的区域)改变了。

分离式结构若想更换数据区,只需将表信息区中的数据区链接地址更新即可,而该顺序表对象不变。

7.请说一下算法的稳定性是什么?

稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。

Day6

8.冒泡排序的思想?

冒泡思想:通过无序区中相邻记录的关键字间的比较和位置的交换,使关键字最小的记录像气泡一样逐渐向上漂至水面。整个算法是从最下面的记录开始,对每两个相邻的关键字进行比较,把关键字较小的记录放到关键字较大的记录的上面,经过一趟排序后,关键字最小的记录到达最上面,接着再在剩下的记录中找关键字次小的记录,把它放在第二个位置上,依次类推,一直到所有记录有序为止。

9.插入排序的思想?实现一下

插入的思想:将无序列表第一个数据看做是有序的,从索引为1的数据开始遍历的最后分别将其插入到左侧有序序列中,在插入的过程中分别同有序序列中的数据进行比较,如果小于左侧的数据则发生交换行为,如果大于则直接停止。

def bubble_sort(alist):
    # 获取列表的长度
    n = len(alist)

    for i in range(n-1):
        # 开启大循环,每一次循环将会从无序序列中获取最大值
        # 统计发生交换行为的次数,小循环结束如果counter为0则表明列表中的数据是有序的,直接退出大循环
        counter = 0
        print("$$$")
        for j in range(n-1-i):
            if alist[j] > alist[j+1]:
                alist[j],alist[j+1] = alist[j+1],alist[j]
                counter += 1
        if counter == 0:
break

10.快速排序的思想?

快排的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

def quick_sort(alist,start,end):
    left = start
    right = end

    if left >= right:
        return

    mid = alist[left]

    while left < right:

        while alist[right] > mid and left < right:
            right -= 1
        alist[left] = alist[right]

        while alist[left] < mid and left < right:
            left += 1
        alist[right] = alist[left]
    alist[left] = mid

    quick_sort(alist, start, left-1)
    quick_sort(alist, left+1, end)

9.你知道哪些排序算法(一般是通过问题考算法)?

冒泡, 选择, 快排, 归并,插入,希尔

小结

关于自动化运维和数据结构面试题就先写到这里啦,有什么不足需要改进的地方欢迎大家指出来哦。

之后会继续更新面试系列,Python系列的文章,欢迎大家关注博主!

以上是关于自动化运维+数据结构必会题,上岸必备,祝大家逢面必过的主要内容,如果未能解决你的问题,请参考以下文章

前端面试必会题(1)

前端面试必会题(4)

前端面试必会题(2)

js高级笔试必会题

LeetCode 0144. 二叉树的前序遍历:二叉树必会题

面试必备-Java虚拟机内存管理必知必会