程序员老鬼

明明 35 以上的员工更稳定,为啥招聘往往都不要35 以上的?

刚看到个贴子,说现在招聘动不动就卡35岁门槛,明明这批人经验足、稳定性强,却反而被嫌弃。

Image

下面一条网友评论挺扎心:“你稳定了,老板就不稳了。”——这话是真有点现实。

Image

我觉得这事吧,归根到底是“性价比”逻辑。老板看的是投入产出比,不是你是否靠谱。35+员工确实稳,但成本也高、敢提要求、也不太容易被洗脑。年轻人便宜、好带、可塑性强,从资本角度当然更香。可问题是,这种短视思维最后苦的是企业自己——团队稳定性差,项目一换人就断层。

职场是交易场,老板买“能力”,不是买“人生经验”;员工卖“价值”,不是卖“忠诚”。说到底,只要你能创造足够价值,谁都不会嫌你老。真正的底气,不是年龄,而是你手里那份不可替代。【备注:文末可领最新资料】

算法题:显示前三行

昨天晚上十一点多在公司楼下啃了个包子,手机里有人问“显示前三行咋写”,我当时脑子里蹦出来的就俩字——别贪,不要全读,读到第三行就住手。就是这么朴素。

输入是一段文本(通常走标准输入,也可能是一个很大的文件),输出只要前 3 行。要点:流式读、早停、少占内存。别上来就一股脑全读进 List,那是内存杀手。

import java.io.*;

publicclassMain{
publicstaticvoidmain(String[] args){
// 标准输入,适配命令管道:cat big.txt | java Main
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
for (int i = 0; i < 3; i++) {
                String line = br.readLine();
if (line == null) break;  // 行数不够就提前结束
                System.out.println(line);
            }
        } catch (IOException e) {
// 这里别沉默,打到 stderr,线上好排查
            System.err.println("IO error: " + e.getMessage());
        }
    }
}

昨天小李还想用 Files.readAllLines,我一口茶差点喷了——那玩意会把全部内容读进内存,十几个 G 的日志,你内存先躺平。BufferedReader.readLine() 就很合适,行分隔(LF/CRLF)它都懂,还一行一行来,配合一个小 for 就够了。

另外你可能想用 Stream 装个酷:

// 也可以,但注意异常处理和资源关闭
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
    br.lines().limit(3).forEach(System.out::println);
}

这段也行,limit(3)会早停,底层一样是流式的。不过我更偏爱上一版 for 循环——清晰、可控、好加日志。

边角问题我踩过

  • 文本没三行?readLine()会在 null 时提前 break,不会 NPE,放心。
  • 行特别长?readLine()内部会扩容缓冲,但别害怕,我们只存当下那一行,空间是 O(一行长度)。
  • 字符集?默认跟着系统走,跨平台容易炸。你要稳,就自己指定:new InputStreamReader(System.in, java.nio.charset.StandardCharsets.UTF_8)。
  • 性能?时间大约是前 3 行长度的 O(totalLenOf3Lines),空间 O(maxLineLen)。够用了。

如果是文件路径

import java.nio.file.*;
import java.nio.charset.StandardCharsets;
import java.io.IOException;

publicclassMainFile{
publicstaticvoidmain(String[] args){
if (args.length == 0) {
            System.err.println("usage: java MainFile <path>");
return;
        }
        Path p = Paths.get(args[0]);
try (var lines = Files.newBufferedReader(p, StandardCharsets.UTF_8).lines()) {
            lines.limit(3).forEach(System.out::println);
        } catch (IOException e) {
            System.err.println("IO error: " + e.getMessage());
        }
    }
}

注意这里还是流式的,不会全文件进内存;而且 try-with-resources 会把东西关干净。

echo -e "a\nb\nc\nd\ne" | java Main

输出就是:

a
b
c

没啥悬念,第四行以后直接无视。

好了我先去泡个茶…啊对了,如果要“前三行但要去掉空白行”,在 readLine() 后加个判空和 trim().isEmpty() 的跳过逻辑,再把计数器只在真正输出时+1 就行,这个你们自己改两行就能飞。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404