基础
- 面向对象
- euqals hash
- string代码
- static
- final
- 设计模式,单例,策略,责任链,区别,使用,代码
- java的异常
- == euqals
集合
- hashmap,底层数据结构,put和get操作,Jdk7和jdk8
- hashmap 为什么扩容是2倍,hash函数,扩容机制
- hashmap 有没有其他的解决冲突的办法呢
- hashmap 如何在红黑树或者链表中查找
- 链表转成红黑树流程
- 红黑树的优势
- 在高并发大流量的情况下,hashMap有什么问题吗,会不会造成cpu达到100%?如果会,那是在哪一步可能会出现这个问题呢(插入、删除、查找、扩容)?
- 集合
- Queue和Stack 区别
- 线程安全的集合 安全的list
- HashSet 实现
- 单链表和数组删除各自中间元素的时间复杂度是多少,各自的适用场景
并发
- 生成线程的方法
- voliate 作用 内存语义 cpu的缓存一致性协议
- volitaile为什么保证不了原子性,可以保证可见性嘛?如何保证的(jvm的多线程的内存模型有关系)
- synchonize,对象锁和类锁,锁升级,锁降级,实现原理
- 在一个普通方法上加synchronize和在一个静态方法上加synchronize有什么区别(的的区别)?
- Synchronize的知道吗?moniter的实现机制呢,为什么加了Synchronzie关键字,就可以在多线程下是安全的(这个回答要从java对象的Object头来回答)
- 类锁和对象锁的区别呢?字节码的体现呢?
- ReentrantLock,AQS lock原理
- lock vs synchonize
- Lock的公平和非公平锁?
- Lock中存在锁升级嘛,他是可重入得嘛,那Synchronize是可重入得嘛,有没有锁升级的概念?
- 自旋锁、偏向锁、读写锁、重锁
- ConcurrentHashMap做到线程安全的呢?(CAS和锁)
- ConcurrentHashMap和HashTable的区别,1.7和1.8的区别
- 红黑树的transfer过程
- 线程池,参数,拒绝策略,类型,各个类型的区别,使用。线程池中的队列有哪些
- 定时执行的线程池实现原理
- 为什么线程池的创建最好通过new ThreadPoolExecutor来创建,而不推荐使用Executors创建线程池
- CAS原理,问题,使用场景
- atomicrefrence实现原理
- ThreadLocal
- Wait,yeild,stop,sleep、join、start、run的区别和如何使用?
- join fork
- 子线程等待主线程通知 实现方式
- 如何实现一个消费者和生产者的循环消费和生产呢?(有两种方式,一种是通过锁,lock或者Synchronize,还有一个是通过ArrayBlockingQueue实现)
- 如何实现线程之间的相互通信?代码?
- JUC包的了解,lockSupport
- 了解CountDownLatch么,CyclicBarrier的区别呢?
- 线程,进程,线程的生命周期,线程的状态
- java 对象头 属性和字段
- Unsafe类
数据结构\算法
数据结构:数组、链表、递归、队列、栈、堆、二叉树
查找算法:二叉树、红黑树、平衡二叉树,B树,跳表,散列
排序算法:插入,希尔,归并,桶,快速,冒泡,堆
算法思想:回溯、贪心、分治、动态规划
- 大根堆小根堆。
- 优先级队列
- 排序算法
- 计算时间复杂度
- 树:完全二叉树,平衡二叉树,是否相同,红黑树,二叉树
- lru缓存
- 朋友圈实现
JVM
- 内存模型
- new object() 申请的空间只能在java堆?
- 判断一个对象是否还活着
- gc
- G1回收算法
- Java的对象年龄 作用
- gc时new object() 怎么处理
- Young GC和full GC ,如何触发,频繁出现young GC 怎么办?
- 类加载过程
- 双亲委托模式
- 类加载器有哪些
- 加载一个string2的过程
- new String() string = “abc”;
- Jvm指令你知道哪些(jps,jstack,jinfo,jmap……),都有什么作用呢?
- Jvm参数你了解吗,知道多少说多少?
- 在实战中有进行过jvm调优嘛,怎么做的,
spring
使用原理
Spring、Spring MVC、 Mybatis、Ssm,springboot、Spring Cloud
- elastic-job 原理,xx-job和elastic-job区别,job调度方式
- eurake原理
- feign远程调用原理
- 限流算法
- OAuth2,jwt token
- 单立 懒加载
- transational实现 失效
- aop ioc 原理 应用场景 ioc的链
- Spring的依赖注入和切面
- 代理模式 实现 失效 jdk代理和cglib代理的区别
- springboot 和spring 和springMVC的区别
- Springmvc 启动流程
- springboot 自动配置原理,@springbootApplication,自动装配
- 拦截器和filter的区别
- springboot 载入第三方库的原理
- spring有什么注解
- spring 事务隔离级别 传播机制
- bean的生命周期
- 如何扩展一个bean的生命周期?
- bean的域
- applicationContext和beanfactory
- Autowire和Resource 的区别
- 如何解析在xml中定义的bean的。
- dubbo是怎么和spring结合的?
- 在spring的配置文件中加入component-scan标签,它就可以自动加载所有添加相应注解的java类,这个是怎么做到的呢,
- Spring boot 的核心配置文件有哪几个?他们的区别是什么?
- Spring boot的核心注解是那个?它主要由哪几个注解组成的?
- 如何理解spring boot的配置加载顺序?
- 怎么实现简化配置呢,比如现在SpringBoot整合Dubbo,他是怎么简化的呢
mysql
- 存储结构,存储单元
- B+树,优势
- 聚簇索引,非聚簇索引,覆盖索引,回表查询
- 最左前缀的原理
- 索引优化,建立,失效
- 事务,隔离级别,问题,解决
- innodb和myisam的区别
- Mysql的锁(表锁、行锁、间隙锁,读写锁,mvcc)使用场景
- 死锁:产生,避免
- 分库分表
- 主从
- 千万用户 数据库 服务器优化:哪些方面,sql,索引,机器
- group by使用 写sql
- 大数据量 limit如何优化
- jion on and 和join on where
- 数据库设计
linux
shell
计算机网络
http1.0 2.0 3.0
tcp、udp
一个http多少个tcp连接
高并发 tcp会如何
中间件
分布式,缓存,消息队列MQ,搜索等技术体系;
如NoSQL、Rpc、Redis、ZooKeeper、kafka、MQ、dubbo 等;
redis
- Redis的基础数据类型,使用,命令
- Reids数据结构 set,string的编码、list的编码、zset的编码
- redis和数据库一致性
- redis分布式锁,实现,多种方案 比较。红锁,zk实现分布式锁
- setnx问题 处理
- 缓存大key删除
- Redis的支持事务么
- 布隆过滤器了解吗,他的原理是什么呢?用的是一个hash还是多个hash
- 一致性hash
- Redis的通信协议
- Redis的持久化 ,rdb和aof的区别
- Aof瘦身知道么?如何瘦身
- Redis的拒绝策略 淘汰策略
- 哨兵模式
- Zset 跳表,跳表根红黑树时间复杂度都是logN,那为什么用跳表不用红黑树呢
- 跳表CRUD的时间复杂度是多少
kafka
- kafka消息丢失, 保证策略
- topic和partition 等名词解释
- isr和osr
- 高水位
- 分区器、拦截器、序列化器
- 消息的可靠性
- Kafka的事务
- kafka推送
- kafka多分区有序
- kafka高可用
- 消费端数据重复
- dubbo
- rabbitMq跟kafka 区别 ;那kafka高吞吐量
- 页缓存 零拷贝
- 幂等性
zk
a. 谈谈你对zookeeper的理解?
b. Zookeeper的节点类型你知道么?
c. Zookeeper的心跳机制呢?
d. Zookeeper的优势在哪?
e. 知道zookeeper的watch嘛?
f. Cap理论知道吗?
g. Paxos算法呢,了解吗?
Netty
- nio aio
服务器
Nginx、Tomcat调优;