yuanyao

一面出 LRU 算法题算难吗

  •  
  •   yuanyao · Feb 21, 2025 via iPhone · 17455 views
    This topic created in 622 days ago, the information mentioned may be changed or developed.

    面了几个三年经验 bat 大厂的候选人都没做出来,是不是难度高了

    143 replies  •  2025-02-24 20:13:20 +08:00
    1  2  
    ❮ ❯
    ychost
    ychost
    Feb 21, 2025
    101
    不刷题还是难搞的,主要是白板写代码,平时工作也不会这么干
    hylqs
    hylqs
    Feb 21, 2025
    102
    @RadishWind 今年为什么这样,不应该更卷吗
    qwertyiuop
    qwertyiuop
    Feb 21, 2025
    103
    我猜你是上来就直接扔了个类似于 “怎么实现一个 LRU 算法”的问题 ? L R U 的猜单词游戏 哈哈哈
    Plutooo
    Plutooo
    Feb 21, 2025
    104
    @xz410236056 #47 一面就会问吗,那是我肤浅了
    Rat3
    Rat3
    Feb 21, 2025
    105
    很多人一看到算法就打怵就否认自己,其实 LRU 需求给的细一点安安静静一会儿就能写出来
    mooyo
    mooyo
    Feb 21, 2025
    106
    这都写不出来的,也别面了。
    mooyo
    mooyo
    Feb 21, 2025
    107
    leetcode + 系统设计就是新八股啊,有啥问题。不问这些,问你那一堆 CRUD 的项目有什么能问的,背诵 java boy 的祖传 20 年的 jvm 调参参数么? Copilot 背的不比你利索?
    JZen
    JZen
    Feb 21, 2025
    108
    我前几天去面试 Android ,让我手写(写在纸上)一些 Android 的功能实现,因为没有提前做面试准备,我完全写不出来,谁没事干会去背那些 SDK 方法名和参数名啊,又不是考研,真的离谱。
    我觉得更合适的是,给个场景,问我如何解决给出思路,或者让我上机写。
    以前面试过一家特别舒服的,老板也是程序员,他让我上机写代码,限定时间,可以随意上网,不允许用 AI 。
    huaaaa
    huaaaa
    Feb 21, 2025
    109
    2.7 年大厂经验(还在持续搬砖中),让我突然写出来,有点慌, 仔细思考下还是能写的。
    aug31xxx
    aug31xxx
    Feb 21, 2025
    110
    不难
    icyalala
    icyalala
    Feb 21, 2025
    111
    我也写过移动端 LRU Cache ,开源而且用得人很多
    但我现在没准备要我直接写,我不一定能写好。。。
    tohuer00
    tohuer00
    Feb 21, 2025
    112
    如果是三年前我找工作那会儿,简单。
    如果是现在,很难。

    所以这种问题的价值在哪?
    victorc
    victorc
    Feb 21, 2025
    113
    这个属于 leetcode 中等难度题,大厂招聘门槛题

    你说 BAT 候选人没有做出来,大概率是百度/阿里的,字节出来人没有问题


    过去 10 几年互联网大发展,吃了时代红利,很多人浑水摸鱼进来了,根本不认真练习技术

    未来 5 年内,ai 辅助编程会把这类程序员清空,大幅度压缩 初级中级程序员的工作岗位,未来会出现一个岗位,AI 编程驾驶员,工资 1 万出头,而名校计算机博士,起薪 200 万人民币

    我在二线城市,程序员水平太差了,面试只能降低要求,出 easy 难度题目,比如下面这题

    https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-liked

    给定一个数组 nums ,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。


    好多工作 10 来年的程序员花了 20 分钟都做不出来,不知道干什么吃的

    我发给我儿子做,一个小学 5 年级学生,才学了 3 个月 c++,1 分钟之内做出来
    pkoukk
    pkoukk
    Feb 21, 2025
    114
    @tohuer00 LRU 是个经典且常见的缓存设计啊,这种设计的思路是可以广泛应用在很多地方的。
    我觉得考 LRU 比考快排合理多了,一个完全没刷过算法题,但是好好做过项目的人,给提示和时间绝对写的出 LRU 。
    但是快排这种设计,没背过算法,有几个人想得出来?那么容易想的出来,就不会 1960 年才提出了
    yuanyao
    yuanyao
    OP
    Feb 21, 2025
    115
    @victorc 我想了几分钟才想出来,这种题和工作经验无关,考思维能力。
    Futuroscope
    Futuroscope
    Feb 21, 2025 via Android
    116
    我之前见大厂面试还喜欢让人手写 shared_ptr ,个人认为这个比 lru 简单一些。可能这已经变成大厂面试的门槛了?
    不过我更倾向于这跟工作要求有关。虽然我也是写业务,但是业务跟几何打交道,经常碰到类似装箱问题这种 np 问题,或者一些几何算法,或者一些很经典的算法场景例如 dp 。面试的话如果这些算法做不出来,最低需要展现一定的思考深度吧。
    NoString
    NoString
    Feb 21, 2025
    117
    我喜欢让候选人写 BFS 或者 DFS 这种,代码也不复杂,能说清楚递归思路也行,能看出来应对面试态度。如果是单出 LRU 我认为难度也适中,不是什么恶心题,涉及 01 背包/动态规划/贪心算法的相关问题其实就有点上强度了。突然让我写上面说的这些我都写不明白,但是如果是去心怡的公司面试,我应该会准备好,最起码不会太离谱。(刚毕业的时候面试到后面可以手写矩阵乘法/各类排序,最后一家公司写的是斐波那契数列递归、回文字符串,虽然现在换了四家公司,再也没遇到写编程题的场景了)
    RadishWind
    RadishWind
    Feb 21, 2025
    118
    @hylqs 不知道 可能和我从事的行业也有关系? 不是纯互联网了
    123zouwen
    123zouwen
    Feb 21, 2025❤️1
    119
    @yuanyao 我面试一般会先看项目经历, 考察基础知识. 再让面试者说说拿到一个需求后他的工作流程是怎么样的, 再结合几个业务上的问题, 大概就能了解这个人的真实水平 以及他有没有系统设计能力. 一个需求能不能放心的交给他,考虑问题是否全面, 是否有责任心, 靠不靠谱.

    虽然说大部分人都是 crud 但写代码跟写可维护的工程是不一样的. 现在大部分业务的代码有什么难度可言, 重要的是对待一个需求的态度是怎么样的, 有没有自己的想法, 别给后人挖坑.
    leon0918
    leon0918
    Feb 21, 2025
    120
    一般劝退的时候我会出这个,放水的就原地翻转链表
    zangbianxuegu
    zangbianxuegu
    Feb 21, 2025
    121
    三年经验有点过了
    szdev
    szdev
    Feb 21, 2025
    122
    国内卷八股就算了,还有拉上算法··
    Jinyang7
    Jinyang7
    Feb 21, 2025
    123
    没准备的话,确实写不出来
    wulili
    wulili
    Feb 21, 2025
    124
    很多人是不是不知道 LRU 是啥,这都没涉及到什么算法,完全是很直白的逻辑,比冒泡排序还简单的逻辑。
    runlongyao2
    runlongyao2
    Feb 21, 2025
    125
    好像不是很难
    runlongyao2
    runlongyao2
    Feb 21, 2025
    126
    算法对代码好看很有帮助
    tjfamtf
    tjfamtf
    Feb 21, 2025
    127
    看过一遍怎么写的,现在忘了
    lrvy
    lrvy
    Feb 21, 2025
    128
    巧了,我经常考 LRU || LFU ,作为算法基础题不算难,主要是考察思路和编码习惯,校招得要写出来,社招写不出来没啥,如果思路不对或一行代码都写不出就要 pass 。作为 RD ,校招会主要考察基础和算法编码,社招主要考察系统架构设计和项目规划,侧重不同。
    kinkin666
    kinkin666
    Feb 21, 2025
    129
    难是不难,但个人认为有的有工作经验的人写代码可能会考虑更多别的东西,会更倾向于使用现成的组件,会潜意识里会觉得有些地方会很棘手,从而不想写;

    比方说要一个 LRU Cache 无非就是要一个容量有限的缓存,那为什么不用 Guava 的 Cache ,为什么不用 EhCache ,为什么不用 Redis ,这些组件还有更多选项可以设置呢,还能自动过期呢;

    如果把#82 的代码的实现都删掉,告诉他能做到 O(1)最好,让人填空,相当于把鸭子赶到架子前面,不上也得上了,这种情况下可以看人实现或许更容易让更多人接受;

    如果就是想压力测试一个人,那就这么直接问也无可厚非
    lwlizhe
    lwlizhe
    Feb 21, 2025
    130
    那你提醒下呗,引导和提醒下还不会的,那是真不知道的,
    稍微背过或者接触过的,提醒和引导下估摸也写的差不多,原理又不难,这不一下子就区分开了
    zeroSummer
    zeroSummer
    Feb 21, 2025
    131
    这种题一点意义都没有,不准备的基本都搞不出来,准备的也是背出来的
    ahbicj
    ahbicj
    Feb 21, 2025
    132
    手搓的都是玩具,太多适应面试造轮子的人,在生产中喜欢自己搓轮子造成的故障了
    holdeer
    holdeer
    Feb 21, 2025
    133
    说说是怎么出的?
    mingdongshensen
    mingdongshensen
    Feb 21, 2025
    134
    如果人家恰好看过题进来了,该干的活不会,该如何应对
    me1onsoda
    me1onsoda
    Feb 21, 2025
    135
    对目标大厂的应届生是基操啦,他们没工作经历,只能卷基础,告诉你我很能卷,选我就对了。老油条没必要卷这个
    fengsi
    fengsi
    Feb 22, 2025
    136
    是力扣的那个 LRU 吗?那玩意真难吗?现在很多面试比他难得题目多了去了,另外居然还有人形容成 “背诵题”,我也是醉了,没见过的话第一次没写出来没关系。说到底这个不就是一个 map 加一个双向链表的事吗?我甚至觉得这个的难度,比我当初刚学链表时老师让下课思考的题目简单多了,毕竟当时有些个问题困扰许久,但这个 LRU ,说实话我第一次见他就感觉比较 easy ,很容易就是 map+链表,移动下链表完事,比反转链表都好写了觉得。当然我觉得他们压根不理解 LRU 。
    pippoflow
    pippoflow
    Feb 22, 2025
    137
    @victorc 这道题要做到最快,感觉还是需要很敏锐的嗅觉的。比如这两个提交的差别:

    class Solution {
    public static void moveZeroes(int[] nums) {
    int n = nums.length;
    int i = 0;
    for (int j = 0; j < n; j++) {
    if (nums[j] != 0) {
    int t = nums[i];
    nums[i] = nums[j];
    nums[j] = t;
    i++;
    }
    }
    }
    }

    class Solution {
    public void moveZeroes(int[] nums) {
    int i = 0;
    int j = 0;
    while(i < nums.length) {
    if (nums[i] == 0) {
    while (j < nums.length && nums[j] == 0) {
    j++;
    }
    if (j == nums.length) {
    break;
    }
    nums[i] = nums[j];
    nums[j] = 0;
    }
    i++;
    j++;
    }
    }
    }
    fengsi
    fengsi
    Feb 22, 2025
    138
    @matrix1010 是的,跟刷题没关系,题目要求一看就要能想到双向链表+哈希表,剩下的就是移动链表的事了,也没晒奇怪的,写不出来绝对是不达标的
    panbeta
    panbeta
    Feb 22, 2025
    139
    如果候选人没准备过这题,也不能说明候选人不行。
    恰恰好这是考察候选人编码实力的最佳时机。
    作为面试官你可以从 LRU 的概念开始,给出提示,然后看候选人思考的广度和深度。
    toma77
    toma77
    Feb 22, 2025 via iPhone
    140
    @zy445566 #16 你认识乐哥吗
    yuanyao
    yuanyao
    OP
    Feb 22, 2025 via iPhone
    141
    @holdeer 就直接给 leetcode 那个原题,写之前会让说下实现思路,想不出来的一直给提示
    dingyaguang117
    dingyaguang117
    Feb 22, 2025
    142
    如果直接告诉是 Hash 加链表,让实现。感觉没毛病
    victorc
    victorc
    Feb 24, 2025
    143
    @pippoflow 我儿子,5 年级小学生的写的答案

    void move_zones(std::vector<int> &nums)
    {

    auto it = std::remove(nums.begin(),nums.end(),0);
    std::fill(it,nums.end(),0);
    return;
    }
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4953 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    ♥ Do have faith in what you're doing.