美国上市公司,专注Java培训22年

京东JAVA面试心得与面试题详解,总结到位!


2019年的冬季特别的冷,无疑是程序员的寒冬,我也是年底裁员大潮裁下来的一名,(整个业务线都裁了 难受中~)但临近年底了失业回家也不太好所以有投了几份简历,现在已经找到工作了,虽然不是京东但也马马虎虎吧,但我也想把京东的面试过程记录一下。

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行业,想学编程的,小编都建议你先学Java,毕竟应用最广泛,企业需求大, 好找工作不说,薪资水平也高,BAT都需要。


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • 中级Java发开工程师需要那些技术和工程师证
    中级Java发开工程师需要那些技术和工程师证
    中级Java发开工程师需要那些技术和工程师证?中级Java开发工程师通常需要具备以下技术和技能: 详情>>

    2024-04-02

  • Java高级工程师岗位要求
    Java高级工程师岗位要求
    Java高级工程师岗位要求,Java高级工程师是企业中非常关键的技术岗位,主要负责软件的设计、开发、测试和维护工作。具体岗位要求可能因企业的规模、行业、产品和技术栈的不同而有所差异,但通常包括以下几个方面: 详情>>

    2024-03-05

  • 面试Java开发工程师一般问什么问题?
    面试Java开发工程师一般问什么问题?
    面试Java开发工程师一般问什么问题?面试Java开发工程师时,面试官通常会从多个角度评估应聘者的技能和经验,包括基础知识、编程能力、项目经验、问题解决能力、沟通能力以及对Java技术的理解。以下是一些常见的面试问题: 详情>>

    2024-02-29

  • 如何用Java开发游戏?
    如何用Java开发游戏?
    如何用Java开发游戏?使用Java开发游戏可以分为几个步骤,下面是一些基础的指导: 详情>>

    2024-02-29

  • Java开班时间

    收起