面试真经(运维工程师)

1.熟悉的排序算法有哪些,它们的时间空间复杂度如何?

排序算法主要分为内部排序外部排序内部排序指的是数据记录在内存中进行排序,而外部排序则适用于排序的数据量很大,一次不能容纳全部排序记录的情况,需要在排序过程中访问外存。

常见的内部排序算法包括插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。

  1. 插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序是稳定排序。
  2. 希尔排序:是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
  3. 选择排序:在每一趟从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定排序。
  4. 冒泡排序:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有再需要交换,也就是说该元素列已经排序完成。冒泡排序是稳定排序。
  5. 归并排序:是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个非常典型的应用。
  6. 快速排序:是由冒泡排序改进而来的。在冒泡排序过程中,只对相邻的两个元素进行比较,因此每次交换两个相邻的元素时只能消除一个逆序。快速排序方法中的一次交换可能消除多个逆序,从而大大加快排序的速度。快速排序是不稳定排序。
  7. 堆排序:是利用堆这种数据结构而设计的一种排序算法。堆排序是一种选择排序,它的最坏、最好、平均时间复杂度均为O(nlogn),它也是不稳定排序。
  8. 基数排序:按照低位先排序,然后收集;再按照高位排序,然后再收集;以此类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。基数排序是稳定排序。

2. 谈谈关于SHELL脚本三剑客?

  1. grep

    • 功能:grep是一个强大的文本搜索工具,它使用正则表达式搜索文本,并将匹配的行打印出来。
    • 应用场景:grep常用于在文件中查找包含特定模式的行,例如查找包含某个关键词的日志文件、配置文件等。
    • 示例grep 'error' logfile.txt 会在logfile.txt中查找包含“error”的行并打印出来。
  2. awk

    • 功能:awk是一个强大的文本分析工具,它不仅可以像grep一样进行模式匹配和文本搜索,还可以对匹配到的行进行复杂的文本处理和数据提取。awk支持使用变量、条件语句、循环等编程结构,使其功能更加强大和灵活。
    • 应用场景:awk常用于数据分析和报表生成,例如从日志文件中提取特定字段的数据、统计某个字段的出现次数等。
    • 示例awk '{print $1}' data.txt 会打印data.txt文件中的第一列数据。
  3. sed

    • 功能:sed是一个流编辑器,用于对输入流(或文件)进行基本的文本转换。它可以执行删除、替换、插入等操作,并支持使用正则表达式进行模式匹配。
    • 应用场景:sed常用于文本替换和修改,例如批量替换文件中的某个字符串、删除文件中的空行等。
    • 示例sed 's/old/new/g' file.txt 会将file.txt文件中的所有“old”替换为“new”。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元气满满的热码式

感谢您的支持!我会继续努力发布

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值