V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 外包信息请发到 /go/outsourcing 节点。
• 不要把相同的信息发到不同的节点
dingyaguang117
V2EX  ›  酷工作

说一说最近面试的一些体会

  •  
  •   dingyaguang117 · 2015-04-30 18:51:31 +08:00 · 5261 次点击
    这是一个创建于 3499 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 好公司都是面算法(思维)的,而不是看是不是有经验
    2. 遇到好的面试官是幸运的,可以看到你的思维方式,而不是因为在纸上的代码写的乱就会认为你思维不清晰(我觉得在纸上写代码就跟扣掉delete键一样,在要求整齐清晰有点过分,毕竟思路也不是一下子就清晰的)更不会因为你的解法跟他不一样就觉得你的算法不好
    3. 你的离职原因会影响Offer谈判(被动离职会压你的价)
    4. 大公司更看重潜力,愿意培养经验不多的潜力者
    5. CTO决定公司技术高度,面试官决定了公司平均技术高度
    第 1 条附言  ·  2015-04-30 21:23:17 +08:00
    下面的题目几乎都要求手写,不同的是面试官,有的更希望看到你的思路。有的只是看你代码是否整齐(觉得只有每天写这个算法的才可能一次书写下来不出错,当时想出来的难免删删改改)。

    神马搜索
    1. 单链表的快排 (非数组或者双向链表无法往前,所以每次重新连接成2个链表,再递归,再合并即可)
    2. 最大和子序列 (经典动态规划)
    3. LRU的实现,以及如何防止被偶然的一批非热门数据挤掉Cache里面的缓存(没答上来,是hash+双向链表)
    4. 二叉树的中序遍历(非递归) (用个栈辅助即可,但是当时一捉急没想明白就急着说,结果面官说我思维混乱,哎。)

    某教育公司
    5. 给出树的父子节点关系列表[(parent,child), ...], python返回容易理解(友好)的json格式给前端 (用一个dict来存所有节点的引用,遍历一遍,用dict作为节点,key作为边,一边生成节点(dict),一边用key连接节点即可)
    6. 编辑距离 (写出来了,但是有个细节写错了)
    7. 一个数组求出任意2项差的最大值(先相邻作差,生成新数据B,转换为求B的最大和字序列。 回家又想到一种方法,从前往后计算出当前最大值,从后往前算出当前最小值,然后依次相减)
    8. Int32 可以存下大概第多少个斐波那契数 (只想出了下界32)

    今日头条
    9. 一个数列L,相邻两项绝对值相差1,求数列中某数n的位置
    (我当时给出了通用的可能位置即 [abs(n-L[0]): abs(n-L[-1]): 2],后来面试官说数组确定,所以就是不断确定两端的界限,然后判断是不是,再前后各缩小一个位置,重复确定边界,反复直到相遇即可。类似二分查找的方式 )
    10. 有序数组合并 (简单题)
    11. 行列都是递增的矩阵,查找一个数N (我想的是行和列分别二分缩小界限, 然后选定较小的一侧进行遍历,另一侧二分。 回家查了一下才知道这题是杨氏矩阵。
    我问面试官是不是最优,如果不是我可以再想想,他也没说话,最后说我代码写的乱思维也混乱....无语...,跟我说了一个方法,就是不断取中心+二分)
    31 条回复    2015-05-03 23:05:31 +08:00
    dingyaguang117
        1
    dingyaguang117  
    OP
       2015-04-30 18:57:29 +08:00
    顺便求BAT的工作机会 http://dingyaguang.deercv.com/?preview=1
    jiang42
        2
    jiang42  
       2015-04-30 20:04:05 +08:00
    can't agree more
    est
        3
    est  
       2015-04-30 20:07:33 +08:00   ❤️ 3
    你以为面试算法真是考思维吗?那只是靠pattern库是否足够大。。。。
    dingyaguang117
        4
    dingyaguang117  
    OP
       2015-04-30 20:15:21 +08:00 via iPhone
    @est 确实遇到不少看过的,不过大部分还是没见过的。还好都比较考察基础能力,吃了里面竞赛经历的老底。过会儿整理下这几天遇到的题目
    YouXia
        5
    YouXia  
       2015-04-30 21:32:57 +08:00   ❤️ 1
    看到楼主已工作三年了,按理说不应该面这些算法了啊,直接聊项目就可以了啊,但是发现楼主的项目对于已工作三年的人来说,确实含金量还不够好。

    不过楼主90年的人,已工作三年,这个跪了,比楼主大,才刚刚毕业。
    dingyaguang117
        6
    dingyaguang117  
    OP
       2015-04-30 21:40:48 +08:00
    @YouXia 这个也没办法,肯定是不如大公司的项目好,所以才在此求BAT的,工资无所谓,比现在低都行~~
    cctvsmg
        7
    cctvsmg  
       2015-04-30 21:44:10 +08:00
    算法不是经验。。。 -。-
    那在OJ上刷题,大家都从来一次AC么
    YouXia
        8
    YouXia  
       2015-04-30 21:48:07 +08:00
    @dingyaguang117

    另外我不是说你项目不好,如果说工作一年,项目没啥问题,但是工作三年了,公司可能对你的要求就高了些,项目就相对其他候选人差了些。

    神马就是阿里的啊,欢迎来神马搜索。
    dingyaguang117
        9
    dingyaguang117  
    OP
       2015-04-30 21:49:03 +08:00
    @cctvsmg 经验是指项目经验,如果用纸提交代码,也能一次AC么,能一次编译通过就不错了吧
    dingyaguang117
        10
    dingyaguang117  
    OP
       2015-04-30 21:50:56 +08:00
    @YouXia 神马第二轮说不Match,不知道具体是指什么不Match,Java/C++这个语言还是什么?
    YouXia
        11
    YouXia  
       2015-04-30 21:53:22 +08:00
    @dingyaguang117

    绝大部分项目编程语言是C++,与百度搜索那边相似。也有部分用Java。Python就不多说了,肯定会用到。
    dingyaguang117
        12
    dingyaguang117  
    OP
       2015-04-30 21:54:15 +08:00
    @YouXia 某非是我工作后没用过C++ Java/Netty也不熟
    YouXia
        13
    YouXia  
       2015-04-30 22:02:51 +08:00   ❤️ 1
    @dingyaguang117

    阿里绝大部分项目编程语言是Java,搜索相关的是C++。百度、腾讯后台绝大部分都是C/C++相关的。

    只招Python的话,我见霸爷(微博上:淘宝褚霸)发给一个JD,你可以看下: http://weibo.com/p/1001603776411960743560

    不过也是数据库相关的。

    感觉这个还是看运气吧,毕竟只要求Python的团队比较少的。不过一般情况下,我感觉语言不是问题吧。
    dingyaguang117
        14
    dingyaguang117  
    OP
       2015-04-30 22:05:45 +08:00
    @YouXia 要是我刚毕业,那肯定。。。现在不是已经3年,就算我说没问题,估计人家也会考虑考虑。

    毕竟不是给毕业生的工资, 慢慢学着不着急。 都是想给了那么多钱,来了还得学?
    mcfog
        15
    mcfog  
       2015-04-30 22:10:32 +08:00   ❤️ 1
    从来不问算法中枪……一般我觉得社招面试就是让面试者吹吹牛就好,无论是沟通表达还是思路还是对编程的理解都是手写代码什么的很难表现出来的,而且总有种挑刺找茬的感觉,不是很好……


    鹅厂的话直接hr.tencent.com 搜职位投简历就好
    <http://hr.tencent.com/position.php?lid=2156&tid=87&keywords=python>
    dingyaguang117
        16
    dingyaguang117  
    OP
       2015-04-30 22:15:18 +08:00
    @mcfog 看过了,都是 下面这种,还是要Java和C++的,所以都没投

    1.熟悉Linux操作系统、网络协议,熟练使用Shell、Python等脚本语言编程;
    2.精通java或C/C++程序设计和开发,熟悉相关开发环境和工具;
    mcfog
        17
    mcfog  
       2015-04-30 23:14:59 +08:00
    @dingyaguang117 嘛确实纯python的职位鹅厂可能不多……
    bengol
        18
    bengol  
       2015-04-30 23:23:36 +08:00   ❤️ 1
    这些其实都是OJ上的题目。。。。。 多刷刷就好了。
    至于说思维混乱的,别当真
    blacktulip
        19
    blacktulip  
       2015-04-30 23:33:59 +08:00
    算法考得是记忆力,跟思维一点关系都没有
    fcicq
        20
    fcicq  
       2015-04-30 23:46:42 +08:00   ❤️ 2
    7,9 属于题目比较有问题的情况, 但是 3 的后半部分没答好是楼主的错. 另外如果这是实际顺序的话, 面试官不应该再问 4 了.

    楼主的算法水平大致属于还算够用的程度, 没有碰上能够直接问 blog 文章或者 github 经历的面试官是个遗憾.
    henglinli
        21
    henglinli  
       2015-05-01 08:25:24 +08:00 via iPhone
    @blacktulip 同意,个人觉得“算法”应该是像paxos这种解决世纪问题的,而不是怎么使用数据结构(树,表,图)快的。CPU很快,编译器很智能。
    dingyaguang117
        22
    dingyaguang117  
    OP
       2015-05-01 08:55:00 +08:00 via iPhone
    @henglinli 算是基础算法吧,不过编译器也只是常数级别的优化,算法的时间复杂度还是最主要的
    henglinli
        23
    henglinli  
       2015-05-01 09:09:23 +08:00 via iPhone
    @dingyaguang117 算法是为了能让程序有更好的性能。而提升性能考虑的顺序个人觉得应该是:1,硬件升级;2,操作系统或虚拟机调优化;3,编译优化;4,设计优化。设计优化最需要的是架构优化,架构优化应该先考虑可能需要并行化和分布式化,然后是优化内存分配,在后才是你要说的那些细调。看你想要走多远,来决定基础算法的重要度。不建议花时间来整基础算法,个人认为各语言的标准库用熟就合格了。
    dingyaguang117
        24
    dingyaguang117  
    OP
       2015-05-01 09:14:53 +08:00
    @henglinli 你说的都是上层的优化了,标准库用熟,怎么才算熟呢, 一份红黑树和hashtable的数据结构摆在面前,各自的各种操作的时间复杂度多少,什么情况下用什么数据结构 要不要知道呢
    henglinli
        25
    henglinli  
       2015-05-01 09:18:47 +08:00 via iPhone
    @dingyaguang117 是的,做到这一步就够了。别再深入了。个人建议。另外,红黑树,我用jemalloc中的那个rb.h,介入式的。
    crystaldust
        26
    crystaldust  
       2015-05-01 12:38:24 +08:00
    收起来,慢慢体会,最近正在准备找工作。
    bleakwood
        27
    bleakwood  
       2015-05-01 13:12:00 +08:00
    有意思,因为我一直认为只有对工作经验要求不多的职位才需要面算法题。如果是更资深的职位,通常给的题目会更趋近于他们平时开发中需要面对的问题,最近硅谷的创业公司是流行在面试时候直接pair写code。越接近CTO的职位,其实面试需要写的code越少,因为这个时候你的履历、思维方式和沟通技巧已经足够说明很多问题。
    dingyaguang117
        28
    dingyaguang117  
    OP
       2015-05-01 14:31:01 +08:00
    @bleakwood 恩 确实有这种问题 我都是捡着算法题列的 稍后补充上
    dingyaguang117
        29
    dingyaguang117  
    OP
       2015-05-01 14:31:32 +08:00
    @bleakwood 一般第一轮都是算法,第二轮都是项目。 也有第一轮笔试,第二轮项目的。
    ciwonderful
        30
    ciwonderful  
       2015-05-03 19:52:35 +08:00
    我在百度面试,没有算法题,直接就是聊项目。
    fburst
        31
    fburst  
       2015-05-03 23:05:31 +08:00
    大公司分团队的吧。跟对老大很重要,跟不对老大,一年到头就是混,干的也不舒服。面试具体怎么样还得看面试官。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:43 · PVG 05:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.