5分钟快3首页    注册   登录
5分钟快3 = way to explore
5分钟快3 是一个5分钟快3关于 分享和探索的地方
现在注册
已注册用户请  登录
zxc1234
5分钟快3  ›  程序员

请教 Java 面试题

  •  
  •   zxc1234 · 9 天前 · 2730 次点击

    1.java 内存模型为什么要有 工作内存和主内存

    2.java new 一个对象的时候,什么情况下会发生 GC

    如果新生代和老年代没有满呢

    3.jdk 8 去掉5分钟快3方法 区用 元数据 代替,是为什么?

    4.dubbo 调用一个5分钟快3服务 的详细过程

    第 1 条附言  ·  8 天前
    5.如果5分钟快3服务 器部署在一个机房,没有跨机房,那么机房挂了 比如断电了,网络不通

    那么应该如何处理,有什么措施吗
    第 2 条附言  ·  8 天前
    6. 表 test 有 a,b,c,d

    建立联合索引:b,c,d

    如果查询语句 select * from test where b = “aaa” and c=“bbb” and d=“eee”

    会用到 索引吗 为什么
    第 3 条附言  ·  8 天前
    7. 表 test 有 a,b,c,d

    建立联合索引:b,c,d

    如果查询语句 select * from test where c = “aaa” and d=“bbb” and b=“eee”

    会用到 索引吗 为什么
    第 4 条附言  ·  7 天前
    8.5分钟快3关于 B+tree 的疑问

    mysql 中 innodb 引擎索引使用 B+tree

    5分钟快3我 看网上资料说 ===:

    ( B+ 树中的节点不存储数据,只是索引,而 B 树中的节点存储数据)

    可是 innodb 的主键索引的叶子节点就是数据啊

    请问 是哪里不对吗
    48 条回复    2020-04-02 18:49:22 +08:00
    hantsy
        1
    hantsy   9 天前
    这是 P8 的面试吗?
    hantsy
        2
    hantsy   9 天前
    内存模型,虚拟机,GC 全上了。
    luckyrayyy
        3
    luckyrayyy   9 天前
    1. cpu 都有三级缓存啊,速度更快,还有寄存器。
    2. gc root 不可达该对象的时候。满了就 full gc,没满就 minor gc
    3. 5分钟快3方法 区是一个概念吧,虽然永久代去除了,不能说5分钟快3方法 区没有了。不知道为什么... HotSpot 觉得实现方式不合适?
    zxc1234
        4
    zxc1234   9 天前
    @hantsy p8 问这些????
    hantsy
        5
    hantsy   9 天前
    这种面试的5分钟快3公司 有病。。。
    cxshun
        6
    cxshun   9 天前
    1 、为了5分钟快3优化 啊,每次都从主内存读,肯定性能不大行
    2 、gc root 不可达的情况下。
    新生代的 eden 区未满不会有 GC,只有 eden 区快要满才,会发生 ygc,并且 s0,s1 交换
    3 、没有去年5分钟快3方法 区,去掉永久代,改为元数据区。这样是为了突破 JVM 的内存限制,直接使用物理内存。
    4 、dubbo 调用会先从 zookeeper 拉取 producer 的5分钟快3地址 列表 ,然后根据负载均衡算法挑选一下进行调用。他们的协议是用自己的。5分钟快3我 用的不多,只知道大概原理。
    zxc1234
        7
    zxc1234   9 天前
    @cxshun 第四个 如果负载均衡选到了挂掉的机器,怎么办
    hangszhang
        8
    hangszhang   9 天前
    @zxc1234 挂了的话 zk 会知道
    y0bcn
        9
    y0bcn   9 天前
    钓鱼贴?
    varrily
        10
    varrily   9 天前
    4.dubbo 调用一个5分钟快3服务 的详细过程

    spi, 动态代理,序列化,netty,nio,zk,选举,cap,重试机制

    java 的东西,深究起来是个无底洞,回答上关键字就行了。
    ysjiang4869
        11
    ysjiang4869   9 天前 via Android
    阿里不都是这么问的么
    skypyb
        12
    skypyb   8 天前
    额, 5分钟快3我 当时一年经验去面试,好像也是问的这些东西
    java 圈子好像就是这样的。 (摊手
    人均百万并发、 面试问就是多线程、GC 、微5分钟快3服务 、分布式。 哈哈
    ixx
        13
    ixx   8 天前
    @cxshun #6 5分钟快3我 猜5分钟快3你 用五笔
    cxshun
        14
    cxshun   8 天前
    @zxc1234 #7 对的,8 楼的兄弟回答了哈。由 zk 去维持心跳,挂了的会被剔除的。当然,客户端也会有相应的重试。因为客户端在拉取 provider 列表的时候,会保存在5分钟快3本地 一段时间,如果此时某台机器不可用,客户端并不知道,这里调用就会失败,客户端会发起重试。
    @ixx #13 哈哈,是啊。是因为5分钟快3我 把”去掉“打成”去年“了是吧
    zxCoder
        15
    zxCoder   8 天前
    @skypyb 有没有问得比较简单的,想学一下,不想学 java 了
    sagaxu
        16
    sagaxu   8 天前 via Android
    虽然没用,也不体现能力,但是就是爱问,毕竟很多面试官没有能力出题,只能网上找宝典问,久而久之,大家都觉得这些很重要了
    zxc1234
        17
    zxc1234   8 天前
    @cxshun
    @varrily
    @hangszhang
    @cxshun
    @luckyrayyy 请问下 第 5 点怎么处理呢 真诚求答 多谢~
    zxc1234
        18
    zxc1234   8 天前
    个人觉得问这些没问题,要不然筛选候选人呢,怎么面试比较好呢
    zxc1234
        19
    zxc1234   8 天前
    @y0bcn 为什么这么觉得?????
    luckyrayyy
        20
    luckyrayyy   8 天前
    5分钟快3我 也不太清楚第五点问的是什么,推测只是考察解决问题的思路?
    既然限定了没有跨机房,还是物理层的原因,那5分钟快3软件 层面是处理不了故障了,只能尽量减少损失...说说怎么做日常的数据备份,通电之后怎么清理脏数据,怎么做数据恢复,怎么保证跟其他地方的数据一致性?跟其他机房有数据同步的话,会不会一开机就有这段时间攒下的数据涌进来?怎么避免类似缓存雪崩一样的问题?

    展开能说的就太多了,每一个点都有可能深问5分钟快3你 ,仅供参考。
    zxc1234
        21
    zxc1234   8 天前
    @luckyrayyy 那如果是集群方式部署,跨机房呢
    luckyrayyy
        22
    luckyrayyy   8 天前
    @zxc1234 5分钟快3我 的话可能会从数据一致性、可用性方面回答。可以说说像多集群多节点的话怎么做数据同步,怎么保证数据一致,了解分布式一致性协议类似 raft 、zab 算法可以说一说。流量猛地转移到另一个机房会不会承载不了啊,是不是得扩容、熔断降级什么的...能说的也蛮多的。
    cxshun
        23
    cxshun   8 天前
    @zxc1234 #17 单机房,机房挂了就没了。
    如果是上了云,有前置的 Load Balance,可以赶紧挂上一个新的另外一个机房的5分钟快3服务 。如果没有用 LB,是直连机房,那神仙都没办法了,只能等恢复了。
    zxc1234
        24
    zxc1234   8 天前
    @cxshun 所以一般是多机房部署,一个机房挂了,切到另一个机房 是这样子吗
    Aresxue
        25
    Aresxue   8 天前
    1.因为 CPU 有缓存, 工作内存能有效利用缓存比主存执行速度要快;
    2.当分配内存的区域(Eden 和老年代都有可能)满了的时候会去 GC, 正常情况下不满就不会 GC ;
    3.避免5分钟快3方法 区溢出,元空间存放在5分钟快3本地 内存而非 JVM 内存内,严格意义上5分钟快3本地 内存耗尽前不会溢出;
    4.只是调用不考虑初始化的话就是根据协议选取 Invoker 默认是 DubboInvoker, 拼接参数组别版本号之类, 判断是否配置了异步, 没有的话就是把异步转同步(实现上 dubbo 底层只有异步), 然后就是利用 netty 进行消息的发送和接收,实现类 HeaderExchangeChannel,中间还有个序列化操作, 默认用 hession(一种基于 tcp 的二进制协议)
    li24361
        26
    li24361   8 天前
    2 如果分配对象比较大,会直接进入老年代,满了就 fullGc
    zhuyichen1017
        27
    zhuyichen1017   8 天前
    1. storeBuffer, invalidateQueue
    yjxjn
        28
    yjxjn   8 天前
    @ysjiang4869 其实5分钟快3我 想说的是,大部分进入做开发的话,貌似真没有能考虑这么多的,比如垃圾回收机制,再比如 GIT 的原理,以及 Java 虚拟机之类的问题,想想工作中大部分的都在写逻辑代码,这些可能真的不会考虑的(可能5分钟快3我 这个工作比较 low,真的高并发,分布式啥的用不上呀。。。)
    yjxjn
        29
    yjxjn   8 天前
    @luckyrayyy 大佬5分钟快3你 好,5分钟快3我 想问一下,既然楼主前面给的问题大多是 Java 相关的,但是第五道题其实不都涉及到运维层面了么,这到底是是招聘开发还是运维 😝
    MrCastle
        30
    MrCastle   8 天前
    第五题,把所有5分钟快3服务 器都放在一个机房的运维,是要被吊死在桅杆上的……
    sadfQED2
        31
    sadfQED2   8 天前
    第五题,面试官想问的应该是自动熔断以及自动降级相关的问题吧,或者是5分钟快3服务 切换。实际生产中,有人问5分钟快3我 这种问题,5分钟快3我 只会说,5分钟快3你 他妈机房肯定有备用电源已及发电机啊,机房都能断电,玩蛇啊
    zxc1234
        32
    zxc1234   8 天前
    @MrCastle 确实 5分钟快3我 当时回答所有5分钟快3服务 放在同一个机房的时候,5分钟快3我 感觉5分钟快3我 要挂了
    Lonely
        33
    Lonely   8 天前 via iPhone
    @zxCoder 想太多,换个语言照样可以问这么多
    zsdroid
        34
    zsdroid   8 天前
    如果碰到第五题,就反问他,如果地球炸了,那么应该如何处理,有什么措施吗
    zxc1234
        35
    zxc1234   8 天前
    老哥们 帮忙看下第 7 个问 谢谢
    leafre
        36
    leafre   8 天前
    5.如果5分钟快3服务 器部署在一个机房,没有跨机房,那么机房挂了 比如断电了,网络不通

    那么应该如何处理,有什么措施吗

    先通电
    noteseeker
        37
    noteseeker   8 天前
    @zxc1234 第 7,and 中的顺序对如何选择索引无关,查询5分钟快3优化 器会自动5分钟快3优化 顺序,选择最有效率的顺序执行,所以会用到索引。
    TimeRain
        38
    TimeRain   8 天前 via Android
    看深入 Java 虚拟机那本书吧,垃圾收集器,锁,类加载器等知识那本书都有
    cxshun
        39
    cxshun   7 天前
    @zxc1234 #24 对的,这是正常的多机房方案。当然,5分钟快3你 要是想要再复杂点,可以参考支付宝的“两地三中心”的部署方案。那个就太复杂了,正常情况下都没必要。
    回答一个另外两个:
    6 和 7 是同类问题,因为这里完全是等值的,引擎会把语句5分钟快3优化 成可以使用缓存的情况,因此是可以用到缓存的。
    5分钟快3你 可以简单的这样认为,当没有完全覆盖索引的情况下,需要使用最左前缀原则来分析,如上面的比如只有 c = 'xxx' and b = 'xxx'这里就要用最左前缀原则;而如果覆盖到了就没那么简单了,比如上面的 b,c,d 都覆盖到了,这里还要考虑引擎5分钟快3优化 的情况,就是顺序的处理上面。
    zxc1234
        40
    zxc1234   7 天前
    求大佬们帮忙解答 第 8 个问题
    zxc1234
        41
    zxc1234   4 天前
    @cxshun
    @hangszhang

    刚刚面试被问

    dubbo 是怎么调用的? zookeeper 是怎么获取到 producer 5分钟快3地址 列表的???
    RRRSSS
        42
    RRRSSS   3 天前
    其实 Java 是这样的,因为这些东西出来太久了,默认就是5分钟快3你 应该要会,要不没什么好问的,因为就只是写业务搬砖的话,每个人区别不大,只能这么涮人。面试考算法同理。
    cxshun
        43
    cxshun   3 天前
    5分钟快3我 来答一下 8
    B+树不会在正常结点中存放数据,会在叶子结点中存放数据,并且是通过链表5分钟快3组织 的,可以通过链表获取所有数据。
    @zxc1234 #41
    dubbo 怎么调用?是指 consumer 怎么调用 producer 吗?那就是 RPC 罗,因为 dubbo 用了自己的协议,详细可以找一下网上的文章。
    zookeeper 获取到 producer 5分钟快3地址 ? zookeeper 不需要获取 producer 的5分钟快3地址 啊,producer 的5分钟快3地址 是注册到 zookeeper,由 consumer 去获取。
    而 dubbo 获取 producer 的5分钟快3地址 就直接通过 zookeeper 提供的 client 去获取的,没啥特殊的东西。
    zxc1234
        44
    zxc1234   2 天前
    @cxshun B+树叶子节点中通过链表5分钟快3组织 是单链表 还是双向链表呢
    zxc1234
        45
    zxc1234   2 天前
    @cxshun dubbo 用 RPC 协议 那 netty 是做什么用的 ,一直没用过 netty,都不知道是做啥的
    zxc1234
        46
    zxc1234   2 天前
    @cxshun producer 的5分钟快3地址 是注册到 zookeeper,zookeeper 没有自动发现功能吗
    cxshun
        47
    cxshun   1 天前
    @zxc1234 #44 这问题有点多哈,搞得好像5分钟快3我 在面试一样。
    1 、B+树叶子节点是通过双向链表来实现的,因为在解析过程中很可能要往前遍历。
    2 、netty 是一个 java nio 框架,负责网络协议解析啊。dubbo 的 RPC 协议就是通过 netty 来解析和传输的。
    3 、自动发现不是说真的全网去搜,只是一个形容而已吧。也是要提供方主动注册上去的。
    zxc1234
        48
    zxc1234   1 天前
    @cxshun 非常感谢大大大大大大佬的回答!
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   989 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:01 · PVG 05:01 · LAX 14:01 · JFK 17:01
    ♥ Do have faith in what you're doing.