JD零售广告业务部门二面面经
二面老哥,问了一些基础问题以及并发问题,大体上是给个引子,剩下得都是自己发挥了,能说多少全看自己了...
Java基础
-
String、StringBuffer、StringBuilder
-
线程池怎么创建,参数解释,拒绝策略
-
Lock、ReentrantLock、AQS、LockSupport,(看子路老师得课再自己分析了分析,就很熟练了...)
-
万年不变Hashmap、CucurrentHashMap
-
volatile
-
线程同步,实现A B C三个线程交替打印(只会用信号量...万能的信号量...)
JVM
-
内存模型
-
Eden垃圾回收,怎么进入老年代(分配担保、markword标记分代年龄)
-
问题排查:一个Java进程 CPU 占用 100%,排查原因
-
找出最高得java进程:top 、sheft+m
-
找出最消耗CPU得线程,找出TID:
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
-
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) 回帖