北京Linux培训
达内北京天坛中心

010-62126400

热门课程

北京linux培训 > 雇主企业 > 企业笔试题 >这些Linux面试题的不同解析思路你知道几个?

这些Linux面试题的不同解析思路你知道几个?

  • 时间:2018-09-30 10:45
  • 发布:北京linux培训
  • 来源:企业笔试题

今天我给大家分享一道Linux面试题,希望在Linux学习过程中能够帮助到大家!
面试是一个不断学习提升的过程,既是面试官考核面试者,也是面试者学习、考核你未来的上级的过程。如下是我面试一大型互联网公司的题目:

题目

一种常见的场景,比如说日志文件: 文本1中含有若干行query词,其中query词可能有重复,文本2中也含有若干行query词,query词也有重复。并且重复的query词并不一定相邻。

如何快速找到2个文本中相同的query词?

我当时并不熟悉uniq -d可以仅仅显示重复的行这个命令,所以没能用Linux命令快速实现,而仅仅会用Awk脚本来完成。

方法一:Linux命令行

下面给出了Linux命令的一种方法

sort -u A1 >A1.s && sort -u A2 >A2.s && cat A1.s A2.s | sort | uniq -d >duplicate

很简洁,但是算法复杂度为O(nlogn+mlogm),主要时间耗在排序之上。另外,提醒一下大家,uniq之前一定要先sort,因为uniq只对相邻的行来进行处理。

这是百度的一位同学给出的答案,后来跟他交流了一下,他说大数据处理写脚本,无非是cat,sort,uniq。可见这三个命令的重要性,所以大家努力掌握吧。

方法二:Awk脚本 

若使用awk,则有

awk  'NR==FNR{A[$1] = $1;} NR >FNR {if ($1 in A)print  $0}' A1 A2 >same

算法复杂度为O(m + n),这是因为awk中数组是基于Hash的。NR,表示awk开始执行程序后所读取的数据行数。FNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计。所以可以用NR和FNR比较区分两个文件。

相信学好Linux系统这门技术,大家在面试工作的过程中一定可以顺利通过。想了解更多专业知识,请关注北京达内Linux培训班课程。

上一篇:linux面试常用命令
下一篇:BAT面试Linux运维选择题分享,看看你能答对几道

Linux运维必须掌握的职场技能,Linux面试题分享

Linux运维面试简答题,这些必考知识点需要熟练掌握!

BAT面试Linux运维选择题分享,看看你能答对几道

这些Linux面试题的不同解析思路你知道几个?

选择城市和中心
贵州省

广西省

海南省