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

为什么 Java 面试对中间件就 redis 喜欢问的深入

  •  
  •   yeqizhang · 2020-06-03 10:08:20 +08:00 · 5119 次点击
    这是一个创建于 1635 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是因为它太优秀了?

    没遇到问 mq 里面的东西,以及 es 等。

    其实不知道为什么就喜欢问这个,你问问 juc JVM 线程池 集合之类的底层实现我还比较理解……

    突然感觉其实面试来面试去就那些东西了,项目经历很重要,然后学历、稳定性,过了简历关,面试通过后就是个在不在公司的预算之内的问题了。

    26 条回复    2020-06-06 15:32:43 +08:00
    zhgg0
        1
    zhgg0  
       2020-06-03 10:10:43 +08:00
    你列举的这些貌似对 redis 深入最简单。
    SpringCC
        2
    SpringCC  
       2020-06-03 10:12:50 +08:00
    用的很多,源码简洁易懂,原理和设计很巧妙。
    optional
        3
    optional  
       2020-06-03 10:15:19 +08:00 via iPhone
    因为 redis 最具有普世性,而且这是送分题,基本上都接触过。
    leeg810312
        4
    leeg810312  
       2020-06-03 10:19:14 +08:00 via Android
    redis 相对其他比较简单,MQ 实践还挺复杂,关联技术也多,比如 Kafka 做消息队列就有不少部署、配置的技术点可以问,还可以衍生问题至大数据流式计算
    yeqizhang
        5
    yeqizhang  
    OP
       2020-06-03 10:25:14 +08:00 via Android
    @zhgg0 没看懂……是说 redis 深入更简单?可能吧,我说的那些东西几天不看就忘了……
    @SpringCC 嗯,用的最多的就是缓存吧,很多人连分布式锁、队列都很少用到。看来还是得细细研究原理,面试的重点了……不懂 C 语言,很多面试官我估计他也不会懂的太多。
    @optional 就接触到一点使用,问深一点就不懂,哎……背面试题去
    yeqizhang
        6
    yeqizhang  
    OP
       2020-06-03 10:28:48 +08:00 via Android
    @leeg810312 嗯,那些应用的问题,可以问出来使用经验多不多。说实话我 mq 用的很少而且很简单,他要是问我都回答不出什么,很多项目 mq 都用不到吧,面试官也不懂什么所以就不问。kafka 相对而言用的还多点
    ab11800222
        7
    ab11800222  
       2020-06-03 12:08:04 +08:00
    可能因为这是最多人接触过的中间件吧,虽然我觉得 MQ 、注册中心需要留心的地方更多
    niubee1
        8
    niubee1  
       2020-06-03 12:09:29 +08:00
    网上 redis 的文章多
    inwar
        9
    inwar  
       2020-06-03 12:10:16 +08:00 via Android
    源码少,原理入手简单
    ArtIsPatrick
        10
    ArtIsPatrick  
       2020-06-03 12:16:17 +08:00 via iPhone
    看岗位吧,问的多的大概率进去之后用的多。
    HuHui
        11
    HuHui  
       2020-06-03 12:29:41 +08:00 via Android
    因为现在喜欢有事没事就上 redis
    yeqizhang
        12
    yeqizhang  
    OP
       2020-06-03 12:35:56 +08:00 via Android
    @niubee1 赞同,文章多,面试题也多……
    yeqizhang
        13
    yeqizhang  
    OP
       2020-06-03 12:37:24 +08:00 via Android
    @ab11800222 嗯,zk 其实能问的更多。但其实分布式系统真的懂的人太少了
    yeqizhang
        14
    yeqizhang  
    OP
       2020-06-03 12:38:25 +08:00 via Android
    @HuHui 互联网项目如果请求量大,搞集群的话还是应用挺多的
    syasuker
        15
    syasuker  
       2020-06-03 12:47:22 +08:00 via iPad
    redis 最有效吧,但是缓存是个大的学问
    SpringCC
        16
    SpringCC  
       2020-06-03 13:05:05 +08:00   ❤️ 1
    @yeqizhang 数据结构不懂语言也可以了解。面试肯定要问原理,不然就背 api 了。redis 数据结构就那么几个,还有持久化,集群,过期策略,都可以考察,所以大家喜欢面试问这个吧。
    micolore
        17
    micolore  
       2020-06-03 13:11:02 +08:00 via iPhone   ❤️ 1
    主要还是 redis 的使用场景更广,相对来说就需要深入研究。
    InkAndBanner
        18
    InkAndBanner  
       2020-06-03 14:41:44 +08:00
    涉及 redis 一般都是签到题
    wupher
        19
    wupher  
       2020-06-03 14:59:36 +08:00
    因为用的最多。

    从一开始的缓存,到后面的队列,分布式锁,使用相对广泛。

    反之,如 ZooKeeper 、ETCD 、RabbitMQ 之类,用的就少得多了。
    axbx
        20
    axbx  
       2020-06-03 15:16:20 +08:00   ❤️ 1
    因为基本上每个项目都会用到 redis,ZooKeeper,消息队列则就不一定了
    yeqizhang
        21
    yeqizhang  
    OP
       2020-06-03 15:28:30 +08:00 via Android
    @wupher 嗯,早点明白就不会先花时间在 zk mq 上去准备面试了
    nicebird
        22
    nicebird  
       2020-06-03 15:39:30 +08:00
    redis 核心源码 几万行又好懂,进阶题吧。
    wupher
        23
    wupher  
       2020-06-03 16:14:19 +08:00   ❤️ 2
    @yeqizhang 嗯,看个人喜好。

    不同价值观下,技术抉择不一样。比如,我有个前同事兼好友,他就是喜欢自己折腾。以队列和分布式锁为例,能用数据库的用数据库,能用 Redis 的就用 Redis 。好处是产品依赖少,坏处是什么都在库上,使用上可能存在总总不尽人意。

    我喜好能用 1 行代码解决的,就不要用 2 行,能用中间件解决问题的,我就不自己折腾了。假如公司有 ZK,那我就用 ZK,没有的话,可以建议,嗯,要不我们试试 ETCD ?

    但是你解决的问题是不变的,所谓万变不离其宗,那是那些分布式常见的场景。只是我们选择了这个,于是就牺牲了那个,如此而已。以我来说,上次分享就检讨过,代码是省了,中间件是多了。虽然这些中间件原来就有用,但是假如要做云迁移,就会碰到新的麻烦。

    所以会就是会,不会也不用沮丧。常见的问题,你碰到过哪些,大致研究过,可以用 A 解决,但是会有 B 代价,说清楚即可。

    祝面试好运。

    嗯,以个人招聘经验而论。其实面试并不是,“哦,A 问题你会,那你能入职,然后进来就解决 A”。你在工作中总会碰到之前没遇到的问题,碰到之前没见到过的场景。你会怎么解决?常见的策略如何?是否知晓选择的代价?可能还有,价值观大家是否一致?一般大致如此吧。
    wysnylc
        24
    wysnylc  
       2020-06-03 17:10:16 +08:00   ❤️ 1
    因为要用 redis 和队列解决并发,redis 还能做缓存对性能提高明显
    相对来讲其他的东西就可有可无或者没法直观体现在业务上
    luckyyD
        25
    luckyyD  
       2020-06-04 10:44:05 +08:00 via Android   ❤️ 1
    确实优秀。消息队列、分布式锁、页面上的浏览次数、我关注的人、可能认识的人(要用 MySQL 实现这个功能想想都头大)、可能还有别的需要保证业务原子性的东西都可以用它轻松解决。而且 java 需要的就是一个队列,因为高并发和多线程是天然矛盾的,但是这两样 java 都想要,所以 java 做不好的事情就交给能高性能实现队列的工具人去做了。
    namebyrant
        26
    namebyrant  
       2020-06-06 15:32:43 +08:00
    redis 在项目应用度应该是在 mysql 之下,不多问是不可能,持久化 /双写 /集群架构 /可用方案那些实际项目也用得多啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:23 · PVG 21:23 · LAX 05:23 · JFK 08:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.