北京Java培训
达内北京中关村中心

010-62126400

热门课程

java培训班:京东JAVA面试心得与面试题详解

  • 时间:2020-02-06 10:56
  • 发布:北京java培训
  • 来源:笔试题

达内北京java培训机构为您带来京东JAVA面试心得与面试题详解

整个面试和笔试时间在2-3小时。

废话不多说直接干料。

1、java常用的数据结构有哪些?哪些是线程安全的?是怎么保证线程安全的?

因内容太多就直接贴链接了:

https://blog.csdn.net/u010947402/article/details/51878166

2、java内存模型与并发保证

但他这个问题并不是简单问你这些,他更想得到是你对内存java内存的理解及从性能上给出最优解决方案,博主是从架构上面出发给出的并发保证。比如分布式解决方案,和nginx反代等等,不过提及到nginx 的时候是给自己挖了个坑,待会讲面试的时候在说。

3、线程池内部工作原理

贴链接:https://www.cnblogs.com/qingquanzi/p/8146638.html

4、死锁是什么意思,形成条件是什么?出现死锁是可以通过什么方式去排查

贴链接:https://blog.csdn.net/abigale1011/article/details/6450845/

5、在交易过程中如何放在用户在支付时的重复支付(交叉支付),请写出你了解的方案或使用的过的方案

因为博主以前做过集成支付宝的支付模块,在这就给出的自己的解决方案吧;

因为在调用支付宝接口的时候是一个http请求,支付完成后支付宝会异步回调配置好的接受接口但在这个过程中呢可能会

因为网络、服务、系统等原因造成用户支付但是没有成功回调更改方数据库数据的bug。

后端是使用的是提交查询的方法去避免用户二次支付的。因我们的在支付的时候支付宝也会记录我们的订单编号和他们生成的一个订单编号,我们可以使用我们的订单编号去调用支付宝的订单查询接口去查询到此订单的支付情况。如果查到这个订单编号已经支付过了那就直接返回。

前端也做了重复提交的相应处理从双方向来避免用户产生重复支付的情况。

6、数据库索引有哪几种,他们之间的区别

贴链接:https://www.cnblogs.com/yuan-shuai/p/3225417.html 有人会问为什么会贴这么详细的帖子,因为博主在这吃了亏,在面试的时候面试官会问到很细致。

7、程序开发时通过开发工具DeBug调试时,控制台显示的内容都包含什么?哪些内容可以帮助你发现问题和解决问题。

这个博主就不详细解答了,大家按自己的开发习惯来吧,这个题出现在高级面试题里面可能有它的道理,不过就是用来看下值和指针的走向每一步的值是不是预想值。如果大家有更实用的用法务必在下方评论交流一下。

8、RPC通信过程中,假设A系统提供了一个方法入参是一个JavaBean,出参也是一个JavaBean。另外两个系统B系统、C系统调用接口,调用方B想让提供方A增加一个返回参数,假设服务提供方A增加了返回参数,请问C系统调用方需要做什么处理?

在这个问题博主没有写在纸上,只写了希望面对面回答,因为这个题写出来太多了,在面试过程中是这样回答的:

当时博主指出了这个题存在的需求实现问题,为什么非要在A系统的接口上直接修改接口入参呢?因为这样修改要动A、B、C、3个系统调用方的代码,这样给整个业务带来了很多不便,为什么不给A服务的接口进行一个方法重载呢,这样既解决的需求问题,也只需要变动A、B两个系统的代码就可以了并不会影响C系统。

当后来他问到可不可以通过底层基础去实现的时候就回答了一个反射机制给怼了回去。

注:当时博主看错了把A系统的返回参数看成入参了,按入参答得,今天这么一看感觉这个题有点问题啊。反参不是只能一个吗?除非去变动数据类型,以集合方式去反参,估计是写错了。

9、了解哪些设计模式,用伪代码实现一个你熟悉的设计模式。

贴链接:https://www.cnblogs.com/geek6/p/3951677.html

这里博主在面试过程中被问到了命令模式和设计模式分几类并说出类中代表

面试:

1、nginx的配置问题,能否配置跳转2级域名。

答:是可以的,然后又问了一下nginx的负载均衡策略,和你们原本配置的nginx的架构是什么样的。

2、redis数据类型及使用场景,和内存分配大小,是否接触过redis集群,redis集群配置和监听机制,持久化策略及区别和应用场景,hash冲突,如何保证redis里面都是热点数据,淘汰策略,常用的命令,和Jedis的常用api,这里会问到如何保证redis多线程下的原子性操作的,如果你使用过lua脚本的话就答一下这个就行了,京东在这redis这方面问的挺深的建议看一下redis详解再配合自己的使用经历去回答。

可以先参考一下这个:https://www.cnblogs.com/linkworld/p/7808818.html

3、讲一下怎么使用分布式锁。这里博主是用回答使用redis来实现分布式锁的

可参考:https://www.cnblogs.com/linjiqin/p/8003838.html

4、是否使用过MQ,这里博主答的是ActiveMQ相关方面的知识,这里问到多是从业务解决方面来问的,你们mq都用来干嘛了,为什么用它,mq的持久化机制,如果消费失败了怎么办,使用mq消费的时候使用事务控制吗?如何使用。

可参考:https://www.cnblogs.com/lknny/p/7488310.html 如果有使用过的同学可以结合你们的业务场景来回答此问题。

5、如果让你自己写一个dubbo协议怎么写?dubbo的使用,失败策略,和使用过程中碰到的问题,这里还提到了了对系统架构的问题,主要是原本如何拆分的服务,每个服务之间的关系这样。

自定义协议可以参考这个:

https://blog.csdn.net/xiaoliuliu2050/article/details/81382111 面试官的意思就是让你说出来这里面的实现逻辑以及你对http协议的了解就行了。

dubbo相关:http://blog.51cto.com/developerycj/2050104

6、你上一个项目中jvm各种内存如何分配的。

在这里spring全家桶和数据库相关知识几乎没在面试中问,他们更多注重这些中间件相关的知识,可能面到这个层级的岗位大家都不注重什么框架了,因为都是底层去实现的,只要基础够扎实大厂指日可待。

最后希望各位同学能学到有用的东西,如果觉得博主有短见的地方同学们可以在下方交流一下。

链接:https://blog.csdn.net/luxiangyan1923/article/details/8657399

如果你也想进入互联网行业,那么在学习之前,不妨先确定一下自己的职业定位吧。看看自己想进入什么样的企业工作,想学什么样的技术,毕竟有了目标,才有前进的动力,一般初进IT行业,想学编程的,达妹都建议你先学Java,毕竟应用最广泛,企业需求大, 好找工作不说,薪资水平也高,BAT都需要。

如何成为一个优秀的Java程序员?

零基础自学Java能不能学会?

转行学Java月入过万要多久?

Java程序员怎样学才能进BAT?

针对这些问题达内北京java培训机构为你准备了Java和大数据学习资料,里面就包涵了0基础学Java视频教程,Java大数据入门教程+书籍,帮助你更好入门,更快拿到高薪。

上一篇:BAT面试题汇总:JVM+Spring+Dubbo+Redis+并发编程
下一篇:19年面试经历分享:打怪升级之路

马上预约七天免费体验课

姓名:

电话:

19年面试经历分享:打怪升级之路

java培训班:京东JAVA面试心得与面试题详解

BAT面试题汇总:JVM+Spring+Dubbo+Redis+并发编程

离职10天,面4家公司,这些面试经验分享给你!

选择城市和中心
江西省

贵州省

广西省

海南省