首页 > JD零售广告业务部门二面面经
头像
入职啦!
编辑于 2020-08-16 19:41
+ 关注

JD零售广告业务部门二面面经

JD零售广告业务部门二面面经

二面老哥,问了一些基础问题以及并发问题,大体上是给个引子,剩下得都是自己发挥了,能说多少全看自己了...

Java基础

  • String、StringBuffer、StringBuilder

  • 线程池怎么创建,参数解释,拒绝策略

  • Lock、ReentrantLock、AQS、LockSupport,(看子路老师得课再自己分析了分析,就很熟练了...)

  • 万年不变Hashmap、CucurrentHashMap

  • volatile

  • 线程同步,实现A B C三个线程交替打印(只会用信号量...万能的信号量...)

JVM

  • 内存模型

  • Eden垃圾回收,怎么进入老年代(分配担保、markword标记分代年龄)

  • 问题排查:一个Java进程 CPU 占用 100%,排查原因

    1. 找出最高得java进程:top 、sheft+m

    1. 找出最消耗CPU得线程,找出TID:

      命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid

    2. jstack找到 tid看看调用栈

操作系统

  • 线程得状态,状态之间如何转换,挂起怎么解挂(没问这么细,其实是问就是哪个状态需要手动唤醒)

    就绪 阻塞 运行 挂起

Redis

  • 分布式锁 setnx,如果失效时间没有设置上怎么办,想法让它一起成功或一起失败,开个事务(我不知道对不对....)

  • 集群模式 主从 sential cluster,刚看的一个介绍得连接,讲的很好 redis 集群模式

  • 问题:现在有两个操作一个是 setnx 150,一个是setnx 200,现在这两个操作发生并且最终结果必须是200,不可以采用锁,怎么实现?

    我自己猜的:

    • CAS...但是不能保证一定

    • redis 事务

    • 让两个操作一次性传到redis去...

    面试官说的:

    • redis得 watch 指令,加个版本号,相当于Mysql得MVCC

Mysql

  • 索引优化,怎么去优化一条sql,只用过explain...

  • where和having得区别

Dubbo

  • RPC调用原理,我没看过Dubbo源码,但是看过Netty,手动实现过RPC:

    • 服务调用方:写一个注解,注解表明服务提供方得地址,没有注册中心得情况下....然后代理这个对象,内部调用逻辑通过一个ChannelHandler实现,先扫描注解上的获取得提供方得IP,然后把参数、方法名序列化成JSON,发送给提供方,之后进入wait状态,等到结果返回,解析返回结果(通过ChannelHandler得钩子方法去解析),然后把结果存起来,notify醒刚才wait得线程,然后返回存储得结果

    • 服务提供方:通过Netty监听一个端口,等人过来调,有人来调,解码器解码TCP,解析JSON,找到对应得服务,执行服务代码得到返回值再序列化成Json,然后传回去

Spring

  • BeanFactory、FactoryBean区别,创建bean得工厂,和工厂得bean,没仔细看过源码

  • AOP原理,这个我很熟悉,虽然我没瞅进去过,但我参考别人实现过,代理模式+责任链模式(多重代理),JDK代理和CGLIB代理得区别

  • 手写过MVC(Netty实现的...)、IOC、RPC
面试体验很好,面试官一直有在引导,我引导得也很好😁,给自己个赞....三面不知道有么有...

更多模拟面试

全部评论

(4) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐