JAVA面试心得与面试题详解
JAVA面试心得与面*题详解
1、java内存模型与并发增加
但他这个问题并不是简单问你这些,他更想得到是你对内存java内存的理解及从性能上给出较优解决方案,博主是从架构上面出发给出的并发增加。比如分布式解决方案,和nginx反代等等,*提及到nginx 的时候是给自己挖了个坑,待会讲面试的时候在说。
2、在交易过程中如何放在用户在支付时的重复支付(交叉支付),请写出你了解的方案或使用的过的方案
因为博主以前做过集成支付宝的支付模块,在这就给出的自己的解决方案吧;
因为在调用支付宝接口的时候是一个http请求,支付完成后支付宝会异步回调我们配置好的接受接口但在这个过程中呢可能会
因为网络、服务、系统等原因造成用户支付但是没有成功回调更改我方数据库数据的bug。
在这呢我们后端是使用的是提交查询的方法去避免用户二次支付的。因我们的在支付的时候支付宝也会记录我们的订单编号和他们生成的一个订单编号,我们可以使用我们的订单编号去调用支付宝的订单查询接口去查询到此订单的支付情况。如果查到这个订单编号已经支付过了那就直接返回。
第二个我们的前端也做了重复提交的相应处理从双方向来避免用户产生重复支付的情况。
3、程序开发时通过开发工具DeBug调试时,控制台显示的内容都包含什么?哪些内容可以帮助你发现问题和解决问题。
这个博主就不详细解答了,大家按自己的开发习惯来吧,这个题出现在*面*题里面我觉得可能有它的道理,*我就是用来看下值和指针的走向每一步的值是不是预想值。如果大家有更实用的用法务必在下方评论交流一下。
4、RPC通信过程中,假设A系统提供了一个方法入参是一个JavaBean,出参也是一个JavaBean。另外两个系统B系统、C系统调用接口,调用方B想让提供方A增加一个返回参数,假设服务提供方A增加了返回参数,请问C系统调用方需要做什么处理?
在这个问题博主没有写在纸上,只写了希望面对面回答,因为这个题写出来太多了,在面试过程中我是这样回答的:
当时博主指出了这个题存在的需求实现问题,为什么非要在A系统的接口上直接修改接口入参呢?因为这样修改要动A、B、C、3个系统调用方的代码,这样给整个业务带来了很多不便,为什么不给A服务的接口进行一个方法重载呢,这样既解决的需求问题,也只需要变动A、B两个系统的代码就可以了并不会影响C系统。
当后来他问到我可不可以通过底层基础去实现的时候我就回答了一个反射机制给怼了回去。
注:当时博主看错了把A系统的返回参数看成入参了,按入参答得,今天这么一看感觉这个题有点问题啊。反参不是只能一个吗?除非去变动数据类型,以集合方式去反参,我估计是写错了。
面试:
1、nginx的配置问题,能否配置跳转2级域名。
答:是可以的,然后又问了一下nginx的负载均衡策略,和你们原本配置的nginx的架构是什么样的。
2、redis数据类型及使用场景,和内存分配大小,是否接触过redis集群,redis集群配置和监听机制,持久化策略及区别和应用场景,hash冲突,如何增加redis里面都是热点数据,淘汰策略,常用的命令,和Jedis的常用api,这里会问到如何增加redis多线程下的原子性操作的,如果你使用过lua脚本的话就答一下这个就行了,京东在这redis这方面问的挺深的建议看一下redis详解再配合自己的使用经历去回答。
3、是否使用过MQ,这里博主答的是ActiveMQ相关方面的知识,这里问到多是从业务解决方面来问的,你们mq都用来干嘛了,为什么用它,mq的持久化机制,如果消费失败了怎么办,使用mq消费的时候使用事务控制吗?如何使用。
4、你上一个项目中jvm各种内存如何分配的。
在这里spring全家桶和数据库相关知识几乎没在面试中问,他们更多注重这些中间件相关的知识,可能面到这个层级的岗位大家都不注重什么框架了,因为都是底层去实现的,只要基础够扎实大厂指日可待。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 北京通州区IT培训北京通州区php培训北京通州区java培训 网站详细了解,免费咨询电话:400-998-6158