B+树索引和哈希索引都有什么优缺点:http://www.javashuo.com/article/p-ewgykcmq-cb.html http://www.javashuo.com/article/p-bwixyvrq-gc.htmlhtml
B树和B+树的区别:http://www.javashuo.com/article/p-dnkgqbpl-ev.html https://blog.csdn.net/login_sonata/article/details/75268075java
HashMap里面实现一个静态内部类Entry,其重要的属性有 key , value, next,从属性key,value咱们就能很明显的看出来Entry就是HashMap键值对实现的一个基础bean,咱们上面说到HashMap的基础就是一个线性数组。把HashMap的put源码,get源码理一遍linux
Exception与error的差异 Exception的分类 NullpointerException属于什么.运行时异常与通常异常的区别 .try-catch-finally中return https://www.jianshu.com/p/e8bbee3c1c4a https://blog.csdn.net/huhui_cs/article/details/38817791 https://blog.csdn.net/u012112647/article/details/51798897 https://blog.csdn.net/ns_code/article/details/17485221web
IO流分类:IO流中用到了不少设计模式:https://my.oschina.net/gao0516/blog/136103面试
问了一个数据量过大,会致使JVM堆栈过深,怎么办:http://www.javashuo.com/article/p-stucavxq-ee.htmlredis
为何要设置两个Survivor区
设置两个Survivor区最大的好处就是解决了碎片化,下面咱们来分析一下。数据库
为何一个Survivor区不行?第一部分中,咱们知道了必须设置Survivor区。假设如今只有一个survivor区,咱们来模拟一下流程:
刚刚新建的对象在Eden中,一旦Eden满了,触发一次Minor GC,Eden中的存活对象就会被移动到Survivor区。这样继续循环下去,下一次Eden满了的时候,问题来了,此时进行Minor GC,Eden和Survivor各有一些存活对象,若是此时把Eden区的存活对象硬放到Survivor区,很明显这两部分对象所占有的内存是不连续的,也就致使了内存碎片化。设计模式
hashset实现的原理:https://wiki.jikexueyuan.com/project/java-collection/hashset.htmlapi
读写锁 https://blog.csdn.net/Li_Ning_/article/details/52294343数组
https://michaelyang1988-hotmail-com.iteye.com/blog/1874671
数据库分库分表,垂直切分和水平切分 https://www.i3geek.com/archives/1108
java线程安全;http://www.javashuo.com/article/p-uygzhmju-a.html
KEYS pattern
查找全部符合给定模式 pattern
的 key
。
内存碎片:http://www.javashuo.com/article/p-usbpqcuo-mw.html https://blog.csdn.net/bit_x/article/details/5655278
【同一进程间的线程共享的资源有】
a. 堆 因为堆是在进程空间中开辟出来的,因此它是理所固然地被共享的;所以new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)
b. 全局变量 它是与具体某一函数无关的,因此也与特定线程无关;所以也是共享的
c. 静态变量 虽然对于局部变量来讲,它在代码中是“放”在某一函数中的,可是其存放位置和全局变量同样,存于堆中开辟的.bss和.data段,是共享的
d. 文件等公用资源 这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。
【独享的资源有】
a. 栈 栈是独享的
b. 寄存器 这个可能会误解,由于电脑的寄存器是物理的,每一个线程去取值难道不同吗?其实线程里存放的是副本,包括程序计数器PC
关系型与非关系型数据库的优缺点 http://www.javashuo.com/article/p-wfaklldr-kc.html
给定一个int数组A,数组中元素互不重复,给定一个数x,求全部求和能获得x的数字组合,组合中的元素来自A,可重复使用。
做者:菜鸟也须要offer 连接:https://www.nowcoder.com/discuss/206411
来源:牛客网 public ArrayList<ArrayList<Integer> res = new ArrayList<>(); public ArrayList<ArrayList<Integer>> sum(int[] A,int x) { Arrays.sort(A); if(A==null||A.lenght==0) return res; ArrayList<Integer> list = new ArrayList<>(); bk(A,X,0,list); return res; } public void bk(int[] A,int X,int k, ArrayList<Integer> list) { if(X=0) { res.add(list); return; } if(X<0) { return; } for(int i=k;i<A.lenght;i++) { list.add(A[i]); bk(A,X-A[i],i,list); list.remove(list.size()-1); } }
如何统计controller层全部方法的调用时间:Spring AOP 实现监控方法执行的时间(统计service中方法执行的时间)
linux查找文件命令:find
内存屏障,happen-before https://blog.csdn.net/kuangzhanshatian/article/details/81738599
wait方法底层原理:https://www.jianshu.com/p/f4454164c017
内部类能够引用他包含类的成员吗:一个内部类对象能够访问建立它的外部类对象的内容,内部类若是不是static的,那么它能够访问建立它的外部类对象的全部属性内部类若是是sattic的,即为nested class,那么它只能够访问建立它的外部类对象的全部static属性通常普通类只有public或package的访问修饰,而内部类能够实现static,protected,private等访问修饰。当从外部类继承的时候,内部类是不会被覆盖的,它们是彻底独立的实体,每一个都在本身的命名空间内,若是从内部类中明确地继承,就能够覆盖原来内部类的方法。
java多线程龟兔赛跑:https://blog.csdn.net/renl123470/article/details/52344422
动态代理,但是在印象中代理模式一直都是控制访问什么的,怎么又动态增长行为了,动态增长行为不是装饰器模式吗?实际上,在装饰器模式和代理模式之间仍是有不少差异的。装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)能够对它的客户隐藏一个对象的具体信息。所以,当使用代理模式的时候,咱们经常在一个代理类中建立一个对象的实例。而且,当咱们使用装饰器模 式的时候,咱们一般的作法是将原始对象做为一个参数传给装饰者的构造器。