三年经验。
最近开始找工作,记录一下遇到的问题
jvm
- 强引用,弱引用,软引用,虚引用
- jvm内存模型,gc算法有哪些,具体逻辑
java:
- nio/bio区别,epoll/poll/select有什么区别
- concurrenthashmap,7和8的差别,锁怎么用的
- 线程池具体实现
- aqs,cas实现方式
- sync关键字和可重入锁区别
- threadlocal原理以及内存泄漏问题
- 阻塞队列有哪些实现
- volitile字段作用,obj=new Object()线程安全吗,具体做了哪些动作。
- Integer的常量池,有没有类似实现,怎么改变常量池的数值范围
设计模式:
- 观察者模及应用场景(响应式编程,发布订阅模型,reactor模型)
- 单例模式,双重锁,不加volitile为啥还不安全。
- 工厂、抽象工厂
- 代理模式
- 装饰模式
- 策略模式
- 责任链模式(主动说的)
数据库:
- 聚集索引与非聚集索引
- 红黑树和b+树的区别,为啥数据库用b+
- 有按A、B、AB字段查库,如何简历索引,为啥这么做
- 事务隔离级别,MVCC怎么实现
- for update锁什么资源,为啥能防幻读
spring
- ioc,aop
- springbean生命周期,循环依赖问题
- 事务:@Transaction实现逻辑
dubbo
- 原理
- 序列化几种方式,rpc通信协议几种方式;
- 启动provider,consumer怎么实时更新provider列表;
- 负载均衡策略
- 负载均衡为什么用一致性hash,比普通hash优势在哪
zookeeper
- zab协议
消息队列
- 怎么保证消息可靠性
- broker挂了怎么办
redis:
- 缓存过期策略
- 持久化策略
- 怎么防缓存击穿、缓存穿透
- 缓存服务器挂了解决方案
- 为啥单线程这么快
- LRU、LFU区别及实现
应用:
- 秒杀设计方案,并发问题
- 用户钱包账户金额变更,分布式环境下数据一致性问题
- 分布式锁死锁(没有设置超时时间)解决方案
算法:
- 最大连续子序列
- 链表反转
- 快速排序
- n皇后
- 单调栈
- 链表找交点、成环点
业务相关(支付):这一块其实了解不够全面。
- 明细对账实现,其中的问题(对账时间、0点附近记录)
- 长短款问题(数据一致性)
- 余额防篡改策略
- 清算、结算、清分
- 现业务中发生过的各种问题,怎么解决
其他:
- 自己负责的系统的架构图、模块划分,功能实现。
- 有过什么挑战,遇到过什么问题。
- https和http的区别,具体加密验签,客户端和服务器的交互逻辑
- TCP三次握手
- tomcat参数调优
解决方案
- 针对ip,接口的限流方案
- 接口响应时间优化方案
- 增加单机并发方案
- app push,大量push10分钟消费完解决方案,机器负载高时别的进程抢占资源怎么办
- AB同时给对方转账,怎么防止死锁
- 短链生成服务设计
- 制定负载均衡策略,解决乱序消费