1.factoryBean实现?
beanfactory 和factorybean 是不一样的
beanfactory:是一个工厂类接口,在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
factorybean:是个bean,FactoryBean<T>接口的Bean,根据该Bean的ID从BeanFactory中获取的实际上是FactoryBean的getObject()返回的对象,而不是FactoryBean本身,如果要获取FactoryBean对象,请在id前面加一个&符号来获取
2.springMVC流程?
前段调起dispatcherservlet,dispatcherservlet调起handlermapping,查找出正确的handler ,dispatcherservlet 再调起handleradapter,handleradapter处理handler后生成ModelAndView,并返回给dispatcherservlet ,dispatcherservlet调用view resolver 并返回正确的 view and model进行渲染并返回给前端
3.快速排序、冒泡排序?
/**
* 冒泡排序
* 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
* 针对所有的元素重复以上的步骤,除了最后一个。
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
* @param numbers 需要排序的整型数组
*/
public static void bubbleSort(int[] numbers)
{
int temp = 0;
int size = numbers.length;
for(int i = 0 ; i < size-1; i ++)
{
for(int j = 0 ;j < size-1-i ; j++)
{
if(numbers[j] > numbers[j+1]) //交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
}
static int Division(List<int> list, int left, int right)
{
int baseNum = list[left];
while (left < right)
{
while (left < right && list[right] > baseNum)
{
right -= 1;
}
list[left] = list[right];
while (left < right && list[left] <= baseNum)
{
left += 1;
}
list[right] = list[left];
}
list[left] = baseNum;
return left;
}
static void QuickSort(List<int> list, int left, int right)
{
if (left < right)
{
int i = Division(list, left, right);
QuickSort(list, left, i - 1);
QuickSort(list, i + 1, right);
}
}
4.hashMap、Hashset、hashtable
collection下面有:list、set、queue
参考:https://www.cnblogs.com/lifelee/p/5306304.html
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
参考 http://www.importnew.com/28263.html
当前数组容量,始终保持 2^n,可以扩容,扩容后数组大小为当前的 2 倍 当数据量超过数组容量(数组长度*阈值时)扩容
添加节点到链表中
找到数组下标后,会先进行 key 判重,如果没有重复,就准备将新值放入到链表的表头。如果重复,就放在链表后面
5.arralylist 扩容问题
1.5倍
6.Gc垃圾回收机制?
新生代老年代
7.消费者如何访问服务者?
8.FIleUtil底层?
9.分布式事务处理??
redis中 setnx()
10.消息队列方法?
11.redis保存集中数据类型?
五种:
1.保存数据之String
要把一个String保存到redis中,用set(key,value),获取值用get(key)
2.保存数据之List
要把一个List保存到redis中,遍历List<String>,逐个调用lpush(key,value),获取值用lrange(key,start,end),start代表开始位置,end代表结束位置,如果为-1则代表到未尾。
这里lpush的意思是从左边保存,也就是后来居上。
3.保存数据之Set
要把一个Set保存到redis中,遍历Set<String>,逐个调用sadd(key,value),获取值用smembers(key)
4.保丰数据之SortedSet
SortedSet的意思是他的每一个元素是有顺序的,顺序根据其score来决定,如果socre一样,则按value排序。保存到redis的方法是,对每一个要保存的元素,
调用zadd(key,score,value),获取值用zrange(key,satrt,end),start代表开始位置,end代表结束位置,如果为-1则代表到未尾。
5.保存数据之Hash
要把一个Hash保存到redis中,遍历Map<String,String>,逐个调用hset(key,hashKey,hashValue),获取所有值有hgetAll(key)
12.redis如何应用成消息队列?
13.消息队列用处?
14.线程池如何创建?
15.数据库连接池?
16.git常用命令? sql常用?
17.sql优化?
18.多线程数据安全问题?
19.堆和栈的区别
20.单例模式作用
21.分布式事务控制
22.spring加载初始化过程?
1) 面向过程,日常大家开发的代码都是面向过程的。SQL
2) 面向对象,开发需求变更,减少代码修改量,不能完全克服需求变更。
3) 面向函数,大数据:面向对象+面向函数,函数式编程。
4) 面向架构,SOA+BUS总线,梦想:一个大大软件系统就OK。用友u8,金蝶
5) 面向服务,微服务兴起,基于SOA概念,没有做那么庞大,微服务标准:REST+JSON/RPC,SpringCloud选择前者(REST+JSON+MQ),Dubbo走了后者基于RPC
6) Dubbo是SOA的最佳实践!