V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fever105
V2EX  ›  职场话题

下午面试出来,有种生无可恋的感觉

  •  
  •   fever105 · 2016-06-07 19:42:13 +08:00 · 16134 次点击
    这是一个创建于 2888 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主年后入职一家中型创业公司,上周某一天突然找我们项目组的人一个个谈话,说由于资金问题这个项目被砍掉了,团队当天解散。。。

    于是才有了楼主今天下午到一家做 app 的创业公司面试的故事,上来就是一道算法题,楼主不出意料的不会做(不过后来我问过算法比较牛逼的哥们,说这题不难)。嗯,就这样,技术总监根本懒得见我,人事打发了我几句就走了。

    肯定有人会说,你个搞开发的连个简单的算法题都不会,不见你也是应该的。完全同意,只是说下楼主的背景:

    • 楼主英语专业出身,搞 iOS 开发的时间不长,完全自学(之前一直做口译)
    • 看过大部分苹果的 programming guide
    • 最喜欢的书是 k&r 的那本 c 语言教程
    • 楼主自知非科班出身,努力学过设计模式,上家公司的 app 架构就是我做的
    • 个人认为,对于 oo 来说,用好设计模式可以极大的增强代码的可维护可扩展性,至于算法 /数据结构,已经都被封装在各种 lib 的实现里了

    楼主热爱编程,也认同算法的重要性,只是觉得心里不爽,不会算法就意味着:我只要还在干这一行一天,就必须面面对今天这种人,随时可能拿算法甩我一脸,我心里好气,但又无可奈何。

    请问算法如何学起,楼主文科生,数学不好,阶乘的概念都是最近才知道的,找了几本算法书,涉及大量数学公式,许多符号我都看不懂,有种无从下手的感觉,看哪本书好呢?需要复习下高中数学吗?我想过先看 可汗学院的视频,但是又不知道看哪些最有用,唉

    131 条回复    2016-06-10 12:41:48 +08:00
    1  2  
    Growingio
        101
    Growingio  
       2016-06-08 14:25:54 +08:00
    默默推荐一下左老师的《程序员代码面试指南》>w<
    inmyfree
        102
    inmyfree  
       2016-06-08 14:28:44 +08:00
    @murmur 我还真的认为 VR 能炒出点什么来,如更新中国传统课本教育为虚拟现实,游戏由平面体验改为沉浸式体验,和几年前功能机转为智能机的跨越都差不多
    murmur
        103
    murmur  
       2016-06-08 14:33:34 +08:00
    @inmyfree 那用卡片盒子就差不多了。。如果想做真实场景体验还要布景
    allce231
        104
    allce231  
       2016-06-08 14:47:24 +08:00
    我想知道你们解散公司有钱补吗?
    IAmAnonymous
        105
    IAmAnonymous  
       2016-06-08 14:55:48 +08:00
    其实看楼主面试的职位的定位。
    初级:算法不用面。
    中级:基本查找排序。
    高级:我不行。。。
    UnitTest
        106
    UnitTest  
       2016-06-08 15:08:37 +08:00
    如果该公司没有保密协议 , 楼主最好把题目说出来 , 大家来看看是否是属于刁难面试者 , 还是测试基础知识的.
    中级和初级职位要求较低 , 面试人数较多 , 出个简单的算法题 , 对于筛选还是有用的 .
    高级的就另当别论.
    qianleilei
        107
    qianleilei  
       2016-06-08 15:11:31 +08:00
    不就是没 offer 么,生无可恋?有这么夸张?
    bestkayle
        108
    bestkayle  
       2016-06-08 15:15:38 +08:00
    @menc 确定这不是后台做的嘛。。。
    menc
        109
    menc  
       2016-06-08 15:31:42 +08:00
    @bestkayle
    这个就厉害了,这个简单的功能也要推锅。
    instant search 变得太快,是不适合联网的。
    你一个请求 300ms ,这 300ms 用户的输入都不一定变了多少次了

    所以都是缓存过来,在自己这里做 instant search
    Wangxf
        110
    Wangxf  
       2016-06-08 15:42:19 +08:00
    基本的几个频率较高的比较简单的要信手拈来,比如排序算法,去重算法,其他的多刷刷 leetcode 就好了,算法导论可以看,但是我认为你还没到那一步
    Wangxf
        111
    Wangxf  
       2016-06-08 15:48:20 +08:00
    其实你可以看看这个网站 http://www.jisuanke.com/course
    Cloudee
        112
    Cloudee  
       2016-06-08 16:19:47 +08:00 via iPhone
    @menc 哈哈这个我印象深刻,我在我之前公司 im 产品的 webclient 上实现过,搜索通讯录的
    SmiteChow
        113
    SmiteChow  
       2016-06-08 17:35:54 +08:00
    不是这样的,算法讲的是思维。
    wangxn
        114
    wangxn  
       2016-06-08 18:02:38 +08:00 via Android
    @rubytek 不就是编辑距离么? DP 入门用的例子。
    qwlhappy
        115
    qwlhappy  
       2016-06-08 18:09:42 +08:00
    我觉得算法训练很多时候都锻炼了把自己的想法转换为代码的能力。其实很多算法看一遍就懂了,但是写还是有困难。
    youxiachai
        116
    youxiachai  
       2016-06-08 18:45:42 +08:00
    面试的算法..

    看 july 那本面试算法..基本能够横扫了吧..
    crabRunning
        117
    crabRunning  
       2016-06-08 18:56:53 +08:00
    我想说我是海洋工程的,算法一点都不懂咧,好忧桑。
    bestkayle
        118
    bestkayle  
       2016-06-08 19:03:49 +08:00 via iPhone
    @menc 所以百度的匹配是前台的?
    wjfz
        119
    wjfz  
       2016-06-08 19:13:17 +08:00
    LZ 和我是一家公司嘛?
    menc
        120
    menc  
       2016-06-08 20:27:45 +08:00
    @bestkayle 百度是搜索引擎,没有办法做本地的。
    yxzblue
        121
    yxzblue  
       2016-06-08 21:44:01 +08:00
    不就是技术总监没见你么,你和他有一腿?生无可恋都来了
    raincious
        122
    raincious  
       2016-06-08 21:53:05 +08:00
    @Cloudee
    感觉不是一回事,通讯录这种东西始终是有限的集合,数据内容是可以控制的,比如至多 500 人吧,这样哪怕一个个 Levenshtein 算好速度也不赖。更何况你可以把数据下回来用多个 Trie 树来索引,之后每个树就是 O(n)搜索。

    但是 Instant Search 是不一样的,我猜测应该是用户输入前几个字符的时候,后端先返回一个大批量的数据(比如 50 个),然后前端先显示几个(比如 5 个),之后用户再进行输入的时候前端根据用户的输入过滤和排序(比如用 Levenshtein 算),当前端的可用数据不足的时候(比如少于 15 个),前端再提交数据请求给后端下载另一批数据。

    后端那边需要再用户输入的时候就转换好,先将中文转换成拼音,然后拆分了存进数据库,比如
    北京 => bei,jing
    储存的数据 Key 是:[北, 京, 北京, bj, b, be, bei, beij, beiji, beijing, j, ji, jin, jing]
    值是:[北京, beijing]

    用户搜索 `bejng` 的时候,数据库(比如 Redis )从 `b` 开始匹配,如果发现匹配到 `be` 之后就没有结果了(可能得有个权重阈值,过滤到一些不常用的结果),然后根据 `be`,得到[bei, beij, beiji, beijing](这个结果应该是用关键字权重来排序的,热门关键词优先),之后用 Levenshtein 得到最相似的关键字`beijing`,最后得到结果:[北京, beijing]。

    当然,如果用户搜索 `bjing`,程序应该从尾部开始搜索,比如[g, ng, ing, jing, bjing],这样也可以通过`bjing`这个关键词得到`beijing`。

    当然,我上面的猜测只能在用户输入了足够多正确样本的情况下才可用,面对`bjng`这样的关键词应该还是无效的。
    Stupitch
        123
    Stupitch  
       2016-06-08 22:16:36 +08:00
    @murmur 互联网有阶段性,移动互联网这个阶段开始往尾巴走了,除了大公司外,很难成功了(除了一些小型的个人开发者,不过也只能红极一时而已)
    zhuangzhuang1988
        124
    zhuangzhuang1988  
       2016-06-09 00:24:05 +08:00
    @woshinidie 认同你的观点, 蛤..
    laravel
        125
    laravel  
       2016-06-09 09:05:08 +08:00
    我是材料化学专业,同样存在这个困扰,都推荐《大话数据结构》、《大话设计模式》,数学的相关知识可以查 wikipedia
    x9498
        126
    x9498  
       2016-06-09 11:15:04 +08:00
    真的差好多,你以为科班四年是白过的?
    Jerry5850022
        127
    Jerry5850022  
       2016-06-09 13:01:16 +08:00
    文科生自然在技术上有些劣势,但是你会做口译这个就是优势啊。

    可以做对外的一些项目协作,没必要去做开发啊。
    wxm
        128
    wxm  
       2016-06-09 19:08:32 +08:00 via iPhone
    @zhleonix tootoo youngyoung
    echo111222
        129
    echo111222  
       2016-06-10 09:30:17 +08:00 via Android
    推荐一本书,计算机科学的基础。直接图灵下载,免费的书。自己愿意留打印出来。此书中文版无纸质书
    H4cK
        130
    H4cK  
       2016-06-10 12:35:41 +08:00
    够文艺的话建议转下产品经理。
    FrankD
        131
    FrankD  
       2016-06-10 12:41:48 +08:00
    @zhleonix 然而马云不用写代码。。。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2215 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 111ms · UTC 02:11 · PVG 10:11 · LAX 19:11 · JFK 22:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.