需要会的知识
JVM:
JVM内存结构(java运行时数据结构 堆内存回答信息一点 (包括各个内存的比例设置也说))
什么时候进行类加载
类加载机制(加载、验证、准备、解析、初始化)
分配内存的过程(确定要分配的内存的大小 根据Class对象来确定 (指针碰撞 空闲列表 与回收算法有关系)(CAS 本地线程缓冲内存))
双亲委派机制
垃圾回收算法(引用计数法 可达性分析算法(标记清除、复制、整理)分代回收)
哪些结点可以做为GC Roots结点
OOM(栈溢出(栈帧过大、栈内存不够用) 、 堆溢出(内存泄漏、内存溢出)、 元空间溢出(存除类的信息,在反射的时候容易溢出) jvm的参数设置也说出来)
内存泄漏(静态集合类引用的对象 会造成内粗泄漏)
垃圾回收器(Serial/Serial old 、ParNew、 Parallel Scavenge(关注吞吐量)、Parrallel old、CMS、G1 )
什么时候进行minor gc(eden区满了之后)
什么时候对象进入老年代(达到进行晋级年龄;大对象直接进入老年代;survivor区中的某个年龄的对象占了内存的一半以上,将大于等于这个年龄的对象 进入到老年代)
什么时候进行 full gc (老年代的剩余空间容纳不了年轻代要晋升的对象时)
java线程和协程(线程的切换是否依赖内核)
java:
new一个对象的过程 (类加载、分配内存、对象的初始化(属性赋值))
Object类中的方法
volatile (变量的可见性、禁止指令重排(加入了内存屏障)、不保证原子性)
JMM
CAS(原理:内存地址V,期望值A,设置值B,是一个原子操作 ABA问题 手写自选锁(通过compareAndSet方法))
synchronized (修饰方法 修饰代码块)
ReentrantLock (底层是AQS(主要就是靠的volatile型的state变量) 、公平锁、可中断锁、能够知道是否成功获取锁、)
interrupt(设置中断标志为true) interrupted(返回中断标志,并清除中断标志) isInterrupted(返回中断标志,不清除)
手写生产者、消费者模型
线程池(7大参数, 执行流程,抛弃策略,用过的线程池,线程怎么选取(IO密集型,计算密集型))
阻塞队列
Semaphore (信号量 用来限制运行的线程数 state表示的是还能运行多少线程)
CountDownLatch (闭锁 当一定的线程数量运行结束后,运行开始时阻塞的线程 state表示的多少个线程执行后)
final (变量、方法、类)
static (变量、方法、类(静态内部类))
集合(ArrayList LinkedList Vector HashMap HashTable ConcurrentHashMap HashSet)
ArratList 和 LinkedList的区别(底层实现上: 数组、链表 查询效率上 删除效率上 空间利用率上)
怎么实现线程安全的ArrayList (Vector 、Collections.synchronizedList<List<>> 、CopyOnWriteArrayList)
HashMap的底层实现(数组+链表+红黑树 put元素的过程 resize扩容的过程)
ConCurrentHashMap的实现(在链表的头结点加入了 synchronized)
juc下面的包有哪些(ConcurrentHashMap ThreadPoolExecutor Semaphore CountDownLatch atomic子包 locks子包)
String StringBuffer StringBuilder区别
线程的状态 及 状态间的切换
ThreadLocal
String中字符数组为什么是final的。 String s=new String("a") 创建了几个对象
序列化 和 反序列化
clone(影子clone 和 深度clone)
Linux:
select poll epoll( fd (文件描述符) 、水平触发(LT) 边沿触发(ET) )
常用命令:
uptime 查看负载信息 (1分钟 5分钟 15分钟)
ps
free
kill
top
netstat 查看端口状态
文件命令(touch cp mv rm chmod vim)
目录命令(mkdir rmdir cp mv)
软连接
awk
操作系统:
进程
内存 (物理内存、虚拟内存 内存淘汰页)
文件
计网:
TCP( 头部、三次握手、四次挥手、拥塞控制、流量控制、最大长度(1500-20-20))
TIME_WAIT 和 CLOSE_WAIT
服务器有大量TIME_WAIT状态的可能原因是什么?
UDP(头部、传输的最大长度(65535-8))
Http (无状态、不安全 超文本传输协议)
cookie session
get post
http2.0的改进(MultiPlexing多路复用、头部压缩、服务器推送 主要进行引入了帧)
帧的结构(帧的类型、长度、优先级、序列号)
http怎么同时发送多个请求(http1.1建立多个TCP连接,chrome浏览器对同一个域名最多建立6个TCP连接)
https(CA证数、对称加密算法(DES, AES)、非对称加密算法(RSA)、消息摘要)
网络层的通信协议有哪些(ip icmp)
ping命令是哪一层的(ping命令是应用层的 用到的ICMP是传输层的!)
BIO NIO AIO
MySQL:
MyIsam 和 InnoDB 的区别?
索引(聚簇索引、非聚簇索引、主键索引(一级索引)、非主键索引(二级索引、辅助索引)、回表、覆盖索引、联合索引、索引下推、唯一索引、非唯一索引)
事务(ACID: 通过 undolog redolog binlog + MVCC保证的)
事务隔离性(四个)
MVCC: (实现了读已提交 和 可重复读 通过视图)
锁: 表锁、页锁、行锁、间隙锁、next-key(行锁+间隙锁 解决幻读)
join (left join right join union) A left join B 输出A的所有和B的符合条件的,没有返回空
order by , group by ,limit (统计某个字段的数量,返回前几位)
explain
count(*) 和 cout(1) count(字段)
索引失效(对索引进行了函数运算、不符合联合索引的最左匹配原则、隐式类型转换、模糊查询(%位于字符串的第一个位置))
三大范式:(1nf: 各个字段不可再分 2nf: 非主键字段不能有部分主键确定,应该由主键唯一确定 3nf: 不能存在传递函数依赖,必须由主键直接唯一确定)
redis:
基本数据类型
跳跃表 (想当于对链表做了优化)
分布式锁
单线程(为什么效率高)
IO多路复用(epoll)
高可用(主从复制 sentinel哨兵模式)
缓存击穿(热点数据过期) 缓存穿透(查找数据库中不存在的数据 )缓存雪崩(大面积key失效 或者 服务器宕机)
布隆过滤器
事务
Spring:
bean的创建过程 ( )
bean的声明周期(bean的创建 初始化 使用 销毁)
单例模式是线程安全的吗(取决于bean是否是有状态的!)
bean的Scope(singleton protoType require session global session)
循环依赖(三级缓存)
Spring事务隔离级别(五个 多了一个默认的 MySQL默认的是可重复读 oracle是读已提交)
Spring事务传播特性(7个 支持原事务)
常用的注解(@Configuration @Bean @Repository @Service @Controller @Component @ComponentScan @Autowired )
AOP (@EnableAspectJAutoProxy)
@Transactional 注解如何实现事务的回滚
SpringBoot:
自动配置
RabbitMQ:
设计模式:
单例
代理
工厂
适配器
装饰器
观察者
MyBatis:
MyBatis的底层原理
动态sql
Nginx:
反向代理:
动静分离:
负载均衡:
浙公网安备 33010602011771号