面向对象的三大特征
hashmap的底层实现
https和http的区别
网页请求流程
插入排序
小白菜价20W
JVM内存回收算法
写单例
接口和抽象类的区别
设计模式
一面:
编程题:生产者消费者模式,n个排序数组求前k个数
项目中用到多线程的地方,商品详情页面
熔断的概念
秒杀的业务逻辑
事务的ACID
组合索引,最左匹配原则
TCP三次握手和四次挥手
二面:
编程题:写单例,链表反转(两个节点为一个单位进行反转)
破坏单例模式
数据库索引,聚簇索引和辅助索引的区别,主键索引和聚簇索引的区别
索引底层为什么使用B+树而不使用其它类型的排序树,比如说B树
主键自增的优缺点
数据库中的数据在文件中是怎么存储的
get和post的区别,什么是幂等?什么是安全?
http报文结构
http和tcp的区别
https中用到的加密算法,为什么两种结合使用,具体过程讲一下
三面:
编程题:36进制加法
项目介绍
Redis底层原理,数据类型
url地址解析过程
TCP拥塞控制、慢开始、快重传、滑动窗口
设计一个内存池,类比线程池和数据库连接池
垃圾回收算法、垃圾收集器
进程通信的方式
自己的优势和劣势
抗压能力
算法题:给定一个只包含0~9的数组,然后再给定一个K值,对数组里面的数字进行组合,输出所有比K大的组合数中最小的一个。
nums = [4,1,4,2,7,8] K=448
输出:712
操作系统的基本功能
cookie和session的区别
跨域问题,如何解决
多个线程能否监听同一个TCP端口
1、URL解析过程
2、POST和GET请求的区别
2、多态的作用,怎么实现
3、static关键字的作用
4、synchronized的原理
5、Java中的异常分类
6、进程和线程的区别
7、数组区间合并
1、服务端渲染和客户端渲染的区别,为什么要使用服务端渲染,JSP了解吗,工作机制是什么?
2、Java内存区域
3、方法区的作用
4、堆内存的划分,年轻代和老年代,分别使用的垃圾回收算法
5、JVM默认的垃圾回收算法
6、HTTP和HTTPS的区别,HTTPS使用的加密算法
7、通信双方如何认证?如何避免证书被伪造?
8、Spring AOP
9、jdk动态代理和CGLIB动态代理的区别,其生效时期是什么时候?
10、ES索引原理,Mysql索引原理,ES区间查询怎么实现?(跳表)
11、一条长度为l的线段,随机在其上选2个点,将线段分为3段,问这3个子段能组成一个三角形的概率是多少?
12、代码题:给定已经按升序排列、由不同整数组成的数组 A,返回满足 A[i] == i 的最小索引 i。如果不存在这样的 i,返回 -1。
例子:输入【-1,0,2,3,4】返回“2”
1、String、StringBuffer、StringBuilder的区别
2、数据库事务的特点
3、数据库中的锁
4、TCP三次握手
5、前端了解吗?Vue、JQuery、React的区别
6、冒泡排序
项目介绍
SpringBoot 自动配置原理
SpringCloud中Eureka服务注册中心和Zuul网关的原理
数据库的隔离级别,如何实现可重复读
数据库的索引有哪些,介绍B+树索引
Redis的线程模型,常用的数据结构
RabbitMQ的消息模型
编程题:leetcode695 岛屿的最大面积
编程题:一个栈中存放无序数字,使用额外空间栈对其进行排序
项目介绍
反向代理是什么
synchronized底层原理,普通同步方法和静态同步方法的区别
mysql的索引原理
数据库中的乐观锁和悲观锁
数据库中视图的概念,视图可以加快查询吗?
数据库的事务特性,mysql的隔离级别
HashMap是线程安全的吗?ConcurrentHashMap的底层实现原理,CAS是什么?
Redis的持久化机制?AOF文件和RDB文件哪个大?
线程池原理,核心参数介绍,拒绝策略
==和equals的区别,hashcode的作用,与equals有什么关系
SpringBoot的原理
Mybatis的动态SQL
编程题:合并两个有序链表
给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
常用数据结构
堆的定义,排序的过程,为什么可以原地操作?放在数组里面,完全二叉树
介绍AVL、BST、红黑树。为什么有了BST还要使用红黑树?
Stack怎么实现的
链表和数组的区别
HashMap的底层原来,为什么扩容是2倍?
LinkedHashMap的原理,可以用来干什么?LRU,介绍LRU,页面置换为什么使用LRU?局部性原理,提高缓存命中率。
设计模式:单例,工厂,模板方法,策略
代理设计模式对应OO模型中的哪一种?组合模型
策略设计模式对应OO模型中的哪一种?
面向对象的三大特征,多态是怎么实现的?Java如何实现多继承,多继承存在什么问题?
volatile的作用:禁止重排序,保证可见性
synchronized的底层原理
轻量级锁和重量级锁,乐观锁和悲观锁
自旋锁的作用是什么?降低线程切换的成本
String是线程安全的吗?final关键字的作用
Spring AOP原理,动态代理的方式
equals和hascode的关系
JVM运行时内存区域
垃圾回收算法、可达性分析算法,finallize的作用
年轻代为什么要分三个区域
介绍项目
Redis的基本数据结构,Set怎么实现的,跳表的插入删除查询时间复杂度
一致性hash
负载均衡算法有哪些
编程题1:1、4、7、8、3、2找最大值
public class Main {
public static void main(String[] args) {
int[] nums = {1,4,7,8,3,2};
int i = 0, j = nums.length - 1;
while(i <= j){
int mid = (i + j) / 2;
int temp = nums[mid];
int left = 0, right = 0;
if(mid - 1 >= 0){
left = nums[mid - 1];
}
if(mid + 1 < nums.length){
right = nums[mid + 1];
}
if(nums[mid] > left && nums[mid] > right){
System.out.println(nums[mid]);
break;
}
if(nums[mid] > left && nums[mid] < right){
i = mid + 1;
}else{
j = mid - 1;
}
}
}
}
编程题2:节点取值0/1的二叉树,删除全部为0的叶子节点
public class Main {
public static TreeNode solve(TreeNode root){
if(root == null){
return null;
}
TreeNode left = solve(root.left);
TreeNode right = solve(root.right);
root.left = left;
root.right = right;
if(left == null && right == null && root.val == 0){
return null;
}
return root;
}
}
简洁版:
private TreeNode solve(TreeNode root) {
if (root == null){
return null;
}
root.left = solve(root.left);
root.right = solve(root.right);
if (root.left == null && root.right == null && root.val == 0){
return null;
}
return root;
}
HashMap的put和get过程,时间复杂度度是多少?HashMap是如何降低碰撞的概率?
Spring IOC和AOP
编程题:矩阵中左上角到右下角的路径总数
两个栈实现队列
跳台阶
static方法中可以引用非static方法吗?
Spring中IOC和AOP的原理
mysql中的脏读和幻读概念
ThreadLocal
垃圾回收算法和垃圾收集器