V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huang119412
V2EX  ›  程序员

阿里现在的面试这么难了吗?

  •  4
     
  •   huang119412 · 2020-12-25 10:44:45 +08:00 · 24004 次点击
    这是一个创建于 1190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    内推,二面面试官约了两天后要笔试(之前听说内推没有笔试),我不敢大意,想到工作三四年了,应该不会考察特别难的算法。查了一下别人分享的面试,要不是就是没有笔试, 要不是就是一些线性表,多线程顺序执行问题。我的算法基础还行,曾经也刷过题,线性表问题(比如反转链表,合并有序数组之类)、二叉树问题( BST 等)、排序算法( TopK,Nth 等等)、 手写 BlockingQueue 、LRU 、还是多线程问题,我觉得这些对我来说没什么问题。

    到了约定时间,面试官给我发了一个在线编程的网页,打开后题目已经在那里了,看起来是实际问题而不是具体的算法数据结构之类。面试官说给你 40 分钟,你把这两道题写完,我说能不能用 IDEA,面试官说不能,然后就不说话了。毫无代码提示补全,完全白板编程,不仅如此,题目描述都很简单,但是却有五六个类,之间都有关系,我抓紧认真审题,光弄懂题目都花了十多分钟,我吃惊的发现这两道题竟然都和动态规划有关,我当时心凉了一半。第一道题是用滑动窗口(双指针)找到极值,我用吃奶的力气才做完(白板编程,还有多层循环的 continue,break )。第二道题,经过我的抽象,发现竟然是一道复杂的背包问题。

    题目大致是 n 个背包,m 个物品, 每个背包可以有某些物品任意件, 找出最少的背包包含所有的物品。 注: 此题一定有解。

        //经过我的抽象大致是这样的,重量和数量问题不用考虑
        public static class Product{}
        public static class Package{}
        //此物品是否在包裹中
        public boolean productInPackage(Package packet, Product product) { ***** }
    
        //完成此方法: 每个背包可以有某些物品任意件,找出最少的背包包含所有的物品
        public Map<Product, Package> findLeastPackages(List<Product> products, List<Package> packages) {}
    

    心里真的拔凉拔凉的。时间到了我第二题只做到一半(找到了所有背包中所有的物品),后面时间不够,集合的交叉并补也记得不是很清楚了。而且只有大致的思路。也没想到最优的解法。

    我 JDK 重要源码学了一遍又一半,HotSpot 源码也有所涉猎,研究 JDK 的 BlockingQueue 、ConcurrentLinkedQueue 、WorkStealingQueue,JCtools 的 SPSC 、MPSC 、MPMC,Disruptor RingBuffer, 学习各种 lock-free 算法和结构,心想自己技术水平还算可以,没想到折戟在这里。

    不知道是不是内推的这个部门不招人( JD 描述还是 9 月份),自己一直对阿里有好感,但是一面面试官的傲慢,二面出这种题目白板编程,感觉自己被耍了。我只是面一个 P6 而已,现在也是公司的一个技术小 leader,每天 5 点多就能下班了,笔试晚上 9 点半还能听到对面的人在讨论需求。说实话这些对我有影响,但不是最重要的,我想去阿里因为我对自己和技术还有追求。当然最想去阿里中间件团队,但是据说特别难,所以选择了曲线救国的方法。可是遭遇这一遭。

    自己的解法,笔试结束后用 IDEA 花了近 2 个小时才写完,又花了一些时间优化了代码,但是不知道还有什么简单或最优的解法。

    
        public static class Product{}
        public static class Package{}
        public boolean productInPackage(Package packet, Product product) {}
    
        // n 个背包, m 个物品, 每个背包可以有某些物品任意件, 找出最少的背包包含所有的物品  注: 此题一定有解
        //不考虑背包的权重、背包中物品权重、物品数量和重量
        public Map<Product, Package> findLeastPackages(List<Product> products, List<Package> packages) {
    
            if (products == null || products.isEmpty() || packages == null || packages.isEmpty()) {
                return null;
            }
    
            Set<Product> productSet = new HashSet<>(products);
            Set<Package> packageSet = new HashSet<>(packages);
    
            int productsSize = productSet.size();
            int packagesSize = packageSet.size();
    
            //返回值
            Map<Product, Package> priorityPackages = new HashMap<>(productsSize);
    
            //包裹 <=> 包裹里物品的双向对应
            //可以使用 Guava 的 Bimap
            Map<Package, Set<Product>> allPackages = new HashMap<>(packagesSize);
            Map<Set<Product>, Package> productSetPackage = new HashMap<>(packagesSize);
    
            //寻找到包含数量物品种类最大的包裹
            Package maxProductsPackage = null;
            Set<Product> productTempSet = null;
    
            for (Package aPackage : packageSet) {
    
                if (aPackage == null) {
                    continue;
                }
    
                //初始化 aPackage
                allPackages.put(aPackage, (productTempSet = new HashSet<>()));
                productSetPackage.put(productTempSet, aPackage);
    
                for (Product product : productSet) {
                    if (product == null) {
                        continue;
                    }
    
                    //物品在背包中, 放入背包
                    if (productInPackage(aPackage, product)) {
                        allPackages.get(aPackage).add(product);
                    }
                }
    
                if (maxProductsPackage == null) {
                    maxProductsPackage = aPackage;
                } else {
                    maxProductsPackage = allPackages.get(aPackage).size() >= allPackages.get(maxProductsPackage).size() ? aPackage : maxProductsPackage;
                }
            }
    
            //已经找到背包有哪些物品
            //开始集合运算
    
            //maxProductsPackage 种类最多, 说明这个一定是最优里面的
            //maxProductsPackage 包含所有种类 直接返回
            if (allPackages.get(maxProductsPackage).size() == productSet.size()) {
                for (Product product : productSet) {
                    priorityPackages.put(product, maxProductsPackage);
                }
    
                return priorityPackages;
            }
    
            //todo 机试的就写道这里  主要记不太清楚集合的交叉并补 API,时间也不足  (40 分钟白板写代码)
            //没有使用 lambda 、Stream API 主要是记忆问题(白板写代码), 还有通过数组包装局部变量, 还有多层循环 break
    
    
            // 1.删除 maxProductsPackage 子集的包裹
            // 2.找到其他包裹和 maxProductsPackage 差值最大的包裹, 并取并集作为新的 maxProductsPackage
            // 3.判断 maxProductsPackage 是否包含所有物品, 是的话返回, 不是的话重复第一步直到找到结果或集合为空(一定有答案)
    
            Set<Product> maxProducts = allPackages.get(maxProductsPackage);
            Set<Product> secondMaxProducts = null;
    
            //删除最大包裹
            allPackages.remove(maxProductsPackage);
    
            //留下来的包裹 [不在最大包裹之内, 有差值, 但不是差值最大的]  找到差值最大的合并到 maxProducts, 然后转移到 mergeSets
            HashSet<Set<Product>> remainSets = new HashSet<>(allPackages.values());
    
            //和最大包裹差值最大的, 已经合并到最大包裹内 [结果一定在这个里面]
            Set<Set<Product>> mergeSets = new HashSet<>(packagesSize);
            mergeSets.add(maxProducts);
    
            while (maxProducts.size() != productsSize) {
    
                //如果 remainSets 为空,且 maxProducts.size() != productsSize 说明没有答案[不会发生]
                //可以把所有包裹相加去重后如果!= productsSize, 说明没有答案, 这样可以更快排除,这里只是以防万一
                if (remainSets.isEmpty()) {
                    return null;
                }
    
                //寻找次大的包裹, 不需要比较优先级 [使用 iterator 模式删除元素, 优化循环]
                Iterator<Set<Product>> iterator = remainSets.iterator();
    
                while (iterator.hasNext()) {
    
                    Set<Product> next = iterator.next();
                    next.removeAll(maxProducts);
    
                    //是 maxProducts 的子集
                    if (next.isEmpty()) {
                        iterator.remove();
                        continue;
                    }
    
                    //初始化 secondMaxProducts    可以删除次大元素减小集合
                    if (secondMaxProducts == null) {
                        secondMaxProducts = next;
                    } else {
                        secondMaxProducts = next.size() > secondMaxProducts.size() ? next : secondMaxProducts;
                    }
                }
    
                // 已经找完,退出循环
                if (secondMaxProducts == null || secondMaxProducts.size() == 0) {
                    break;
                }
    
                // 把 secondMaxProducts 加入到 maxProducts
                ////更新 maxProducts
                maxProducts.addAll(secondMaxProducts);
    
                //更新 mergeSets
                mergeSets.add(secondMaxProducts);
    
                //删除此元素
                remainSets.remove(secondMaxProducts);
                secondMaxProducts = null;
            }
    
            //mergeSets 即为所求
            mergeSets.forEach(set -> set.forEach(product -> priorityPackages.put(product, productSetPackage.get(set))));
            return priorityPackages;
        }
    
    116 条回复    2020-12-28 15:51:58 +08:00
    1  2  
    huang119412
        1
    huang119412  
    OP
       2020-12-25 10:45:32 +08:00
    有人吗
    corgiyun
        2
    corgiyun  
       2020-12-25 10:54:51 +08:00
    本人菜鸡一枚,代码看不懂,不过感觉面试很大一部分看运气,艾盖斯
    huang119412
        3
    huang119412  
    OP
       2020-12-25 10:57:37 +08:00
    @corgiyun 是的,运气很重要
    emSaVya
        4
    emSaVya  
       2020-12-25 10:59:19 +08:00   ❤️ 3
    你说的这些基本都是必刷题 包括 01 背包这些的 感觉是题刷少了?
    qdwang
        5
    qdwang  
       2020-12-25 10:59:23 +08:00 via iPhone   ❤️ 9
    说明一点,不缺人
    bk201
        6
    bk201  
       2020-12-25 10:59:41 +08:00   ❤️ 6
    就当玩玩吧,这公司也在走下坡路了,没必要去。
    kera0a
        7
    kera0a  
       2020-12-25 11:00:05 +08:00 via iPhone   ❤️ 9
    还是昨天微软那哥们说的面试体验好,BO5 晋级赛的制度更能考察候选人
    kuaner
        8
    kuaner  
       2020-12-25 11:01:15 +08:00
    应该是不缺人
    BBCCBB
        9
    BBCCBB  
       2020-12-25 11:04:05 +08:00
    什么时候能给面试官打分?? 这样可能会好点.
    tcfenix
        10
    tcfenix  
       2020-12-25 11:04:33 +08:00
    @kera0a
    微软啥时候改成 BO5 的....很多人都跟我说他们是一轮游了
    NexTooo
        11
    NexTooo  
       2020-12-25 11:06:48 +08:00
    新年规划之一就是刷刷题,争取经过一年充电后年有底气去试试大厂( x
    YouLMAO
        12
    YouLMAO  
       2020-12-25 11:07:22 +08:00
    不要随意抽象别人的描述, 抽象错了, 代码复杂 2 万倍
    whiletrue
        13
    whiletrue  
       2020-12-25 11:07:35 +08:00
    投简历前问问有多少 hc
    tcfenix
        14
    tcfenix  
       2020-12-25 11:10:03 +08:00
    @huang119412
    有几个因素影响..比如你面的部门, 你面的岗位....还有就是你是不是简历里面写了参加过比赛或者自己对算法很有自信?

    不要灰心, 想进去后面还有机会面, 不过工作三四年的话建议等过两年能 7 了再去, 6 进去吃亏的概率不小
    huang119412
        15
    huang119412  
    OP
       2020-12-25 11:10:23 +08:00
    @emSaVya 你白板试一下可以吗?大言不惭?
    tingyunsay
        16
    tingyunsay  
       2020-12-25 11:10:32 +08:00
    看你面的部门和岗位,我同事进去就是水着水着就进去了..
    emSaVya
        17
    emSaVya  
       2020-12-25 11:13:46 +08:00
    @huang119412 面试都是写白板的大佬 白板写不比在 ide 写舒服吗? 小错误 边界查询什么的都可以忽略了
    shuizhengqi
        18
    shuizhengqi  
       2020-12-25 11:15:01 +08:00
    面试算法题,基本都是白板吧,我没记错的话,leetcode 不也是没有代码补全吗
    yzbythesea
        19
    yzbythesea  
       2020-12-25 11:16:47 +08:00
    讲道理阿里也是国内一线,这些题不过分,白板也还好,下次 LZ 多刷点儿 Leetcode,准备充足了,这些都是送分题。
    fogisland
        20
    fogisland  
       2020-12-25 11:17:58 +08:00
    @emSaVya 在线白板写,写完还要运行的啊
    reedthink
        21
    reedthink  
       2020-12-25 11:20:59 +08:00
    背包问题,搭配《挑战程序设计竞赛》和背包九讲,基本所有背包题都能切掉
    wdytoya
        22
    wdytoya  
       2020-12-25 11:22:01 +08:00
    只能说哥们没遇到匹配的面试官吧,那个白板编程系统我就不喜欢用,我宁愿发题目让候选人离线做看能做到最好的是什么程度,既能看优化,又能看代码风格。不过我们一般一面可选加笔试,二面往后一般就不会再上笔试了,你这遇到的团队也是有点奇怪

    ps.看你似乎对中间件更感兴趣,不过我们一般讲技术都是要服务于业务的,如果你对业务团队感兴趣的话,我这边是支付宝用户增长团队,欢迎投递简历到 [email protected]
    woshiaha
        23
    woshiaha  
       2020-12-25 11:22:56 +08:00   ❤️ 1
    据说是今年开始阿里对齐字节 面试要求必须考察算法题 不过我感觉不同阿里面试官面试的浮动很大
    大部分一面二面随便问问基础然后留道比如 LRU 淘汰或者链表题目就结束了
    或者你面的 BU 特别核心?
    实际上同一个面试官前后面试力度都有可能不同。。。
    部门刚组建急招人就疯狂放水 到了 HC 快没了就开始各种刁难
    要不咋说面试起码五分靠运气
    aureole999
        24
    aureole999  
       2020-12-25 11:30:19 +08:00
    基本等于这题?
    https://leetcode.com/problems/smallest-sufficient-team/
    直接想不出 dp 感觉先写个 bfs 也行,尤其是时间给的又不多。
    hehe12980
        25
    hehe12980  
       2020-12-25 11:32:45 +08:00   ❤️ 2
    算法 写的太复杂了 为啥要抽象呢== 没弄懂 直接拿几个数组 去表示不行么 可能是我 leet 刷多了
    huang119412
        26
    huang119412  
    OP
       2020-12-25 11:35:40 +08:00
    @hehe12980 这是实际问题,我只是脱敏而已
    USAA
        27
    USAA  
       2020-12-25 11:38:27 +08:00
    我这么想的,当然我没刷题哈。
    如果有不对的,希望大佬指正

    n 个背包,m 个物品, 每个背包可以有某些物品任意件, 找出最少的背包包含所有的物品。

    先找出每个背包包含物品的种类和个数
    弄个数组吧,背包[全部种类个数,[ [种类 A,个数],[种类 B,个数].....] ]
    然后 for 循环取个数最多,每个种类个数最小。。。。。。。。。
    kera0a
        28
    kera0a  
       2020-12-25 11:39:44 +08:00 via iPhone
    @tcfenix 昨天有个帖看到的,过了一面后是 BO5 。一面没过才是一轮游吧,我觉得挺好的
    huang119412
        29
    huang119412  
    OP
       2020-12-25 11:39:55 +08:00
    @aureole999 我不是没想到怎么做,只是没想到最好的方法,还有方法。看一下这个方法的返回值和参数,比您发的这道题复杂一些,背包的物品有哪些东西都要自己先统计。
    tcfenix
        30
    tcfenix  
       2020-12-25 11:51:09 +08:00
    @woshiaha
    之前没有强制要求考算法的时候就根本招不到什么人....现在还强制要求考算法....真是自信额
    wagjia
        31
    wagjia  
       2020-12-25 11:53:30 +08:00
    阿里巴巴最近不是被约谈了???
    aureole999
        32
    aureole999  
       2020-12-25 11:55:06 +08:00
    @huang119412 国外公司的白板一般不需要直接写出最优方法,可以边写边讨论再改进,主要是考察思维过程。埋头猛写不说话的那种可能写出最优方法没 Bug 也不一定能拿到好评价。方法名参数忘记啥的跟面试官解释一下输入和输出就行。至于阿里面试是不是也是这样,我就不知道了。你也没说你中间有没有跟面试官讨论。光看你的描述面试确实挺变态的。
    se77en
        33
    se77en  
       2020-12-25 12:00:08 +08:00
    @wagjia 大厂且国家队持股才有资格被约谈,小厂直接搞死...
    berg223
        34
    berg223  
       2020-12-25 12:00:28 +08:00   ❤️ 1
    @USAA 我觉得这个解法有问题吧,举个反例
    有 4 个背包,6 种物品,每个背包包含的物品分别是:
    1,2,3 ;
    1,4 ;
    2,5 ;
    3,6 ;
    很明显最优的选择不会选择 1,2,3 这个背包。
    @hehe12980 题目描述中的 n 和 m 最大是多少?
    binux
        35
    binux  
       2020-12-25 12:14:38 +08:00   ❤️ 34
    题目不全,在不给出数据范围的时候不好说最优解,但是至少有两点你可以在下次面试的注意一下。

    > 题目描述都很简单,但是却有五六个类,之间都有关系,我抓紧认真审题,光弄懂题目都花了十多分钟

    首先,这是一场面试,交流能力是面试中很重要的一环。无论题目是否清晰,你都应该和面试官交流,确认题意,数据范围,test/edge case 举例,阐述你对题目的理解,已经你准备使用的算法。
    如果你和面试官交流了 10 分钟,你不应该沮丧,反而这是很好的,有意义的。

    > 发现这两道题竟然都和动态规划有关
    > 用吃奶的力气才做完
    你误解了算法面试的意义,算法面试并不要求你“做完”,也不要求“最优解”(当然,能找到最优解更好)。和上面说的一样,面试最重要的是交流。
    首先是“做完”,不知道你有没有事先和面试官确认你的想法,然后再实际编码。一般算法面试的代码量不会很大,如果你能写出上百行,那么可能是做法有问题。不过由于题目不全,或许真就很复杂呢...
    然后是“最优解”,在你无法一步到位的情况下,你可以使用 brute force 。面试官会根据他对这个职位的期望,引导你寻找更优解,或者将最优解的算法作为你完成 brute force 之后的 follow up 。

    总之算法面试关键在于面试而不是算法。调整好心态,别太纠结,多刷刷题,下次就好了。
    HytonightYX
        36
    HytonightYX  
       2020-12-25 12:46:24 +08:00
    @binux 说的非常 nice,同感
    rodrick
        37
    rodrick  
       2020-12-25 13:06:02 +08:00
    心态放好吧,我觉得不能说是面试难,可能是你的准备正好不在面试官面的点上,看你源码各种准备了很多,算法可能不够充足但是也准备了一些,偏偏没考到你准备的,也算是运气吧,现在面试和上学考试一样,总会碰到你不会的大题,也别气馁。说句不好听的,阿里约谈了还是阿里,有这种所谓的不平等也算是扭曲的“正常”,总而言之不算是你的问题,再加油准备准备吧
    e583409
        38
    e583409  
       2020-12-25 13:18:18 +08:00
    人生苦短 默默的安慰一下
    unijiang
        39
    unijiang  
       2020-12-25 13:36:53 +08:00
    楼主微软欢迎你,有兴趣私信哈
    AlexWIT
        40
    AlexWIT  
       2020-12-25 13:55:51 +08:00   ❤️ 1
    @binux 道理确实是这么个道理,但我从他描述的情况来看面试官好像不太愿意交流,把题目一扔让面试者自己写完就完事了,这种情况还能跟面试官确认想法吗?
    Suddoo
        41
    Suddoo  
       2020-12-25 14:00:19 +08:00   ❤️ 1
    面试官应该会跟你交流的吧,题目意思应该尽量澄清,毕竟面试官也不想浪费时间在理解题意上。之前面的两家面试官都会解释题目意思,交流的过程中思路不对就直接提示不要往这个方向想了,实在没有思路也会给一点提示。

    阿里不清楚啊,之前面了几个部门,感觉就是背八股文 + 项目,最后让我手写一个快排发面试官邮箱(感觉就是走个形式),因为我一直做的是打杂的项目,也没啥好说的,蚂蚁三面也没问啥技术,问了很多人生方面的,最后就挂了
    Suddoo
        42
    Suddoo  
       2020-12-25 14:02:40 +08:00
    @binux 是的,我面试的时候举了一些 testcase,结果被面试官指出 testcase 太特殊了,结论是错误,交流很重要,列举 testcase 的过程也可以加深自己对题目的理解
    leoli
        43
    leoli  
       2020-12-25 14:07:25 +08:00
    本人 985 本硕,工作近 10 年。表示面试阿里面不过去,我深深的感觉自己很挫!
    christin
        44
    christin  
       2020-12-25 14:22:53 +08:00 via iPhone
    @tcfenix 那个哥们说的是 6 轮 1 面算法 后面 bo5
    callmexiaodeng
        45
    callmexiaodeng  
       2020-12-25 14:30:52 +08:00
    来亚马逊试一下嘛
    mxT52CRuqR6o5
        46
    mxT52CRuqR6o5  
       2020-12-25 14:31:58 +08:00
    想要最优解的话需要动态规划相关的知识,这种应该是把思路讲明白就好了
    如果不动态规划的话,就要用一些效率不是最高的暴力解法了
    USAA
        47
    USAA  
       2020-12-25 14:35:55 +08:00
    @berg223

    可以啊,你最开始循环的时候,就已经开始用临时变量计数了,后面直接取出来判断啊
    BIAOXYZ
        48
    BIAOXYZ  
       2020-12-25 14:46:39 +08:00
    @leoli #43 老哥不用太在意,面试这个跟很多因素都有关系(当然最重要的还是眼缘)。比如 lz 碰到这种手撕两道 hard,那一般社招的人真的过不去。
    laminux29
        49
    laminux29  
       2020-12-25 14:51:39 +08:00   ❤️ 29
    作为带过的徒弟已经在 bat 带队的大佬,出来讲几句。

    1.面试,这本来就是一场对被面试者很不公平的事情,因为 IT 整个技能树,知识点犹如浩瀚大海,正常的个人根本没办法完全覆盖所有知识点。面试官如果真想为难我,他完全可以去 mysqll 领域,随便找个版本,来问我某个模块有啥 bug 。我就算是一千年前开始学计算机,也没办法百分百完美地回答上这个问题。

    2.面试官的态度、面试的难度、面试成功率等等问题,牵涉到太多因素,比如职员数量的供求关系、企业经营现况、面试官个人职业素养等等。假设你是面试官,甚至公司老板,想想你在招人时,需要考虑多少因素与条件。因此,面试无论输赢,都不用太激动或太沮丧。很多时候走了顺电梯流或逆电梯流,在面试者没研究过公司经营,没有了解整个行业以及国家的运营情况,根本不知道自己面试成功或失败的关键原因。这就像是向一个女生表白,被拒绝的时候,除非开挂,否则你很难猜对对方拒绝你的真正原因。

    3.加入一个组织,最好的姿态是,组织需要做某个新领域,没有经验,然后你又是该领域的大佬或小佬,这种情况加入进去,对双方都是最合适最舒服的。

    然而,题主在一个公司走下坡路,面试官职业素养又不高,而且要进去的领域已经充分竞争,这种情况下,去面试,能顺利都已经谢天谢地了,被各种嘲讽或被为难必然是正常状态。
    zkywalker
        50
    zkywalker  
       2020-12-25 15:07:07 +08:00
    @laminux29 这位大佬说的非常对,面试就是一场信息不对称的考试。面试官可以通过你的简历去挖掘你的工作细节,也可以根据自己的经历和职位要求去考察你的知识储备。但是你这种笔试感觉不是面对社招的,社招出这东西大概率是不缺人。。。
    lewis89
        51
    lewis89  
       2020-12-25 15:08:41 +08:00
    @laminux29 #49 老哥 说的真的很在理,我觉得面试最好还是去挖掘对方的优点,IT 知识确实浩瀚大海,我读完 CSAPP 再看一些老程序员在 386 栈上玩,那个时候的协程 连自己的栈都没有,都是自己用 sp 指针 开几个空间 让协程去玩,玩完了再返回回来,要是问这种计算机考古学,我也答不上来,我现在基本上是先问下最近看了什么书,然后大概讲一下书上讲了哪些概念跟模型,以及面试者自己的一些理解。
    leoli
        52
    leoli  
       2020-12-25 15:10:41 +08:00   ❤️ 2
    @BIAOXYZ 说实话手撕 hard 我真不怕,阿里那帮人老是揪着些八股文问来问去的,上次问了个什么细节来着,我说我忘了,他们说那看来你也不怎么样嘛。哎,从此之后阿里再打过来电话直接不甩他们了。
    xrr2016
        53
    xrr2016  
       2020-12-25 15:12:42 +08:00
    去面微软🐶
    bibizhang
        54
    bibizhang  
       2020-12-25 15:24:51 +08:00
    真难,我不是开发我都看不懂。
    berg223
        55
    berg223  
       2020-12-25 15:28:00 +08:00
    @USAA 抱歉,我之前想了一下贪心算法的反例,看到你的评论,以为我们想法相同,所以留下一个反例在这。但仔细看了下你的评论,发现咱俩理解的题意不一样。区别在于你理解的题意是每个背包含有好几种物品,每种物品还会有若干件,需要凑齐指定数量的某几种物品(比如你要凑齐 A 物件 3 件,B 物件 5 件);我理解的题意是每个背包只是含有好几种物品,只需要凑齐某几类物品即可,所以是你的一个子问题。我的反例是针对这个子问题的。可以从这个子问题的反例推导出你的反例:
    有 4 个背包,总共有 6 种物品(用编号 1~6 来表示),每类物品都需要 1 件
    背包 1 含有 1,2,3 这三类物品,每种物品都是 1 件;
    背包 2 含有 1,4 这三类物品,每种物品都是 1 件;
    背包 3 含有 2,5 这三类物品,每种物品都是 1 件;
    背包 4 含有 3,6 这三类物品,每种物品都是 1 件;
    按照你的解法,因为它的物品个数最多,会选择第一个背包,但是最优的组合是选取 2,3,4 这三个背包,所以是一个反例。
    IMCA1024
        56
    IMCA1024  
       2020-12-25 15:30:23 +08:00
    楼主加油 不错了的
    YouLMAO
        57
    YouLMAO  
       2020-12-25 15:37:14 +08:00
    楼主,我司不开发 jvm 的, 你学了白学了, Spring Cloud Alibaba 明天我出题看看你
    lewis89
        58
    lewis89  
       2020-12-25 15:40:42 +08:00
    @zkywalker #50 没办法,现在大厂都是这么一个套路,必须要刷题,不刷题必死,风气就是这么带起来的,我每次面完算法都是头疼
    Cbdy
        59
    Cbdy  
       2020-12-25 15:46:07 +08:00 via Android
    看了一下感觉常规题吧,别用 Java 写,罗里罗嗦写起来慢,用 IDE 都勉强,遑论白板
    BiteTheDust
        60
    BiteTheDust  
       2020-12-25 15:49:48 +08:00
    这基本就是模拟题了吧 似乎几乎没有涉及到任何算法的样子.....
    young1lin
        61
    young1lin  
       2020-12-25 15:54:04 +08:00
    一面有点傲慢,具体傲慢在哪?我一面的时候面试官还挺好的,是我太菜了,根本没准备。可能是不同部门。
    roudancongji
        62
    roudancongji  
       2020-12-25 15:56:48 +08:00
    对阿里有好感???
    tuomasi
        63
    tuomasi  
       2020-12-25 16:01:42 +08:00
    @laminux29 我想成为你的徒弟
    suikatw
        64
    suikatw  
       2020-12-25 16:14:29 +08:00
    楼主遇到的面试题是不是和门店分单有关系?我很早之前出过类似的笔试题,因为这个就是我在实际项目里解决过的问题。不过这个题想在 40 分钟内写完是不太可能的,我一般会让面试者认真写完第一问,第二问给出简单思路即可,不需要代码实现。第一问主要考察基础代码能力和理解能力,日志设计,异常设计,主要是看工程代码规范性。第二问是看算法方面有没有亮点以及聪明程度
    suikatw
        65
    suikatw  
       2020-12-25 16:20:32 +08:00
    针对候选人的不同状况,目标等级还有面试官自己的意图,即使是同一道笔试题考察的方面也会不一样,不一定要写出最优解才代表通过笔试。我理解笔试时长如果安排到了 40 分钟,那么应该有 5-10 分钟时间是用来充分交流和理解题意的
    kekeekehernando
        66
    kekeekehernando  
       2020-12-25 16:22:22 +08:00
    其实不是非要完全写出来才能过的。。。
    zr8657
        67
    zr8657  
       2020-12-25 16:23:03 +08:00   ❤️ 1
    但凡你跟阿里在公司层面打过交道就不会对他们有好感。阿里好像会给合作公司的对接人员打分,然后评估些乱七八糟的,再来拿这东西跟合作公司压价;正在线上用的 API 说升级就升级,不升级用不了,根本就不管你什么历史数据、已经在运行的项目,凡是要讨论东西必须去钉钉,那个文档更是跟屎没什么两样,我巴不得他解体
    openbsd
        68
    openbsd  
       2020-12-25 16:48:36 +08:00
    年底了,大厂有没有面试 KPI ?
    suikatw
        69
    suikatw  
       2020-12-25 16:50:23 +08:00
    @huang119412 我仔细看了一下你的解题过程,我感觉还是有一些自己思考的。如果题目我猜的没错的话是一个组合优化问题,经典的 np hard 。如果你对这个题目想有更多的讨论,可以加一下我的微信(我微信号 thpiano )
    jonathanchoo
        70
    jonathanchoo  
       2020-12-25 16:51:08 +08:00
    哈哈,让我想起了前几天我舍友晚上的阿里二面笔试,他是测开,也是这个什么伯乐系统,代码提示都没有,题虽然打眼不难,但还是有深度的。
    但是面试官人还是挺好的,全程没有一直打电话,而是 40 分钟到了打电话过来问做完了吗。
    看没做完,问解题思路,再引导你再写一遍,然后再给他你的代码,全程非常和谐。
    所以你面的部门有问题,不必气馁,加油!
    onyourroad
        71
    onyourroad  
       2020-12-25 16:59:33 +08:00
    我都找了一个多月工作了,都没找到,每次手撕代码不是写不上,就是写的有遗漏,然后告诉我回去等结果,等的花儿都谢了。
    neutralcomments
        72
    neutralcomments  
       2020-12-25 17:01:38 +08:00 via Android
    @openbsd 面试有没有 KPI 说不准,辞退估计是有的
    JokeFunny
        73
    JokeFunny  
       2020-12-25 17:17:54 +08:00
    刷 KPI 吧,就当没面过就是了,反正也不是啥好公司
    dengtongcai
        74
    dengtongcai  
       2020-12-25 17:26:33 +08:00
    说实话,我做不出来。。
    tigren
        75
    tigren  
       2020-12-25 17:38:00 +08:00
    一道不会,我觉得我要被开除出程序员圈了
    zproo
        76
    zproo  
       2020-12-25 17:43:49 +08:00
    面的哪个部门 我拉黑一下,避免踩坑😂
    xuhai951753
        77
    xuhai951753  
       2020-12-25 17:48:02 +08:00
    弱弱地问句淘系搭建团队的 Java 岗位考虑么。https://v2ex.com/t/733419#reply0
    huang119412
        78
    huang119412  
    OP
       2020-12-25 17:55:54 +08:00
    @suikatw 我一个老码农早对算法没追求了,如果说探讨 JDK,JVM 源码还有兴趣。
    Sunben
        79
    Sunben  
       2020-12-25 17:58:26 +08:00
    帖主,别找寻安慰了。

    阿里那边意思是考你工作多年有啥进步没,以及你做的课前调查工作。每个面试官口味都不一样,和听众评委一样。
    psklf
        80
    psklf  
       2020-12-25 18:08:27 +08:00
    @huang119412 感觉你对白板有成见,我觉得白板编程能体现一部分个人的能力。太过依赖提示不好。
    lewis89
        81
    lewis89  
       2020-12-25 18:08:47 +08:00   ❤️ 1
    @neutralcomments #72 没有 KPI ? kidding ?
    linbin57
        82
    linbin57  
       2020-12-25 18:13:33 +08:00
    他们年底肯定有面试 kpi
    尽管我碰到的阿里面试官都挺 nice,但他们也不得不刷 kpi 啊。
    49 楼说得挺对的,“题主在一个公司走下坡路,面试官职业素养又不高,而且要进去的领域已经充分竞争”,这个是大背景,这一波一波的约谈,估计他们 hc 很紧。
    riba2534
        83
    riba2534  
       2020-12-25 18:46:38 +08:00
    感觉问题有歧义。
    1. 有 m 个物品,需要完全装进背包中,问最小需要几个背包。
    2. 有 n 个背包和 m 个物品,你需要把这 m 个物品放进这 n 个背包中,问重量最小的背包里面有哪些物品。
    ---
    题意是上面两个哪一种?
    wangyzj
        84
    wangyzj  
       2020-12-25 19:14:47 +08:00
    面试
    去之前烧支香
    ghostlzw
        85
    ghostlzw  
       2020-12-25 19:21:49 +08:00
    没有数据范围谈做法的都是耍流氓
    Nevermore1234
        86
    Nevermore1234  
       2020-12-25 19:28:53 +08:00
    我现在面试一般都是允许用 IDE 的,手写太浪费时间了
    dji38838c
        87
    dji38838c  
       2020-12-25 19:42:46 +08:00
    什么叫 IDEA ?你是说 IDE 吗?
    HarryQu
        88
    HarryQu  
       2020-12-25 20:44:47 +08:00
    @dji38838c IntelliJ IDEA,是说的 IDE 。
    watzds
        89
    watzds  
       2020-12-25 21:26:17 +08:00 via Android
    阿里的人这么强吗,真好奇,不过我估计也就那样,看他们开源的代码也挺烂的
    9684xtpa
        90
    9684xtpa  
       2020-12-25 21:29:40 +08:00
    一直觉得现在的大公司除非特别缺人,其他的情况下,面试的运气成分占比太高
    lixon166
        91
    lixon166  
       2020-12-25 22:09:09 +08:00
    内卷 和 外卷 导致的
    linbin57
        92
    linbin57  
       2020-12-25 22:15:12 +08:00
    @9684xtpa 我觉得还是有一定实力的,因为他们面试好几轮,运气不可能一直好啊。
    schwarzeni00
        93
    schwarzeni00  
       2020-12-25 22:25:42 +08:00
    可怕。。。
    Terry10year
        94
    Terry10year  
       2020-12-25 22:27:07 +08:00
    这么说来。。。严格的哦
    tiedan
        95
    tiedan  
       2020-12-25 23:30:36 +08:00
    这不是 dp 背包问题吗
    Lemeng
        96
    Lemeng  
       2020-12-25 23:49:37 +08:00
    确实够吊的
    shmilypeter
        97
    shmilypeter  
       2020-12-26 01:44:54 +08:00   ❤️ 1
    @laminux29 大佬我感觉面试主要是为了招人不是为了难为人。一般为了一个岗位招人,JD 应该非常详细写了需要什么技术栈以及业务方向,以收到尽可能匹配的简历。然后考察下技术水平和经验就行。

    即便是对应届生,看了基础扎实,也就行了。

    你说的随便 mysql 哪个版本,纯粹是孔乙己茴香豆的茴字几种写法,那就纯粹是想难为人,面试就是为了完成 KPI,你回答完美也会挑刺不过(价值观了解一下)
    beidounanxizi
        98
    beidounanxizi  
       2020-12-26 01:49:55 +08:00
    理解 你只是没训练过而已
    leimao
        99
    leimao  
       2020-12-26 04:04:04 +08:00
    面试都是造火箭,进去了之后都是拧螺丝。
    Actrace
        100
    Actrace  
       2020-12-26 08:56:50 +08:00
    面试问算法基本上就是不缺人啦。
    不是什么难不难的问题。
    等大家都把算法刷好了,之后的面试可能要问高数了。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2923 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 14:07 · PVG 22:07 · LAX 07:07 · JFK 10:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.