Java面试总结
mybatis:
1.mybatis如何实现pojo类字段和数据库字段的映射。
2.mybatis如何传入多个参数。
spring:
1.springBoot启动做了哪些事情。
2.dubbo和springCloud的核心原理。
3.springAop的原理。
jvm:
1.jvm有哪些优化点。
2.gc回收算法。
3.强引用和弱引用虚引用的区别和应用(缓存)。
Java:
1.容器(list、Map、Set等),list扩容
2.hashMap原理和concurrentHashMap原理。
3.Lock锁和Aqs原理。偏向锁->轻量级锁->自旋锁->重量级锁(自旋锁) 使用对象头中的markword来标识别。
4.线程池参数,还有内部流程。
5.servlet生命周期。
6.几种事务等级,和spring的事物传播特性。
7.接口和抽象类的区别
mysql:
1.explain优化和索引。
2.mysql的存贮结构,和架构。
3.sql的执行顺序和一些常用函数。
设计模式:
单例模式、工厂模式、抽象工厂模式、监听者模式、策略模式、facade模式等。
分布式:
分布式锁:
1.redis的set方法(key,requestId,setIfNot,timeUnit,time,...),lua表达式eval实现分布式锁。
2.redission,实现JDK的Lock接口,可以实现分布式锁。
分布式协议:
1.稳定hash算法。
2.paxos算法。
3.raft算法。
4.gossip协议。
5.CAP理论和常用的分布式框架。
分布式系统构建:
1.利用zookeeper临时节点选举和做配置中心。
2.hbase的列式存储。
网络架构:
1.七层结构各自的内容。
2.http协议内容。
3.socket协议原理,tcp和udp区别,NIO等的应用。
4.netty的原理和tomcat的区别。
消息中间件:
大数据量数据库
Mongodb:
hbase:
cassandran:
kafka分布式锁:
编程模型:
线程池隔离、熔断等容错技术有不懈的追求,我们对线程模型的优化,全异步调用。等等
1.线程池隔离,使用多个线程池处理不同的业务,避免互相影响。
2.线程模型优化:就是给个任务,然后根据业务拆分,哪些业务需要多线程哪些需要单线程?线程池是否需要隔离?然后需要几个线程池?然后有几种组合方式,各有什么优缺点。这个调优的过程就是线程模型优化。
3.全异步调用