Java2021中级面试题
1.在支付过程中,出现支付超时解决方案
出现场景:用户停留在支付页面15分钟之后再支付,就会出现用户付款,后台把该订单给取消了(使用rabbitMQ延迟队列,下单时间+15即为超时时间)
解决方案:
支付宝
支付宝支付接口有提供一个绝对超时时间字段,超过这个时间支付宝就会返回支付超时
微信
微信支付接口有提供交易开始时间和交易结束时间,超过这个时间微信就会返回支付超时
2.订单支付成功,没有收到异步通知,超过设置时间,后台把订单取消,之后又收到通知解决方案
方案一:判断订单的状态,只有是未支付的状态才更新为已支付
3.谈一下对webService理解,发布服务怎么实现的
理解:webService是一种跨编程语言和跨操作系统平台的远程调用技术
发布服务实现方式:
- 创建一个返回类型的实体类对象
- 创建服务对象,并建立获取相关信息的方法(类上使用@WebService)
- 运行发布
- 使用jdk的bin目录下自带的wsimport.exe将其生成.java文件
- 建立调用服务的模拟客户端(新建一个项目)将生成的文件拷入"客户端"
- 建立测试类进行访问调用
参考文章:https://blog.csdn.net/sinat_35821285/article/details/79318902
4.mybatis中resultMap和resultType区别
resultMap:适合使用返回值是自定义实体类的情况
resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型
resultMap :
映射实体类的数据类型
resultMap的唯一标识
column: 库表的字段名
property: 实体类里的属性名
- 多线程的实现方式,线程池有哪些参数,cashThreadPool队列是有序队列还是无序
- 继承Thread类,重写run方法
- 实现Runnable接口,重写run方法,
- 使用Callable和FutureTask创建多线程
实现步骤:
a:创建Callable接口的实现,并实现call()方法
Callable<Integer> myCallable = new MyCallable(); // 创建MyCallable对象
FutureTask<Integer> ft = new FutureTask<Integer>(myCallable); //使用FutureTask来包装MyCallable对象
Thread thread = new Thread(ft);
thread.start();
- 使用线程池方式
ExecutorService executorService = Executors.newFixedThreadPool(5);
for(int i = 0; i<POOL_NUM; i++) {
RunnableThread thread = new RunnableThread();
//Thread.sleep(1000); executorService.execute(thread);
}
//关闭线程池
executorService.shutdown();
- 优化Sql一般是怎么实现的方式
创建索引
Mysql查看sql语句执行效率,在sql语句前加上explain
对应字段名称:
Id:查询序列号
Select_type:查询的类型
为simple:简单查询(不使用union或子查询等)
Primary:最外面的查询
UNION:UNION中的第二个或后面的SELECT语句
DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询
UNION RESULT:UNION的结果。
SUBQUERY:子查询中的第一个SELECT
DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询
DERIVED:导出表的SELECT(FROM子句的子查询)
table:显示这一行的数据是关于哪张表的
type:这列最重要,显示了连接使用了哪种类别,有无使用索引,是使用Explain命令分析性能瓶颈的关键项之一。
结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。
possible_keys:列指出MySQL能使用哪个索引在该表中找到行
key:显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL
key_len:显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示使用哪个列或常数与key一起从表中选择行。
rows:显示MySQL认为它执行查询时必须检查的行数。
Extra:包含MySQL解决查询的详细信息,也是关键参考项之一。
- Join on 和join where 区别
Join on是先执行on后面的条件再进行连接查询
Join where 是先连接查询再执行后面的条件
- 常用的设计模式有哪些?单例模式有几种,各有什么优点,缺点
- ConCurrentHashMap为什么是线程安全
- 说一下秒杀活动怎么实现的(并发处理机制,10000个人同时秒杀,库存不够),怎么控制并发,加入库存只有五件怎么控制先后顺序
- 将商品id作为key,库存token作为vaule存到redis中
- 秒杀的时候,使用leftpop()方法从redis中取出库存token,若为空则说明秒杀完了,若不为空,加入到消息队列中,异步处理更新库存和生成订单
- for 和 foreach区别(效率、功能方面)
foreach适用于只是进行集合或数组遍历,for则在较复杂的循环中效率更高。
foreach不能对数组或集合进行修改(添加删除操作),如果想要修改就要用for循环
- StringBuffer和StringBuilder区别,底层数据结构
- 线程安全,StringBuffer:线程安全,StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder 修饰。
- 缓冲区:StringBuffer每次获取toString都会直接使用缓存区的toStringCache值来构造一个字符串,StringBuilder每次需要复制一次字符数组,再构造一个字符串
- 性能:因为StringBuffer是线程安全的,访问的时候都加了锁,所以StringBuilder性能大于StringBuffer
- RabbitMQ多个消息超时或阻塞没有消费
设置消息超时时间
- RabbitMQ重复消息消费问题
Java2021中级面试题相关推荐
- 【无标题】2021年中式烹调师(中级)试题及解析及中式烹调师(中级)复审考试
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:中式烹调师(中级)试题及解析是安全生产模拟考试一点通生成的,中式烹调师(中级)证模拟考试题库是根据中式烹调师(中级)最新版教材汇编 ...
- 2021年中式烹调师(中级)试题及解析及中式烹调师(中级)模拟试题
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:中式烹调师(中级)试题及解析是安全生产模拟考试一点通生成的,中式烹调师(中级)证模拟考试题库是根据中式烹调师(中级)最新版教材汇编 ...
- 2022茶艺师(中级)试题及答案
题库来源:安全生产模拟考试一点通公众号小程序 2022茶艺师(中级)考试题库为茶艺师(中级)试卷考前押题密卷!2022茶艺师(中级)试题及答案依据茶艺师(中级)考试大纲.茶艺师(中级)考试模拟题通过安 ...
- 高职计算机辅助设计CAD期中考试题,计算机辅助设计CAD绘图员(中级)技能鉴定试题(新)(机械类)模拟题...
<计算机辅助设计CAD绘图员(中级)技能鉴定试题(新)(机械类)模拟题>由会员分享,可在线阅读,更多相关<计算机辅助设计CAD绘图员(中级)技能鉴定试题(新)(机械类)模拟题(4页珍 ...
- 2021年电工(中级)最新解析及电工(中级)试题及解析
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:电工(中级)最新解析参考答案及电工(中级)考试试题解析是安全生产模拟考试一点通题库老师及电工(中级)操作证已考过的学员汇总,相对有 ...
- 中级java笔试题_Java中级面试题合集
Java中级面试题合集:1.弹出式选择菜单(Choice)和列表(List)有什么区别 Choice是以一种紧凑的形式展示的,需要下拉才能看到所有的选项.Choice中一次只能选中一个选项.List同 ...
- 2021年电工(中级)试题及解析及电工(中级)模拟试题
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:电工(中级)试题及解析考前必练!安全生产模拟考试一点通每个月更新电工(中级)模拟试题题目及答案!多做几遍,其实通过电工(中级)作业 ...
- 2021年西式面点师(中级)试题及答案及西式面点师(中级)考试试题
题库来源:安全生产模拟考试一点通公众号小程序 2021年西式面点师(中级)试题及答案及西式面点师(中级)考试试题,包含西式面点师(中级)试题及答案答案和解析及西式面点师(中级)考试试题练习.由安全生产 ...
- 2021年西式面点师(中级)试题及解析及西式面点师(中级)模拟考试题库
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:西式面点师(中级)试题及解析是安全生产模拟考试一点通生成的,西式面点师(中级)证模拟考试题库是根据西式面点师(中级)最新版教材汇编 ...
最新文章
- 【leetcode】30. Substring with Concatenation of All Words
- SAP UI5和CRM WebUI的View和Controller是如何绑定的
- dorado-SplitSpanel控件
- Highcharts+Spring饼图使用实例
- span的取值与赋值(原生js与jquery) - 对比篇
- finereport报表设计中模板数据集的sql语句中if的用法_报表工具中动态参数的灵活运用...
- Java中complex怎么被调用_java中存在三种调用机制
- wi ndows防火墙,网吧的防火墙怎么关?四种方法关闭WINDOWS防火墙
- 本来共享的计算机突然无法访问,WIN7局域网无法启用共享访问解决办法
- 华硕笔记本(GTX 1060显卡)安装Ubuntu16.04+Nvidia显卡驱动+Cuda8.0+cudnn6.0+ROS+Opencv3.2+Caffe+Tensorflow
- 2010~2011手机CPU对比
- 你可能不知道,Diffusion现在有多火
- 程序人生:我,颓废3年,怒加薪26K:成年人最顶级的自律,是逆着人性做事
- python3 安卓_Android QPython3 调用 其他 Android App
- 中国运动型多功能车和皮卡视频行业市场供需与战略研究报告
- Android中拍照完就给图片加水印,Android调用相机拍照并添加水印
- 转型经验分享|年过30的传统汽车人,如何转型做自动驾驶
- 顺丰快递电话查询比网上查询更提前更详细
- php新浪微博 登录接口文档,qq登录,新浪微博登录接口申请过程中遇到的问题
- 无胁科技-TVD每日漏洞情报-2022-10-24
热门文章
- 路印协议受邀参加澳洲新南威尔士政府孵化器Haymarket HQ分享论坛
- 打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
- 命令行接口(CLI)将被取而代之,它不再是网络运维的主要工具
- 怎样用VB编写.DLL动态链接库文件
- 数据库插入时,标识列插入显式值
- hdu-1166敌兵布阵
- 面试题6:用两个栈实现队列
- 开源许可证 如何工作_开源许可证的工作方式以及如何将其添加到您的项目中...
- 限制HTTP数据包发送Referer
- win8计算机管理没有用户组,Win8右键计算机管理提示“该文件没有与之关联的程序”怎么办?...