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

面试吹精通Linux,连统计IP命令都写不出?28K要价别太虚

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

刚才瞅见一个帖子,里面说有个面试官面试了一位同学,这位同学一开口就要28K,其简历上写着“精通Linux/Shell”,然而到了现场,面试官让写一个统计Nginx访问量Top10 IP的命令,结果这位同学只憋出了个cat,awk、sort、uniq这些全都不会,当时的场面一下子变得特别安静。

在我看来呀,这件事情呢,其关键之处绝非在于一道命令,而是在于“价”与“货”是否能够达成对等的状态。

把28K说成不算低的情况,你声称自己“精通”,那么起码得拥有一些能够展现出来的具备一定水准的基本能力;不会这一情况是很平常的,然而你必须诚实地写上“了解”“熟悉”,而并非甫一开始就将程度提到最高。面试官给出这类题目,实际上就是想要确认你是不是在平常切实做到有做事的实际行动。

从另一个角度去思考,不要将面试当作一种竞争对抗,而是看成一次能够使双方预期达成一致的契机:我自身具备怎样的能力,你又愿意给予怎样的报酬。归根结底依旧是那句话——简历能够做得美观,但不要虚假;薪资可以进行向上协商,但要与自身相匹配。脚踏实地一些,就算增长速度慢一些,相较于凭借吹嘘抬高然后摔得惨痛也要好得多。

今日算法题

昨夜十一点多,于公司楼下蹲守等外卖,迎着些许凉风,手机发出叮声,群内刚转正的小李给我发来截图说道:“哥,面试又问及整数转罗马数字,您可有现成的Java写法?”我瞧了瞧,这不正是那反复提及的题目嘛,然而说实话,真要让你当下从零撰写,多数人还是会卡顿几秒的。

一开始要把规则清晰地讲明白呀,不然往后代码全都是随意编写的。罗马数字存在这些基础符号呢:I代表1,V代表5,X代表10,L代表50,C代表100,D代表500,M代表1000。接着存在几个“减法规则”的搭配组合:4并非IIII,而是IV;9是IX;40是XL;90是XC;400是CD;900是CM。面试官通常会规定整数范围为1至3999,在这个区间刚好使用这些符号就足够了。

在那个时候,小李的最先出现的反应是,是不是要将千位、百位、十位以及个位进行拆分,去弄出四个数组,其中一个数组专门负责千位。

"","M","MM","MMM"

,一个管百位,

整数转罗马数字Java实现_php面试linux常用命令面试_面试官考察Linux Shell技能

空字符,“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCCC”,“CM”。

按照这样的方式依次推导下去,随后依照各个位置进行拼接组合。实际上这个方案根本不存在任何问题,并且也相当容易理解,只不过在书写的时候会显得有些繁杂琐碎罢了,假若不小心在数组中抄错了哪怕一个位置那可就彻底失败了。

我告知他,我当下更为习惯采用“贪心”的书写方式,其思路听闻起来极具生活气息:鉴于罗马数字在本质层面上乃是“由大至小进行凑数”。那么咱们就筹备一份从大到小排列的“面值清单”,诸如 1000、900、500、400、…、1,分别对应 M、CM、D、CD、…、I。接着秉持着这份清单,从最大的着手依次向下扫视,只要当下的数字依旧大于或者等于该面值,便减去它,与此同时在结果字符串的后面拼接上与之对应的罗马符号。恰似始终在寻觅“能够使用的最大面额钞票”。

采用Java去撰写出来大致便是如此模样,小李在当场就把其抄走了,你同样是能够直接予以使用的。

public?class?IntToRomanDemo?{

? ??public?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)?{
? ? ? ? IntToRomanDemo demo =?new?IntToRomanDemo();
? ? ? ? System.out.println(demo.intToRoman(3)); ? ?// III
? ? ? ? System.out.println(demo.intToRoman(4)); ? ?// IV
? ? ? ? System.out.println(demo.intToRoman(9)); ? ?// IX
? ? ? ? System.out.println(demo.intToRoman(58)); ??// LVIII
? ? ? ? System.out.println(demo.intToRoman(1994));?// MCMXCIV
? ? }
}

针对复杂度这方面而言,也是极为轻松的,就这个算法来讲,它循环的次数至多是多少呢?values的长度是被固定为13的,num的大小同样是处于3999范围以内的,有一个数,其最多也就是拼接十几二十个字符,所以呢,你能够毫无顾忌十分豪爽地去说:时间复杂度是O(1),空间方面同样是O(1),属于常数级别的。

最后,我告知小李,在面试时,别刚开始就对着代码进行反驳指责,能够先通过口头方式,将这套“由大到小凑集钱财”的比喻叙述一遍,然后一边讲述一边书写,如此一来,面试官大体上就不会对你刻意刁难了。好了,我的外卖送达了,我得先前往用餐,下次若有机会,再跟你们谈论一下“罗马数字转换为整数”那另一半该如何编写。

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

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

地址: EMAIL:qlwl@foxmail.com

Powered by PHPYun.

用微信扫一扫