AI小白 https://www.zhihu.com/question/36512716
netty :https://www.zhihu.com/question/24322387
面试阿里java 要求: https://www.zhihu.com/question/363448965
leetcode 刷面试题: https://www.lintcode.com/
2021-6-14~6-21期间面试题汇总;
1.list、set、hashmap的数据结构、初始化大小、扩容大小;
2.线程有哪几种状态;
3.你知道java的那些锁,解释一下synchronized、volatile怎么实现锁的。
4.对网络编程了解多少?谈谈netty.
5.spring的生命周期;
6.springboot 的启动流程;
7 springboot-starter自己实现应该怎么做?
8 springcloud feign的实现原理;
9.事务的隔离级别有哪几种?
10.@transaction嵌套spring默认是一个事务还是两个事务?(默认是一个,可以配置为两个)
11 数据修改,先更新缓存还是更新数据库?
先操作数据库再删除缓存能有让人可接受的结果,所以最推荐这种做法。
12 谈谈你对多线程和高并发的理解,在哪些场景中与到了高并发,如何解决的?
数据库:
员工表(id,name,salary),部门表 (id,name) --> 部门工资前三高的人和工资
算法:
1.字符串的"dfadfsdafas"最长不包含重复字符的子串长度。
2. 单向链表输出经过n次位移的结果? 1->2->3->4 4->1->2->3
4. NxN棋盘,有N个相同棋子;任意两个不同行,不同列,不同对角线有多少种摆法?
给定单链表L,请将其向右循环移位K次。
比如:
L = 1 -> 2 -> 3 -> 4
K = 3
则结果为 1w - head
4 -> 1 -> 2 -> 3
3 -> 4 -> 1 -> 2
2 -> 3 -> 4 -> 1
class LinkNode{
LinkNode next;
int value ;
head(){}
tail(){}
}
LinkNode move(int k,LinkNode node){
int size = node.size;
int a = k%size;
node.tail.next = node.head;
LinkNode startnode ;
LinkNode beforestartnode ;
// start
for(int i =0; i < a-1 ;i++ ){
beforestartnode = node.next;
node = node.next;
}
startnode = beforestartnode .next;
beforestartnode.next = null;
return startnode
}
经典N皇后问题。
给定N*N的棋盘,在其中放置N个棋子,要求任意两个棋子不能同行、同列、同对角线、同反对角线。
请求出可能的不同摆法的个数。 N n! - 2( Cnn+Cnn-2)
[]
二分查找
arr = [1, 3, 5, 7]
int is = 0, ie=length/2
int q = 4;
if( q > arr[ie] )
is = length/2; ie = length;
int index=-1;
while ( is <=ie || q==arr[is] ){
if(q < arr[is ] )
is = is; ie = ie/2;
else
is = length/2; ie = length;
}