2023年两年经验java面试-亲身经历

一、java与Spring相关基础题


1、ArrayList和LinkedList区别、栈和队列区别、字符串怎么拼接、字符串两种拼接方法区别

2、事务失效场景

3、spring是什么

4、Hashmap底层原理、还有实现map接口的集合吗、他们的区别是什么

5、线程池执行原理

6、怎么创建线程池,线程池的参数你是怎么设置的

7、mybatis和myabatis-plus区别

8、SpringCloud与Dubbo区别

9、Nginx和GateWay区别

10、jvm内存模型、年轻代与老年代占比、年轻代划分与年轻代Eden、s0、s1占比

11、spring常用注解

12、SpringMvc的执行流程

13、拦截器与过滤器区别

14、拦截器与过滤器分别在SpringMvc的执行流程的哪一步开始生效

15、springcloud相关组件,客户端请求到springcloud执行流程

二、数据库相关


1、MySQL索引类型

2、怎么定位慢SQL

3、怎么提升sql效率

4、怎么知道sql有没有走索引,执行计划怎么看sql有没有走索引

5、数据库三范式

6、水平分表和垂直分表

7、索引失效场景

8、MySQL索引实现原理

9、为啥MySQL加了索引检索效率快

10、事务的特性

11、事务隔离级别、各个隔离级别的作用

12、Oracle、MySQL、达梦数据库的区别

三、redis相关


1、为什么用redis,怎么用的

2、redis用了什么数据类型

3、redis怎么保证两条操作的原子性

4、redis为啥快

四、mongoDB


为啥用mongoDB

mongoDB为啥快

五、开放题、场景题

1、我们当时有一个场景,在SpringBoot工程后台,将表日志导入到Excel,发现表数据量到达千万,导致内存溢出怎么解决


方案一不推荐:通过mas和max调优参数对jvm的堆内存进行扩容

方案二推荐:通过同步线程循环导出解决、将千万条数据分成100份、每份10万条数据,通过同步线程每次导出10万条数据,直至数据全部导出(注意:若是异步多线程处理会导致这1000万条数据被同时加载到内存里,依旧会导致内存溢出)

2、有个场景,数据需要经常用到模糊查询,应该用Redis还是MySQL

我问是热点数据吗、面试官答:是热点数据

我在问数据量大吗、面试官答:数据量大

我答:我认为应该用MongoDB,数据量大、又是热点数据,符合MongoDB的使用场景

3、怎么提升服务性能

(1)程序:

在后台程序中添加一个缓存层、单机系统可以添加一个本地缓存或Redis

分布式系统用redis或redis集群

(2)数据库:

1、当单表数据量过大可以考虑水平分表,降低单表数据量

2、清空表数据用TRUNCATE,效率比delete快

3、添加数据用批量添加

4、查询数据用数据量最少的表作为基础表

5、写查询sql时,让sql走索引,记得防止索引失效即可

6、搭建MySQL集群,进行读写分离

(3)搭建服务集群

公司要是预算够可以买一些服务器搭建服务集群

4、开发上碰到什么问题

6、项目开发流程

*(1)项目开发全流程

产品经理的需求文档--->        

项目组长的开发文档--->       

公司立项-->        

组成团队进行开发 --->

开发完成--->        

测试人员测试--->       

我们开发根据测试文档进行消缺--->

测试人员的回归测试        --->

回归测试无问题(有问题继续消缺        --->

部署上线

(2)二期开发

待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值