电话:13485538018
关闭
您当前的位置:首页 > 职场资讯 > 面试秘籍

面试Linux命令别只会cat,28K的价码要对得起技能

来源:网络整理 时间:2026-04-17 作者:佚名 浏览量:

刚刚瞅见一个帖子,讲的是面试了一位索要 28K 的候选人,其简历上写着“熟练掌握 Linux/Shell”,然而到了现场,要求写一个统计 Nginx 日志里访问量排名前十的 IP 的命令时,这人呆住了好半晌,仅仅敲出个 cat,而后面的 awk、sort、uniq 全都不会。

我觉着这件事情,重点并非在于那道题目,而是在于“精通”这两个字眼。你要是想要薪资涨到28K,从本质上来说那就是在告知老板:我具备独立解决一类问题的能力。然而要是连统计日志这种基础性的工作都搞不定,那就只能表明你的薪资要求和实际能力还没有相互匹配。简历若稍微有些水分,或许能够骗取到一两次面试机会,但是一旦真正到了岗位上,终究是要付出代价的。

话又讲回来,不会这些工具并非就是原罪,谁不是从仅仅会cd起步的?然而千万别把了解写成精通。踏踏实实地将基础命令练得娴熟,让自身配得上那个数字,比起在简历上堆砌词汇可要靠谱得多。薪资,可以增长得缓慢些,可千万别虚假。

算法题:整数转罗马数字

在前天夜里十一点过少许的时候,本人待于公司楼下之便利店内等待加热之牛奶,与此同时刷着手机随意地逛着,然而我们组的那个称作小李的人忽然给我发送来消息:

兄台,整数转化成罗马数字你是怎么撰写的呀?我才刚刚在 LeetCode 上面被这道题目弄得晕头转向的呢……

我整个人仍旧处于那种半梦半醒的态势之中,在我脑子里首先突然冒出来的并非是算法之类的东西,而是如同罗马电影里展现的那种盔甲,嗯,还是来讲讲正事吧。

给你一个处于通常为一至三千九百九十九这个范围之内的整数 num ,需将其转变成为罗马数字字符串 ,诸如:

你们肯定在学校都背过一遍:

但真正写代码的时候,坑在“减法规则”那几种特殊写法上:

换言之,正是这六个别具一格的值,总是致使人们反复进行条件判断,致使代码显得十分难看。

<a href=统计Nginx日志Top10IP命令_精通LinuxShell_php面试linux常用命令面试"/>

彼时,我即刻对着小李表明:切勿强行采用if方式,而是运用“贪心”这一方法,如此书写起来,既短小又顺畅。

思路特别接地气,就一句话:

每一回都采用“能够减掉的最大罗马数值”,朝着结果之中拼接字符串,始终在 num 减至 0 的时候才停止。

举个例子,1994:

得到 "MCMXCIV",完事。

你瞧,压根儿没必要自己去犯愁“此时是否要用减法予以表示”,鉴于我们从一开始便将【正常值 + 特殊值】统统放置到数组当中了,借助一套统一的逻辑来处理。

当时,我是这般丢给小李的,直接呈上Java代码,其运行起来毫无问题,你能够直接将它抄到IDE里面去尝试:

public?class?IntToRomanDemo?{

? ??public?static?String?intToRoman(int?num)?{
? ? ? ??// 从大到小列出所有“关键数值”和对应的罗马符号
? ? ? ??int[] values = {
? ? ? ? ? ? ? ??1000,?900,?500,?400,
? ? ? ? ? ? ? ??100,?90,?50,?40,
? ? ? ? ? ? ? ??10,?9,?5,?4,
? ? ? ? ? ? ? ??1
? ? ? ? };

? ? ? ? String[] symbols = {
? ? ? ? ? ? ? ??"M",?"CM",?"D",?"CD",
? ? ? ? ? ? ? ??"C",?"XC",?"L",?"XL",
? ? ? ? ? ? ? ??"X",?"IX",?"V",?"IV",
? ? ? ? ? ? ? ??"I"
? ? ? ? };

? ? ? ? StringBuilder sb =?new?StringBuilder();

? ? ? ??// 贪心:能减就一直减,顺便把符号拼上去
? ? ? ??for?(int?i =?0; i < values.length && num >?0; i++) {
? ? ? ? ? ??while?(num >= values[i]) {
? ? ? ? ? ? ? ? num -= values[i];
? ? ? ? ? ? ? ? sb.append(symbols[i]);
? ? ? ? ? ? }
? ? ? ? }

? ? ? ??return?sb.toString();
? ? }

? ??// 简单测几组,自己看输出就行
? ??public?static?void?main(String[] args)?{
? ? ? ??int[] tests = {3,?4,?9,?58,?1994,?3999};
? ? ? ??for?(int?n : tests) {
? ? ? ? ? ? System.out.println(n +?" -> "?+ intToRoman(n));
? ? ? ? }
? ? }
}

后来,第二天的时候,小李在工位这边,跟我讲,“哥,我之前原本是打算用一坨 if/else 去搞定的,然而现在发觉你这种表驱动的写法,修改起来也蛮舒适的,就好比我要是要去支持别的那种奇葩规则,朝着数组里面添加几项就可以完成了。”。

我心里想,这小子总算慢慢开始摆脱“面向 if 编程”了。

哎,就这样,关于整数转罗马这件事咱们就先说到这儿了,我,现在要去喝一口水,你,要是哪一天打算把那个“罗马转整数”也给写出来的话,那咱之后再找时间接着聊。

微信扫一扫分享资讯
相关推荐
暂无相关推荐
客服服务热线
13485538018
24小时服务
微信公众号
手机浏览

CopyrightC 2009-2025 All Rights Reserved 版权所有 芜湖人才网 本站内容仅供参考,不承担因使用信息、外部链接或服务中断导致的任何直接或间接责任,风险自担。如有侵权,请联系删除,联系邮箱:ysznh@foxmail.com 鄂ICP备2025097818号-15

地址: EMAIL:qlwl@foxmail.com

Powered by PHPYun.

用微信扫一扫