1、java比较 icompare 2、tomcat 热部署 加载方式与双亲委派模型? 为什么要设计双亲委派模型? 3、java io api 过滤器模式? 4、threadLocal 实现原理? 5、tcp ip协议 6、服务端如何确定seesion是同一个? 7、内存屏障(Memory Barriers) http://blog.jobbole.com/53697/ 8、lock synchronized ReentrantLock 深入研究 Java Synchronize 和 Lock 的区别与用法 Java并发编程实战–显式的Condition对象 9、jvm JVM的年轻代分为哪几代?年轻代什么时候会进入老年代? 10、jvm JVM 垃圾回收算法?(注意年轻代与老年代是不一样的)? 11、jvm内存模型 一个变量初始化 怎么分配内存 分配到什么地方? 12、不使用双亲委派模型的缺点? 13、java 开源序列化框架有哪些?彼此之间有什么区别(优缺点)? 14、java.util.concurrent hashmap 相关问题 15、JAVA线程sleep和wait方法区别 https://blog.csdn.net/jiankunking/article/details/79824353 16、PriorityQueue(优先级队列) 堆相关问题 17、常见的负载均衡算法 18、java 阻塞队列 相关问题,阻塞具体是如何实现的? 其实阻塞队列实现阻塞同步的方式很简单,使用的就是是lock锁的多条件(condition)阻塞控制。使用BlockingQueue封装了根据条件阻塞线程的过程,而我们就不用关心繁琐的await/signal操作了。
lock中使用多条件condition Java并发编程实战–显式的Condition对象 19、静态代码块、构造代码块、构造函数以及Java类初始化顺序 20、java 枚举的实现,内部如何进行存储的? Java 枚举实现原理 21、静态内部类与普通内部类,在用法、初始化方面的区别? 22、java 原子性 可见性 顺序性是通过什么来保证的? 23、java 多线程内共享的模型 24、阻塞非阻塞与同步异步 25、java nio原理 nio作用?是不是阻塞的?比如有个请求,获取数据,后面的处理还依赖前面的数据。 Java NIO 浅析 Java NIO AIO 基本概念 26、读写锁 自旋锁 尝试锁(cas) cas如何保证,查询到修改这个过程是原子的? 27、一个类中的静态变量是在类加载的哪个步骤加载的? 28、synchronized与ReentrantLock 实现原理区别? 29、threadlocal 实现原理?应用场景? 30、常见的设计模式 31、分布式事务 32、线程池工作原理及机制 核心线程数、最大线程数、抛弃策略 https://www.jianshu.com/p/12468c88be50?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin
一次Java线程池误用引发的血案和总结 33、线程挂了 保活 34、keepalive 保活策略? 35、Protocol Buffers 适用场景? 36、http tcp 相比多了些什么?有什么不一样的地方? 37、http与https区别?加密算法是? 38、wait 是释放锁?为什么释放了锁,线程就挂起了。 为什么线程wait了就挂起了? 39、CMS 垃圾回收 40、hashmap 线程不安全 什么时候会出现?会出现什么问题? http://www.cnblogs.com/qiumingcheng/p/5259892.html
当多个线程同时检测到总数量超过门限值的时候就会同时调用resize操作,各自生成新的数组并rehash后赋给该map底层的数组table,结果最终只有最后一个线程生成的新数组被赋给table变量,其他线程的均会丢失。而且当某些线程已经完成赋值而其他线程刚开始的时候,就会用已经被赋值的table作为原始数组,这样也会有问题。 41、equals 比较原理? 子类重写equals方法 42、jvm 内存分布 43、arraylist linklist 44、interger 为null 转int 会发生什么?
Exception in thread "main" java.lang.NullPointerException
45、hashmap与hashset的关系? hashset是用hashmap来实现的,只不过map中的value都是
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
46、线程与协程的区别?协程的优势? https://blog.csdn.net/jiankunking/article/details/79823955
47、JDK8 如何实现协程? Java里的协程
48、java lambda 实现原理 https://blog.csdn.net/jiankunking/article/details/79825928
49、java stream 实现原理
50、永久代(permanent generation)与Metaspace JVM的Heap Memory和Native Memory Java 8的元空间(metaspace)
51、如何保证GC ROOTS找的全?(比如中G1中) G1收集器中,Region之间的对象引用以及其他收集器中的新生代和老年代之间的对象引用是使用Remembered Set来避免扫描全堆。G1中每个Region都有一个与之对应的Remembered Set,虚拟机发现程序对Reference类型数据进行写操作时,会产生一个Write Barrier暂时中断写操作,检查Reference引用的对象是否处于不同的Region之间(在分代中例子中就是检查是否老年代中的对象引用了新生代的对象),如果是便通过CardTable把相关引用信息记录到被引用对象所属的Region的Remembered Set中。当内存回收时,在GC根节点的枚举范围加入Remembered Set即可保证不对全局堆扫描也不会有遗漏。
52、G1清理老年代、年轻代是遍历所有吗?
53、可重入锁和不可重入锁?不可重入锁有啥缺陷? 54、CPU密集型 Java线程池大小为何会大多被设置成CPU核心数+1? https://www.zhihu.com/question/38128980
以下内容摘自《Java Concurrency In Practise》8.2节 对于计算密集型的任务,在拥有N个处理器的系统上,当线程池的大小为N+1时,通常能实现最优的效率。(即使当计算密集型的线程偶尔由于缺失故障或者其他原因而暂停时,这个额外的线程也能确保CPU的时钟周期不会被浪费。)
55、什么情况下会出现ClassNotFoundException? 56、线程有几种状态? NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 分别对应于 新建、运行、阻塞、等待、带超时的等待、终止 57、如何动态上报JVM信息,以便后期排查OOM等问题? 是否可以通过exporter这种方式,然后让prometheus来抓取 58、ConcurrentHashMap put的时候加锁的是数组上的元素 还是啥? 是数组上对应位置的node https://github.com/jiankunking/backups/blob/master/jdk/ConcurrentHashMap.java
使用CAS + synchronized 来保证实现put操作:如果Key对应的数组元素为null,则通过CAS操作将其设置为当前值。如果Key对应的数组元素(也即链表表头或者树的根元素)不为null,则对该元素使用synchronized关键字申请锁,然后进行操作。如果该put操作使得当前链表长度超过一定阈值,则将链表(寻址时间复杂度为O(N))转换为红黑树(寻址时间复杂度为O(log(N)),插入操作完成之后如果所有元素的数量大于当前容量(默认16)*负载因子(默认0.75)就进行扩容。 59、
二、MySQL部分1、mysql 时间 比较无效 原因? 时间比较无效比如下方链接所呈现的问题: http://blog.csdn.net/jiankunking/article/details/53289283 2、mysql 数据库 索引 是以什么数据结构形式存储的? 3、mysql与sql server 异同点? 原理上? 4、索引顺序对于索引效果的影响? 5、数据库索引如何优化(从哪几个方面)? 6、mysql优化有哪些?
加索引有什么规则?有哪些方式? 比如,有一个查询where a字段等于1,b字段等于2,这种情况下,如何加索引? a、b字段都是离散值
7、比如一个表中有100条数据,a字段的值,是从1到100,我要更新其中的数据,where条件时a>10 mysql通过innodb引擎的话,是通过表锁还是行锁?
8、mysql mvcc多版本并发控制 9、mysql为什么选中B+ TREE而不是B TREE?两种数据结构有什么区别? 10、mysql 范围查询?索引的数据结构是如何处理的?
B+树除了叶子节点其它节点并不存储数据,节点小,磁盘IO次数就少。这是优点之一。 另一个优点是什么,B+树所有的Data域在叶子节点,一般来说都会进行一个优化,就是将所有的叶子节点用指针串起来。这样遍历叶子节点就能获得全部数据,这样就能进行区间访问啦。
为什么MongoDB采用B树索引,而Mysql用B+树做索引
11、mysql事务提交原理? 12、mysql 用户编号 订单编号 商家编号 分库分表 需求是:
- 可以按照订单号查询、
- 可以按照用户编号查询该用户所有订单、
- 分库分表解决查询慢问题、
- 按照商家编号查询该商家订单信息[商家查询可以不是实时,允许有一点延迟])
按照用户编号hash或者某种方式来决定订单信息落到某个库、某个表。将确定出落某个库、某个表这两个信息拼接到订单号的某几位上,这样在按照订单号查询的时候就可以确定去哪个库哪个表查询、按照用户编号查询改用户所有订单也可以了(因为数据落在哪个库哪个表是由用户编号决定的)、商家查询是否可以把数据写入es这种方式来实现?(因为商家编号没有办法再次用到分库分库模式中)
13、mysql三列数据建联合索引,如何确定顺序?(三列被用到的概率一样) 选择更能缩小范围的放在前面
14、聚集索引 非聚集索引 查询效率? http://www.veryhuo.com/a/view/15210.html
15、mysql 乐观锁 悲观锁 16、mysql索引失效 (1)、最佳左前缀法则 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不能跳过索引中的列。 (2)、不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 (3)、存储引擎不能使用索引中范围条件右边的列【范围之后全失效,范围之前的用于查询,范围用于排序】 (4)、尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select * (5)、mysql在使用不等于(!=或)的时候无法使用索引会导致全表扫码 (6)、is null,is not null 也无法使用索引 (7)、like以通配符开头(’%abc…’),mysql索引失效会变成全表扫描的操作,但是like 以通配符开头(‘abc%’)这种形式索引不会失效 【问题】:解决like’%字符串%'时索引失效问题? 使用覆盖索引 (8)、字符串不加单引号索引失效 (9)、少用or,用它来连接时会使索引失效 17、数据库分库分表
三、基础1、进程间通信方式有哪些? 2、有些信号你能捕获,有些信号你是捕获不了的,捕获不了的信号有哪些? 3、zookeeper 可以通过watch,用来做进程间通信,那么zk底层是使用什么方式来实现进程间通信的?依赖操作系统如何实现的? 4、socket通信 5、keepalive时间限制 http 长连接解决的是连接复用问题,那么在使用长连接的时候,同时会有多个请求,那么如何保证多个请求之间的顺序不乱呢?(因为http底层用的还是tcp协议,那么如何保证多个请求的数据不受混淆的?) 6、tcp 如何处理粘包问题 7、http协议 如何区分header头还有body体 8、tcp 协议网络段 协议簇 9、一次完整的http请求 10、http code 302 304含义
四、线上1、如何线上debug?比如线上的cpu爆了,这个步骤是? https://blog.csdn.net/jiankunking/article/details/79749836 2、线上fd耗光了,如何排查? 3、如何定位OOM 问题? https://blog.csdn.net/jiankunking/article/details/79749483
4、 五、kakfa1、kafka某个broker上是否可以有无限个topic?或者万级别的topic? 2、kafka 设计,还有broker上文件存储 3、kakfa是否支持顺序消费消息? 4、zk在kafka集群中的作用 5、kafka 消费时候可以批量拉取? 可以 https://stackoverflow.com/questions/35623057/can-a-kafka-consumer0-8-2-2-read-messages-in-batch 6、消息队列 选型 为什么选择kafka? 7、kafka增加、删除节点时如何迁移数据?新的数据如何分配? https://blog.csdn.net/lingbo229/article/details/83309208 8、kafka写入消息 如何保证回滚或者保证不被消费 比如在一个事务中需要发消息给kafka,当事务失败的时候,如何取消kafka中的消息或者让它不被消费 9、kafka 如何确保消息消费且只消费一次?
六、ES1、在ElasticSearch中,集群(Cluster),节点(Node),分片(Shard),Indices(索引),replicas(备份)之间是什么关系? https://www.zhihu.com/question/26446020/answer/75952428
2、elasticsearch整个建索引、查询的过程 3、elasticsearch如何选举 Elasticsearch选举master的时候, 当加入一个节点, 如果之前的Elasticsearch集群已经正常的在运行, 那么此时这个节点的加入会选择接受之前的master, 然后自己连接master并加入这个master构成的集群。如果是整个master集群刚开始初始启动的时候,这时候情况就会不同,就会出现选举master的过程。 这时候的选举可能选到了自己作为master, 也有可能是接受其他节点的master。
Bully算法 Leader选举的基本算法之一。 它假定所有节点都有一个惟一的ID,该ID对节点进行排序。 任何时候的当前Leader都是参与集群的最高id节点。 该算法的优点是易于实现,但是,当拥有最大 id 的节点处于不稳定状态的场景下会有问题,例如 Master 负载过重而假死,集群拥有第二大id 的节点被选为 新主,这时原来的 Master 恢复,再次被选为新主,然后又假死… elasticsearch 通过推迟选举直到当前的 Master 失效来解决上述问题,但是容易产生脑裂,再通过 法定得票人数过半 解决脑裂 4、ik 是如何进行分词的?
七、OpenTSDB1、OpenTSDB与HBase 关系 2、
八、脑经急转弯1、判断一个整数是2的N次方? https://blog.csdn.net/tianyunzqs/article/details/53234236 2、二叉树拷贝(非递归) 3、BitMap算法(应用)
九、其他1、分布式锁有哪些实现方式? http://www.hollischuang.com/archives/1716 2、分布式事务 3、异地多活 4、zookeeper集群 当一个节点挂了一天,当再次启动的时候,如何识别哪个是leader? 5、有什么知名的开源apm(Application Performance Management)工具吗? https://www.zhihu.com/question/27994350/answer/118821214 6、pinpoint 原理? 7、consul template作用?如何与prometheus交互的? 通过监听Consul中的数据可以动态修改一些配置文件,比如可以watch consul中的kv数据,动态生成prometheus的告警rule文件等 8、
十、金融1、同业拆借 2、信用卡消费一笔钱,是如何到收款人的账户的?(整个流转过程) https://blog.csdn.net/jiankunking/article/details/84347429 3、复式记账
十一、Spring1、spring 注入 接口即如何注入一个接口的多个实现类? https://www.cnblogs.com/lee10010/p/7888121.html https://www.cnblogs.com/linjiaxin/p/5897749.html 2、
个人微信公众号:
作者:jiankunking 出处:http://blog.csdn.net/jiankunking