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

关于源码和算法 大家怎么看?

  •  
  •   zc1249274251 · 2020-04-10 11:03:31 +08:00 · 4858 次点击
    这是一个创建于 1470 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近面试比较频繁,做 Java 这块 感觉基本绝大部分都是 Spring 全家桶了,加上 Redis 、MQ 、Mysql 等等,但很多时候在二面、三面时候开始会问算法、还有一些 Spring 源码、Mq 源码等等一些东西,有点没明白,真的有必要这么死扣源码吗?还有感觉工作中接触算法比较少了,这个也有必要吗?

    38 条回复    2020-04-10 23:11:09 +08:00
    littlewing
        1
    littlewing  
       2020-04-10 11:24:07 +08:00 via iPhone
    并不是要死抠源码,而是你要知道你用的东西的原理,不能是只会用
    maemual
        2
    maemual  
       2020-04-10 11:28:01 +08:00
    说白了就是看你有没有上进心,有没有探索原理的欲望。
    crackhopper
        3
    crackhopper  
       2020-04-10 12:51:52 +08:00
    工作中确实用的比较少。但从公司角度考虑,如果公司 hc 有限、应聘者很多,怎么区分应聘者?所以源码、算法这些主要是用来区分人的,并不代表工作用到。一般到这种级别区分人,就意味着岗位的竞争可能比较激烈。
    nnqijiu
        4
    nnqijiu  
       2020-04-10 13:04:56 +08:00
    面试造航母,工作拧螺丝。说白了就是筛选人的
    shawndev
        5
    shawndev  
       2020-04-10 13:12:08 +08:00
    根据我的总结,每一个刁钻的产品经理背后,都有一个需要偶尔需要挖掘源码的开发。如果一次都没有,很可能因为你不是这个产品的核心开发。
    hantsy
        6
    hantsy  
       2020-04-10 13:25:40 +08:00   ❤️ 1
    基本上是 Spring 全家桶?太以偏概全了。Java 的世界不要太丰富,盯着一个 Spring 不要枯燥了。
    TwoDogSon
        7
    TwoDogSon  
       2020-04-10 13:38:51 +08:00
    最近也在备战 啃源码 啃着啃着发现这玩意 有点像从英文文章里面学词组 语法的感觉 人家这块为啥这么用 以后我遇到类似的是不是也可以用这种方式来实现(主流框架 源码什么的作者比我 nb 多了)换个思路想 都想接手的代码不是烂摊子 那么是不是有看过源码主流框架的人 写出烂摊子的概率更小一些呢 最近啃着啃着还挺有趣的 安利一个 draw.io 然后搭配 googlg drive 存储 祝大佬早日早到如意的工作~
    stiangao
        8
    stiangao  
       2020-04-10 13:49:20 +08:00
    杠杆原理大家都知道,四两拨千斤,但是如果你不知道呢,撸起袖子就开干,so~
    mazai
        9
    mazai  
       2020-04-10 14:17:32 +08:00
    都说面试造航母,工作拧螺丝,正儿八经的让你上去造航母你也得造的出来吧?
    Jooooooooo
        10
    Jooooooooo  
       2020-04-10 14:21:15 +08:00
    你换到面试官角度就懂了
    fkdog
        11
    fkdog  
       2020-04-10 14:23:40 +08:00
    @crackhopper 非大公司专业面试的话,大部分面试官也是随便问问,或者网上找的面试题。
    大部分面试官的水平其实也不咋的,和面试者 5 5 开。
    fkdog
        12
    fkdog  
       2020-04-10 14:25:45 +08:00
    @TwoDogSon 研究开源框架源码对你的业务编码能力并没有多大的帮忙。
    业务代码写的乱往是逻辑混乱、业务理解不到位、应付之类的原因。
    Orenoid
        13
    Orenoid  
       2020-04-10 14:35:25 +08:00
    Spring 这种生态大而全的可能不怎么需要动源码吧,但中小型框架和库就不好说了。
    Java 我写得不多不太清楚具体状况,写 Python 的时候确实改过一些框架 /库的代码,要么继承,要么直接重写的都有。。
    blackccc
        14
    blackccc  
       2020-04-10 14:48:17 +08:00
    竞争太激烈了,一般的问题大家都会,也只能这样了
    wuketidai
        15
    wuketidai  
       2020-04-10 14:49:14 +08:00
    你 debug 的时候可能有一些是用的框架里面报的问题,如果你不了解,你怎么定位修复?
    你自己造轮子的时候,别人框架已经解决过类似东西了,你通过源码了解到相关设计与实现细节,可以拿来借鉴也可以拿来改进
    sampeng
        16
    sampeng  
       2020-04-10 15:15:51 +08:00
    如果你没看过 spring boot 源码。。来来来来,我们刚提出的一个问题,你看怎么解? spring boot 的项目启动太慢,需要优化。。你都没看过源码,不知道 spring boot 的结构和启动顺序。给你这个线上的问题,你告诉我你不知道?那我要你干嘛?
    vitoliu
        17
    vitoliu  
       2020-04-10 15:17:59 +08:00
    在岗位竞争不激烈或者急招人的情况下可以一点算法不问。但是一定要问源码。
    一是源码看的多的人怎么也能学个一招半式,代码质量相对更高。相信对框架源码感兴趣的人,就算需求急着上线也不会写一些恶心的逻辑在里面。
    二是解决问题的能力和耐力,这点不用多说吧,框架源码参差不齐,且一般调用链很深,能坚持看下去的人相对来说更好管理,平时能少操点心不比招个大爷进来好多了。
    tc132
        18
    tc132  
       2020-04-10 15:23:50 +08:00
    @vitoliu 赞同啊
    不学别人优秀的代码,业务代码很容易写成屎了
    qdzzyb
        19
    qdzzyb  
       2020-04-10 15:27:46 +08:00   ❤️ 2
    也挺奇怪的 没人问 mysql 的源码
    yRebelHero
        20
    yRebelHero  
       2020-04-10 15:32:20 +08:00
    其实想知道 spring 源码怎么看,感觉无从下手。
    murmur
        21
    murmur  
       2020-04-10 15:33:54 +08:00
    因为面试的人太多了,所以加点有难度的筛一批人
    nicebird
        22
    nicebird  
       2020-04-10 15:42:21 +08:00
    书到用时方恨少。工作中 90%都是无技术含量的,但是是要有 1%要用上了,没积累的话就是一个无头苍蝇。
    ConradG
        23
    ConradG  
       2020-04-10 15:49:21 +08:00
    我觉得问算法还好,只要不要求现场撸红黑树这种的,这玩意儿是正经基本功。
    源码倒是除非是针对性很强的岗位,否则两边很难聊到一块儿。
    chihiro2014
        24
    chihiro2014  
       2020-04-10 15:56:13 +08:00
    其实现在的 Java 程序员,大部分都是离开 Spring 就不咋会写代码了。。。。。。。个人意见,不喜勿喷
    Orenoid
        25
    Orenoid  
       2020-04-10 16:04:16 +08:00
    另外同意楼上关于 debug 的观点,有时候发送异常后,框架可能并不会帮你包装好用人话告诉你出什么错了,而是直接抛出一个非常底层的错误,万一这个错误又不是那么常见,你不看源码的话可能会无从下手。
    zc1249274251
        26
    zc1249274251  
    OP
       2020-04-10 16:12:09 +08:00
    @Orenoid 其实 也不是说不推荐看源码 但是回过头来看 Spring 源码十几年的沉淀 没有很好的一个技术积累 真的无从下手 之前看的时候感觉就是这样
    hantsy
        27
    hantsy  
       2020-04-10 17:17:07 +08:00
    @yRebelHero 看 Spring 的源代码容易,关键是 spring-context, spring-beans, spring-core, 其次是 spring-aop 等等, 都是其次。这些源代码,导入 IDE,不是傻子都看得懂,有什么意义。
    hantsy
        28
    hantsy  
       2020-04-10 17:21:33 +08:00
    @sampeng 如果你在乎 Spring Boot 的启动速度,Spring Boot 带来的傻瓜式的 AutoConfiguration,也让你的项目引入很多不必要的配置。你完全可以不用 Spring Boot,用原始 Spring 自由度更大。
    purensong
        29
    purensong  
       2020-04-10 17:23:32 +08:00
    面试过别人就能体会要区分出 10 个人,你应该问哪些问题,你都问 spring IOC AOP,他们都对答如流,你不问一些消息队列,微服务怎么 能做出选择。 我觉得倒不是面试造火箭,而是看面试者有没有学习能力,有学习能力的一定会多问为什么,而且会深挖技术内核,而不是浮于表面。
    KeyboardManAnAn
        30
    KeyboardManAnAn  
       2020-04-10 18:14:44 +08:00
    工作越久,越觉得这些基础知识真的有用,否则就永远都只是在浮光掠影的表面磨叽
    zc1249274251
        31
    zc1249274251  
    OP
       2020-04-10 18:16:29 +08:00
    @KeyboardManAnAn 深有同感 大学时候学的数据结构、计算机组成啥的真是有用
    zc1249274251
        32
    zc1249274251  
    OP
       2020-04-10 18:17:21 +08:00
    @TwoDogSon 老哥 求教 你这看源码咋看的 直接导 Ide?
    TwoDogSon
        33
    TwoDogSon  
       2020-04-10 20:10:19 +08:00
    @zc1249274251 我看到 Android 源码哈 有一部分可以 ide 看 还有的可以有那种源码在线的网站吧 跳转没有 ide 体验好 但也可以接受
    sampeng
        34
    sampeng  
       2020-04-10 20:46:13 +08:00 via iPhone
    @hantsy 我回复得是楼主得不看源码怎么解决…不是这个问题怎么解决…
    wangyzj
        35
    wangyzj  
       2020-04-10 20:58:23 +08:00
    @nnqijiu 面试造火箭,上班拧螺丝
    liuzhiyong
        36
    liuzhiyong  
       2020-04-10 22:44:50 +08:00
    我觉得会用就行,工具的源码不需要了解,因为你根本不会去改它(反正我没有这么牛)。算法了解一下即可,业务代码对这个要求很有限(有可能有用,大部分时候用不上)。
    james122333
        37
    james122333  
       2020-04-10 23:08:01 +08:00 via Android
    最近越来越讨厌 java 对象观念就是个双面刃
    因为对象造成的不相容让人一点都不觉得直观
    灵活性大打折扣 说是有多动态我是不相信
    beidounanxizi
        38
    beidounanxizi  
       2020-04-10 23:11:09 +08:00
    spring boot 有啥么 不就是内嵌 tomcat 自动化配置
    呵呵哒 有什么好的昂
    go toml 解析 多好 真是不晓得 spring boot 有啥好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1134 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:42 · PVG 07:42 · LAX 16:42 · JFK 19:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.