几道面试题记录20231023

1, JVM优化

  -Xms=-Xmx

  -Xmn

  -Xss

  -XX:PermSize

  -XX:MaxPermSize

-NewRatio

-SuvriorRatio

收集器配置:

         一般:串行收集 Serial

         吞吐优先:并行收集Pramllel

响应优先:并发收集Conc

2,支付掉单如何解决?

因为网络等原因,支付网关未收到银行返回的操作结果(银行扣款未成功;银行扣款成功,故客户的虚拟账户及订单收款状态未发生变化,称为掉单。

可以通过后端程序轮询银行前置机的支付接口,查询支付状况,根据情况延迟更新客户的虚拟账户及订单收款状态。

3,行级锁如何解决?

通过存储过程

4,数据库事务的安全性?

         创建恢复点

         开始事务

         结束事务

         提交事务或回滚事物

5,假如给tomcat的内存只有40MB,数据库有20000条记录,一次性导出到客户端,内存不够用怎么办?

         将20000条记录分批次先后导出(分页查询)到不同文件,再合并到一个文件。

                                                                     

6,长时间的事务如何处理?

         收缩日志文件(修改日志文件大小),就是短时提交,这样保持会话的连续性。

7, 大量并发操作hashmap,如remove,put,get等,不能使用synchronized关键字来同步,也不能使用hashtable(线程安全耗时),如何解决?

         ThreadLocal(线程隔离,独立维护线程局部变量副本 HashMap) 在SSH框架应用较多,特别struts.Hibernate

8,分布式以及集群环境下,对大量小文件均衡同步分发,是什么原理,采用什么算法?

         经过HashTree(多次hash)来同步,hash算法,如TFS,GFS,HDFS.

9,MQ应用中,消息的消费处理低于消息生产,消息队列发生阻塞,如何处理?

         1,消息生产对消息分组打包发送,消息消费拆包消费,从而降低消息队列中的消息数量。

         2,设置相应的q,timeout值,xmitq值要设置大些。

10,有一张很大的银行卡表,因账务操作,使用频繁,并发量大,导数数据库压力增大,如何处理?

         使用缓存(应用缓存,数据库缓存),或表拆分

11,Oracle表分区的好处?

         通过对表进行分区,可以获得以下的好处: 

1) 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 

2) 维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;  

3) 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;  

4) 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度

12,数据库表拆分(一主多从到多主多从)

两个维度:

 垂直拆分:是指按功能模块拆分,比如可以将群组相关表和照片相关表存放在不同的数据库中,这种方式多个数据库之间的表结构不同。

  水平拆分:而水平拆分是将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。

13,线程间通信(数据传递或共享)?

  1. 注入回调接口;静态回调…
  2. 全局变量
  3. 系统环境变量,
  4. 虚拟机环境变量
  5. 文件形式
  6. 表状态
  7. JMS,MQ
  8. 管道流

你可能感兴趣的:(Java,面试,Java面试题,求职面试)