面试京东Java架构师,竟然被问这些题,学到了!

栏目: 数据库 · 发布时间: 7年前

内容简介:其实收到jd的面试邀请的时候,我真心有点小激动。因为在地理位置上,jd应该是最合适我也是最想去的。但是我在看到方向的时候其实心里有很多的问题,也做好了被拒的准备。因为是开车去,所以到亦庄的时候第一个问题是找车位,但是京东周边的马路上是基本不可能找到的了,还看到一个司机因为倒车慢了一点,被另外的小车司机迅速停入,吵吵了半天。最后在一个角落找到一个停车场,需要预约码才能停,门口没有任何标志,还是问了门卫大叔才知道一般外来的都会停在这。(jd也是够了。。藏得这么隐蔽。还有马路边都贴条)我是在京东A座面试,先用身份

前言

其实收到jd的面试邀请的时候,我真心有点小激动。因为在地理位置上,jd应该是最合适我也是最想去的。但是我在看到方向的时候其实心里有很多的问题,也做好了被拒的准备。

面试过程及感受

因为是开车去,所以到亦庄的时候第一个问题是找车位,但是京东周边的马路上是基本不可能找到的了,还看到一个司机因为倒车慢了一点,被另外的小车司机迅速停入,吵吵了半天。最后在一个角落找到一个停车场,需要预约码才能停,门口没有任何标志,还是问了门卫大叔才知道一般外来的都会停在这。(jd也是够了。。藏得这么隐蔽。还有马路边都贴条)

我是在京东A座面试,先用身份证和预约码换了入门的条,我以为我可以很快的上楼,但是我发现我真的天真了,mmp,你们想想一下12个电梯,在饭点(我预约的是下午两点)我从1点20开始等等到1点40竟没有挤上去。(呵呵脸),我面试的是在12楼,一咬牙爬了上去。(爬了10分钟,一身汗,在厕所平静了半天,期间厕所大爷跟我一起吐槽了电梯的难坐)

填了表格之后,我给hr小姐姐(我发现hr似乎都是小姐姐)打了电话,两分钟之后,hr小姐姐来了给我领到一个位置,我再等面试官的时候又复习了一下我之前的项目,和一些之前面试遇到的问题。

其实在 Java 上层的开发来说我对自己是有信心的。(天真脸)

不多是第一面是两个人一起来的(一个姐姐,一个大叔)。基本上都是姐姐在问,问的大多是原理上的问题。(当然我最大的问题我又发现了一个。。就是手写代码的能力太差。。。)让我手写了单例和一些方式方法。我在这里承认我自己对于代码的熟悉程度即使写了3年还是很差。

不是说对方法的不了解,是说对于具体功能细节上的了解不够。

而界面上做的工作太多也是问题,对于界面我可以写很多很多,但是对于底层就基本上没有什么了解了。

基本了解和介绍情况后,他们让我等了一下,另外一个人很好的小哥过来2面。小哥也是基本了解了一下,说了一些,让我手写了一个方法。(虽然我能知道怎么做。。但是真的实现还是需要很扎实很细的代码思想。。)最后小哥跟我聊了我现在需要了解的,其实三年的经验对于一个人来说还是太少,可以把表层了解的很多,而接下来需要做的就是深入下去。

他也给我简单介绍了一下我目前需要学习的主要内容,和可以努力的方向和方法。我觉得这才是这次京东面试的最大收获。

真题还原

Q1: HashMap的原理, 以及HashMap如何扩充bucket的大小

A1: 原理答上来了,如何扩容瞎答的,之前不知道扩容之后已经哈希的MapEntry如何处理,当时就说扩容后已经哈希的全部再计算并分配到新的桶里。

Q2: 是否对多线程有了解

A2: 了解的不深,被项目岔开没继续问

Q3: 项目中的Queue,单机容量达到上限如何集群扩展

A3: 懵逼,然后参考Hadoop的架构,把Queue分散到不同的slave server中,并用一个”负载均衡服务器” master做反向代理,master存有job到slaves的映射表,接收broswer的Job请求,把Job分派给不同的slave server。

Q4: 知道哪些负载均衡算法

A4: 不知道

Q5: Myisam, Innodb区别

A5: 当时的回答: 1、Innodb支持事务 2、Myisam支持表锁,Innodb支持行锁 3、Myisam数据索引一起存储,Innodb数据索引分开存储

Q6: Mysql索引的分类(Btree, hash),各自使用什么情况

A6: 没答好,当时回答说 Mysql 只有内存表支持hash索引(似乎并不是),面试官表示没听说Mysql内存表

Q7: Btree的查找原理:

A7: 没答上来,只大概叙述了一下B+tree的结构,每个子节点有一个指针指向兄弟节点。

Q8: Spring的原理(AOP IOC), AOP的原理

A8: AOP实现原理是代理,给他讲了一下代理模式,然后嘴贱的说了一句AOP是基于cglib的动态代理实现的。

Q9: cglib是动态代理吗?简要叙述cglib的原理

A9: 瞎答:cglib基于ASM字节码生成框架,在运行时生成代理类的字节码文件并动态加载

Q10: cglib和jdk代理的区别?Jdk是不是动态代理?动态代理和静态代理的区别

A10: jdk需要接口,cglib不需要。Jdk是静态代理,根据反射来实现。动态代理是代码编译前代理类不存在,在运行时生成。(面试官说答错了,cglib是静态代理,jdk是动态代理,cglib在框架启动前已经生成好了所有的代理类。感觉他说的也不全对)

Q11:简述三次握手,如果c端发起握手请求,s端无法立刻建立连接应该回应什么?

A11: tcp握手画出来了,第二个问题没答上来

读者福利:

分享免费学习资料

针对于Java程序员,我这边准备免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

资料领取方式:加入Java技术交流群 963944895点击加入群聊 ,私信管理员即可免费领取


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Computer Age Statistical Inference

Computer Age Statistical Inference

Bradley Efron、Trevor Hastie / Cambridge University Press / 2016-7-21 / USD 74.99

The twenty-first century has seen a breathtaking expansion of statistical methodology, both in scope and in influence. 'Big data', 'data science', and 'machine learning' have become familiar terms in ......一起来看看 《Computer Age Statistical Inference》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换