当被问到对哪些技术有深入了解 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
bbao
V2EX    程序员

当被问到对哪些技术有深入了解

  •  
  •   bbao 2017-04-19 10:48:42 +08:00 5037 次点击
    这是一个创建于 3154 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,当被问题对哪些技术有深入了解时,任何技术,任何领域,都可以,该怎么沟通?

    貌似好多东西都理解,也知道原理,也能实现,但是深入不知道会是什么程度,每每问到的时候,不知道如何回答;

    44 条回复    2017-04-19 19:10:38 +08:00
    ihuotui
        1
    ihuotui  
       2017-04-19 11:09:57 +08:00 via iPhone
    他问什么 你答什么就行了
    bbao
        2
    bbao  
    OP
       2017-04-19 11:12:12 +08:00
    @ihuotui 当然是如果问到了指定技术,怎么理解,怎么用的,有什么优缺点,遇到什么坑当然是可以聊的;

    但是,就只是问你,对什么技术或者领域有深入的了解,任何技术领域都可以;如果没有特定的深入了解过一些技术,以及深入了解源码的话,我不知道如何答这些;
    ihuotui
        3
    ihuotui  
       2017-04-19 11:42:48 +08:00 via iPhone
    @bbao 如果不能吹牛逼,那么没有内涵。例如问并发你能说出什么?例如问 mysql 你又能说几分钟?这就是内涵。一个不会吹牛逼的程序员不是好厨师。
    bbao
        4
    bbao  
    OP
       2017-04-19 11:56:38 +08:00
    你问的这些还都挺简单的,只要给出一个指定的问题,都好答;
    拿 mysql 来说, 了解索引实现机制,为什么使用 btree , b+tree 和 b-tree 的特点,如何合理创建索引,聚簇索引,耳机索引的区别(索引和数据是如何映射);联合索引有什么注意事项;数据量大如何处理;
    对于单表大数据之后,如何处理,了解是否做过 表分区,分库,分表; mysql 的表分区的特点是什么;如何分库,如何分表;现在的分库规则是什么?分库之后如何针对数据做检索的,是自己后端逻辑处理还是使用开源的框架,这样就把问题扩展到另一个问题;
    btree 可以引申到数据结构的问题;例如平衡树,红黑树,红黑树是否适合存储海量数据,如果不适合,为什么。
    如果做 java 的,可以简单的带一句, treemap 的实现机制,对于工作 4 年内的人,然后可以横向对比一下 hashmap 的实现原理,为什么支持并发,如果并发会产生什么问题;使用 hashmap 有什么注意事项.如果产生 hash 冲突之后,怎么处理的.

    但是对于我问的问题,这种深度的问题的话;我个人理解,还是对,比如深入了解 redis ,要对 redis 的方方面面,原理,源码都有了解才叫深入;所以这种开放性范围提出之后,对于我这样理解这个问题时,就不知道如何答这个问题;
    ihuotui
        5
    ihuotui  
       2017-04-19 13:40:03 +08:00 via iPhone
    @bbao 说得不错,看得还可以。再高一层就是分布式应用和集群的经验和设计,还有一些魔改框架。
    ihuotui
        6
    ihuotui  
       2017-04-19 13:40:52 +08:00 via iPhone
    @bbao 我问你什么时候用多线程,什么时候不用。
    R4rvZ6agNVWr56V0
        7
    R4rvZ6agNVWr56V0  
       2017-04-19 13:49:23 +08:00
    反问面试官:这个话题好突兀,您能限定个具体范围吗?
    czheo
        8
    czheo  
       2017-04-19 13:53:59 +08:00
    真不会聊天,情商拙计。
    woshixiaohao1982
        9
    woshixiaohao1982  
       2017-04-19 13:55:50 +08:00
    @bbao
    这个问题表面上看是问技术,我觉得更多是考察一个人 对技术的态度吧,

    很多人做了很多年 java 对容器的特点一窍不通的也有,也有对技术了解的非常少的人,
    例如 jvm gcroots 是基于有向图可达性分析来 归代回收,本质上来讲这就是个图论算法
    图的算法 最经典就是 dfs bfs 某 D 开头几乎很难拼对名字的算法

    拿楼主说的红黑树是否适合存储海量数据来讲, 除非业务对数据有十分强的有序性要求,
    否则不推荐海量数据使用红黑树,因为红黑树的 插入 查找,
    在并发的情况下 其吞吐量并不是很好,通常在有线程插入数据 加锁后,红黑树 需要 要锁定一个较大的分支
    (具体的红黑树 插入 查找的操作 已经忘了,,不过我当时学习这个算法时候 分析过加锁的原因 ),
    而这些操作正是维持容器内数据有序性的必要操作

    维持高吞吐容器的话还是 hashmap 较好
    因为通常只会锁住一个 头接链表的头部,如果有可能的话 还可以加入更加细粒度的锁, hashmap 在没有有序性要求的场景下,较 红黑树 优
    woshixiaohao1982
        10
    woshixiaohao1982  
       2017-04-19 14:00:25 +08:00
    另外数据底层原理 多线程容器竞争的问题 以及吞吐量的问题,
    本质上就是 资源竞争 跟算法与数据结构 选择的问题
    把基础性的书 读一遍,基本上能答个八九不离十
    woshixiaohao1982
        11
    woshixiaohao1982  
       2017-04-19 14:04:25 +08:00
    @bbao 另外我觉得你刚才说的这些东西,能跟面试官扯一扯 能把细化一部分的原理跟细节 就已经很不错了
    这种开放性的问题,本身并不是考察 面试者有多牛逼,只是考察面试者 对待技术的态度,平常看书学习的态度
    当一个面试官问 JVM 的时候,你能把深入理解 Java 虚拟机上的东西 加上自己的理解 复述一遍,另外能带上 Java6 subString 内存泄漏的分析 就已经相当不错了
    woshixiaohao1982
        12
    woshixiaohao1982  
       2017-04-19 14:07:06 +08:00
    http://hedengcheng.com/?p=771
    这里有一篇 mysql 事务加锁机制的文章,,面试的时候 扯一扯 能扯明白的 有几个?
    bbao
        13
    bbao  
    OP
       2017-04-19 14:08:20 +08:00
    @woshixiaohao1982 红黑树是可以坐缓存的,但是量级不能特别特别的大,因为深度决定了检索效率; openresty 的 shared.dict 缓存,实现原理就是红黑树;

    jvm gcroots 冷不丁不知道是啥,拆开看才明白;就一个对象合适才能 gc ,找不到 root 就 gc 嘛;

    hashmap 不适合高并发,也不能用在并发场景,并发场景使用 ConcurrentHashMap ,因为并发时, put 的时候,如果产生了 rehash 扩大 map 容量,那么就会有问题;貌似是 next 的指针指的不对,具体实现忘记了;

    如果是吞吐量的话,是不是用 LinkedListBlockingQueue 来存放对象。
    ihuotui
        14
    ihuotui  
       2017-04-19 14:09:35 +08:00 via iPhone
    既然可以回答那么多,我也会再问还有其他深入了解的技术,例如 rocketmq , dubbo , netty , zookeeper ,有没有看过源码,如果说看过,我会问它们的设计,然后为什么这样设计,然后让你来实现怎么做。这几个都比较典型,里面的思想挺好。
    ihuotui
        15
    ihuotui  
       2017-04-19 14:10:22 +08:00 via iPhone
    @woshixiaohao1982 看过哈哈
    bbao
        16
    bbao  
    OP
       2017-04-19 14:12:09 +08:00
    @ihuotui 没有共享状态,单个线程处理结果独立,不受其他线程状态影响的情况,数量级再单线程执行比较慢的时候用需多线程;


    @GeekGao 他问的就是,你对你所熟悉的领域,任何一个你觉得,你了解的比较深入的技术,都可以聊;所以就看你自己的平时对技术的深度了解; 还有 @woshixiaohao1982 说的学习态度问题;

    我学习态度不端正,面壁.
    bbao
        17
    bbao  
    OP
       2017-04-19 14:17:25 +08:00
    @woshixiaohao1982 锁的问题,我个人觉得,了解如何合理的创建数据表,以及创建索引的规则,知道现在不是一个 sql 只能执行一个索引,可以索引合并,符合索引(a,b,c) a,ab,abc 都可以走索引,也就可以不针对 a 进行单独设置索引;或者什么时候创建(a,b),什么时候单独的创建 a , b 索引;

    像你刚发文章链接,如果清晰的知道 mysql 的事物机制的话,可以问一下 mvcc ,以及如何“可重复读”是如何避免幻读的(间隙锁);

    这些,我觉得一个开发,了解到这,在深入的实现之类的,或者其他问题,我可能就不会了;
    bbao
        18
    bbao  
    OP
       2017-04-19 14:21:20 +08:00
    @ihuotui dubbox 仅限于使用; zookeeper 如果公司使用的多的话,能很好的了解;我之前阅读过 zookeeper 的原理和实现,刚看完特别清晰;但是,现在已经忘干净了,因为我们现在用 zk ,因为用 dubbo ,因为 dubbo 推荐使用 zk 。

    我们的 activemq ,我觉得也是 demo 的基础上调整一下,做个主从;

    netty ,方便了解 nio ,之前也很透彻,现在也完蛋。

    了解 netty 的时候,还可以了解到 select epoll 等一些问题;当时看的时候,针对这些顺着看的,可是现在,也没什么太多印象了;

    上面那些,用到的也就是使用了;其他的没太多了解了,之前了解过的,也不怎么记得了 。
    ihuotui
        19
    ihuotui  
       2017-04-19 14:24:13 +08:00 via iPhone
    @bbao 推荐看看 rocketmq 的实现,为什么他那么高效。
    bbao
        20
    bbao  
    OP
       2017-04-19 14:31:05 +08:00
    @ihuotui 啊~ 你看的源码挺多啊。
    ihuotui
        21
    ihuotui  
       2017-04-19 14:33:24 +08:00 via iPhone
    @bbao 我看了 netty 和 mq 剩下两个在计划中。
    bbao
        22
    bbao  
    OP
       2017-04-19 14:36:14 +08:00
    @ihuotui 但是对于一个多年的后端开发来讲,觉得没有深度的东西积累,还是挺失败的;
    woshixiaohao1982
        23
    woshixiaohao1982  
       2017-04-19 14:37:41 +08:00
    @bbao 你能聊到这么多就已经很不错了,我上次出了个题目,开放性的,,大致讲下 hashmap 的实现跟原理,
    在并发的情况下,如何为 hashmap 加入细粒度的锁 使其可以并发访问,人家看完面试题 发现不能百度 转身就走了..
    ihuotui
        24
    ihuotui  
       2017-04-19 14:44:29 +08:00
    @bbao 看你追求吧,技术成长与环境相关,可以思考一下换个高级环境。
    bbao
        25
    bbao  
    OP
       2017-04-19 14:46:16 +08:00
    @ihuotui 这不就是昨儿从低级环境向往高级环境面试时候,被问到之后,卡壳了,一句话憋不出来;就来这里求解惑了;
    ihuotui
        26
    ihuotui  
       2017-04-19 14:51:31 +08:00
    @bbao 吞吐量大的,我会选择无阻塞链表 ConcurrentLinkedQueue , LinkedListBlockingQueue 还是把线程阻塞了,无阻塞才是王道。编写吞吐量大的应用很考验能力,对性能的理解。
    ihuotui
        27
    ihuotui  
       2017-04-19 14:52:28 +08:00
    @bbao 多面试,多总结,然后就面试成功了。哈哈。
    woshixiaohao1982
        28
    woshixiaohao1982  
       2017-04-19 15:01:21 +08:00
    @bbao 技术上 其实明白技术底层性的原理,够用就好了,深抠每一个细节,于精力 于时间 都是难以达到的,我毕业快两年了,还不是科班毕业,转行过来 3 个月 ,面试过的水货程序员 太多太多了,有的连 找到数组中 第 n 大的数 都不会写
    ihuotui
        29
    ihuotui  
       2017-04-19 15:07:34 +08:00
    @woshixiaohao1982 他面试高级程序员,现在卡了,还是项目积累和深度。再参与多几个大型项目和架构设计,然后再魔改或者研究主流中间件。
    ihuotui
        30
    ihuotui  
       2017-04-19 15:11:04 +08:00
    你工作 7 年了,这样水平确实对不起工作年龄。。。
    @bbao
    bbao
        31
    bbao  
    OP
       2017-04-19 15:42:43 +08:00
    @ihuotui 近 2 年荒废了时间,白瞎了;
    woshixiaohao1982
        32
    woshixiaohao1982  
       2017-04-19 15:50:32 +08:00
    @ihuotui
    @bbao
    我觉得主要还是多看书吧,就我个人来讲,非科班 野路子出身的,读过 csapp ,算法 第四版 等书

    其实发现很多技术原理上的东西,其实很多年没变过了,你把数据结构与算法的基础打好,
    像 redis 其实信手拈来,无非就是常见的 头接链表 hashmap 新版 redis 加入了 geo 等地理位置 线段树等算法

    因为每个人的出身,跟技术经历都不一样,并不是每个人都有机会经历一些大项目 架构设计
    个人能够努力做到的,且完全不依赖外部资源的途径 就只有自己多动手 多读书 多尝试了



    另外求楼上两位老铁 推荐点书 给我这个刚入门的小弟看看
    bbao
        33
    bbao  
    OP
       2017-04-19 15:55:42 +08:00
    @woshixiaohao1982 我平时看书不多,最近一直关注 https ,可以看看 https 权威指南,黑色那本,针对加密算法、 openssl 性能测试以及 https 优化都有概括,而且比 http 权威指南看的容易,不那么枯燥,生涩;然后可以关注一下 http2 ;解决了 http1.1 的很多痛点;
    ihuotui
        34
    ihuotui  
       2017-04-19 16:14:16 +08:00
    @woshixiaohao1982 我建议环境重要,书是提升内功,环境是实践,遇到越多的人,越多事情,互相交流,边实践边成长。
    Chrisplus
        35
    Chrisplus  
       2017-04-19 16:25:46 +08:00
    就特别讨厌乱问的面试官,就老老实实的写题得了,或者就简历中相关的,感兴趣的问一下,拿住一个点往深问,再慢慢扩展成一个面。

    上来就问类似这种特别宽的问题,说浅了面试官不一定满意,说深了面试官又不一定懂,多尴尬……
    woshixiaohao1982
        36
    woshixiaohao1982  
       2017-04-19 16:27:26 +08:00
    @ihuotui #34 好的环境,可遇不可求,没有人脉 没有朋友内退 只能自己先修内功了,
    bbao
        37
    bbao  
    OP
       2017-04-19 16:29:26 +08:00
    @woshixiaohao1982 哈哈,内推也需自身硬啊…内推不一定能进;不要浪费光阴,没事儿干,就趁早撤退,也不要看钱多如何如何;我就是前车之鉴
    woshixiaohao1982
        38
    woshixiaohao1982  
       2017-04-19 16:32:47 +08:00
    @bbao #37 我现在更惨..不说了..码畜级别
    woshixiaohao1982
        39
    woshixiaohao1982  
       2017-04-19 16:37:09 +08:00
    @bbao #37 谁要是能给我 推荐个靠谱点增删查改的后端工作 我就谢天谢地..
    bbao
        40
    bbao  
    OP
       2017-04-19 16:45:16 +08:00
    @woshixiaohao1982 等我自身解决了 帮你推吧,哈哈。
    woshixiaohao1982
        41
    woshixiaohao1982  
       2017-04-19 17:02:21 +08:00
    @bbao #40 祝你早日解决问题,踏入高层环境
    brand0n
        42
    brand0n  
       2017-04-19 17:31:20 +08:00
    @ihuotui 最后进阿里没啊
    Ouyangan
        43
    Ouyangan  
       2017-04-19 17:41:10 +08:00
    @bbao 受教了
    ihuotui
        44
    ihuotui  
       2017-04-19 19:10:38 +08:00 via iPhone
    @brand0n 暂时还没有,哈哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5946 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 02:12 PVG 10:12 LAX 18:12 JFK 21:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86