面试题:
数据库:
1.使用mysql索引都有哪些原则,索引的数据结构?? B+tree和B tree什么区别
2.mysql有哪些存储引擎 有啥区别?
3.设计高并发系统数据库层面怎么设计?数据库的锁有哪些类型?如何实现?
4.数据库的事务有哪些?
5.慢sql分析
分库发表:
1.如何设计可以动态扩容缩容的分库发表方案?
2.分布式事务?TCC? 出现网络问题 怎么办?
3.分布式寻址方式?一致性hash?
分布式缓存:
1.redis和memchached 什么区别?为什么单线程的redis比多线程的memcached效率高?
2.redis有哪些数据类型?
3.redis的主从复制是怎么实现的?redis的集群模式是如何实现的?redis的key是如何寻址?
4.使用redis如何设计分布式锁吗?zk是否可以?如何实现?那种效率高?
5.知道redis的持久化吗?都有哪些优缺点?具体的底层的实现?
6.redis过期策略都有哪些?LRU?
分布式服务框架:
1.说一下dubbo实现过程?注册中心挂了可以继续通讯吗?
2.zk的原理知道吗?zk都可以什么?paxos算法 ?说一下原理和实现?
3.知道netty吗?NIO BIO AIO?
corejava
1.hashcode相等两个类一定相等吗?equals?
2.介绍下集合框架?
3.hashmap,hashtable底层实现?hashmap的rehash?
4.hashmap和treemap什么区别?底层的数据结构是什么?
5.线程池用过吗?都有哪些参数?底层实现?
6.synchronized和Lock什么区别?
7.Threadlocal是什么?底层如何实现?
8.volitile的工作原理?
9.cas知道吗?如何实现?
10.单例模式?懒汉和饿汉?
11.乐观锁和悲观锁的区别?优缺点?
12.String,StringBuffer,StringBuilder区别?
13.concurrentHashMap实现?
14.Session和Cookie区别?
15.jdk的concurrent包?
16.wait()和sleep区别?
17.类加载过程:加载、验证、准备、解析、初始化。
18.双亲委派模型:Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader
JVM
1.请介绍一下JVM内存模型?用过什么垃圾收集器?
2.线上频繁full gc如何处理?CPU使用率过高怎么办?
3.类加载机制?都有哪些类加载器?
4.JVM优化?
5.线程死锁定位?
Spring
1.spring AOP IOC实现
2.CGLIB知道吗?它和jdk动态代理什么区别?
分布式消息队列
1.为什么使用消息队列?优缺点?
2.如何保证消息队列的高可用?重复消费问题如何处理?
3.kafka,activemq,rabbitmq,rocketmq都有哪些优缺点?
4.如何实现一个消息队列?
分布式搜索引擎
1.es的工作过程实现是如何?如何实现分布式?
2.es在数据量恨到的情况下,如何提高查询效率?
3.es的查询是一个怎么的工作过程?底层的lucence介绍下?倒排索引?
高并发
1.如何设计高并发高可用系统?
2.如何限流?工程中怎么做的?
3.缓存如何使用?
4.如何熔断?
5.如何降级?如何进行系统拆分?如何数据库拆分?
6.负载均衡的原理
通讯协议
1.说一下TCP/IP四层?
2.http的工作流程?http1.0 http1.1 http2.0 具体区别?
3.TCP三次握手,四次分手的工作流程?
4.https的工作流程?
5.TCP拥塞控制?
6.TCP与UDP的区别?
7.TCP滑动窗口与回退N针协议?
8.Http的状态码含义?
9.Http request的几种类型?
10.Http怎么处理长连接?
算法
1.大文件排序
2.二叉树和红黑树? 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法。
3.快排和归并排序
4.动态规划、贪心算法、分治算法
5.链表
6.队列和栈
7.二分查找?
8.排列组合问题?
9.图的BFS与DFS算法,最小生成树prim算法与最短路径Dijkstra算法?
开放性问题
1.项目中遇到的最大困难是什么?怎么解决?