京东后端Java高级架构师面经+面试题:Spring+多线程+NIO+MySQL

之前面了腾讯的提前批,不过没走流程。同期还面了阿里的两轮面试,被告知不走流程就不能面了,所以也没面完。

后来走了京东这边的流程。前几天刚刚面完HR。

正好今天分享一下面经,大家可以多交流交流哈。

京东面经

  • 第一轮:电话初面
  • 第二轮:技术面谈
  • 第三轮:高管复试
  • 第四轮:HR最后确认

第一轮电话初面:

首先确认对京东的意向度(如果异地更会考虑对工作地点(北京)的意向度!京东很看重这个);其次面试官一般会针对您所做过的项目来做具体技术的交流,会比较关注个人对项目细节是不是掌握到位,主要考察Java的技术基础和原理,比如Spring框架以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等,重点考察是不是有比较钻研技术和技术上的亮点【不一定每个面都很厉害但一定要有亮点】;

第二轮技术面试:

  1. Java中的多线程了解么,线程池的增长策略和拒绝策略了解么,说一下。
  2. 讲一下线程增加的过程和拒绝策略的执行。
  3. 讲了一下fixthreadpool的增长策略,然后几种拒绝策略。
  4. 高并发情况下,如何使用线程池,用哪个,问了一下线程结束要多久,是否在下一个线程结束前完成(我想的是cachethreadpool,其实思路错了)。
  5. 表示并发量比较大,所以我说可以考虑并发量是否大于队列长度加上最大线程数量和,如果不超过的话可以是用fixthreadpool。
  6. 并发juc了解么,有哪些线程安全的list。说了个copyonwritelist,想了半天说不出第二个了。尴尬,那就vector把,不是juc里的。

貌似并发包里确实没有其他list啊。

还问了concurrenthashmap1.8的改动。

  1. HTTP协议了解么,和tcp有什么区别。
  2. http1.0和2.0的区别。

答了TCP连接复用,加入ssl,以及压缩请求头。

其中哪个更新比较有意义,为什么。我说的是压缩请求头,这样可以优化HTTP服务的性能。

  1. Java的网络编程,比如NIO和Socket了解么。说下BIO和NIO的区别把。

说下BIO和NIO的区别把。

我说了BIO的阻塞用法,以及NIO的IO多路复用用法,说了selector,seletedkey,channel等类的使用流程,以及单线程处理连接,多线程处理IO请求的好处。

  1. 说一下NIO的类库或框架

讲了netty,写过服务端和客户端的demo,没有在生产中实践。

channelhandler负责请求就绪时的io响应。
bytebuf支持零拷贝,通过逻辑buff合并实际buff。
eventloop线程组负责实现线程池,任务队列里就是io请求任务,类似线程池调度执行。
acceptor接收线程负责接收tcp请求,并且注册任务到队列里。

  1. 倒排索引了解么,我说不了解。

其实就是搜索引擎的基础索引,根据关键字到文档的映射关系建立索引,中文关键字可以使用中文分词,查询时通过关键字来定位索引,并且进行排序后得到文档结果集。

然后面试官说讲一下数据库把,说下sql优化的方式

我说的是MySQL,先讲了一下sql使用索引的优化,然后基于索引说了几条优化方案。

  1. 索引什么时候会失效变成全表扫描

说了联合索引的前缀匹配,跳跃索引,聚合函数,判空和<>这些情况。

  1. 分布式的paxos和raft算法了解么

了解过,但是讲不清楚。

paxos:多个proposer发请提议(每个提议有id+value),acceptor接受最新id的提议并把之前保留的提议返回。当超过半数的accetor返回某个提议时,此时要求value修改为propeser历史上最大值,propeser认为可以接受该提议,于是广播给每个acceptor,acceptor发现该提议和自己保存的一致,于是接受该提议并且learner同步该提议。

raft:raft要求每个节点有一个选主的时间间隔,每过一个时间间隔向master发送心跳包,当心跳失败,该节点重新发起选主,当过半节点响应时则该节点当选主机,广播状态,然后以后继续下一轮选主。

  1. 中间件知道哪些,阿里的dubbo,rocketmq的事务消息,问了TCC回答说这个之前没看明白。

说了mycat实现分表分库,消息队列kafka和rabbitmq等。

  1. 平时看什么书,怎么学习的。还跟我说他们部门3个华科的,校友多多。
  2. Spring和Springmvc讲一下。讲了Spring的ioc和aop,Springmvc的基本架构,请求流程。

第三轮高管复试

  1. 自我介绍
  2. 项目,收获
  3. Linux了解哪些,基础命令和知识。问我proc文件系统了解么,答不了解。
  4. TCP和UDP的核心区别在哪,讲了滑动窗口保证可靠有序传输,UDP不可靠。TCP需要连接而UDP不需要。
  5. TCP的四次挥手,time wait状态有什么意义。
  6. 说完这个他问我有什么想问他的了。
  7. 我问他为什么隔了这么久才面试,而且之前两面都只是初试,然后他说最近他在休假,所以就...害我担心了好久。他说接下来等HR面就行了。

第四轮HR面

  1. 兴趣爱好
  2. 三年到五年的职业规划
  3. 意向公司和城市
  4. 实习经历和收获
  5. 实习中最大的困难
  6. 为什么换公司,为什么拒绝菜鸟实习offer
  7. 你的缺点和优点
  8. 你觉得你比其他人优秀的地方说三个
  9. 为什么想来我们部门

写在最后

由于篇幅有限,部分答案就不做全部展示了,这些面试题的答案我已经整理成PDF文档了,同时也整理了一些问题详解;虽然说花了一点时间,但是我也愿意把它免费分享出来,希望能够帮助到有需要的Java工程师朋友,也省的大家再去网上花时间找资料。

↓ 后台回复【面试】

原文地址:https://blog.51cto.com/14409778/2418716

时间: 2024-10-15 02:19:06

京东后端Java高级架构师面经+面试题:Spring+多线程+NIO+MySQL的相关文章

怎么成为java高级架构师?图灵学院总结的java架构师学习路线

怎么成为一个java高级架构师呢?相信这是很多java从业者,又或者说是coder/码农们比较感兴趣的问题,要回答这个问题,首先需要明白的是java架构师是什么?简单点说,架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作.主要着眼于系统的"技术实现",工作内容就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节.扫清主要难点的技术人员,并且需要有良好的组织管理能力.因此应该是特定的开发平台.语言.工具的大师,对常见应用场景能马上给出最

点燃java高级架构师的成长之路!

作者:java高级进阶链接:https://www.nowcoder.com/discuss/72575来源:牛客网 金三银四跳槽旺季,每个人都想有一份高薪资,环境好,且稳定的工作,现在已经是四月份了,跳槽旺季还剩最后一个月,你们都准备好了么?你们吃饭的技术过硬么?你们准备好进名企了么?最主要的是,你们是一名资深架构师么?想成为架构师么?还是继续每天坚持加班的桥写代码??????这些问题,只有你们能明白且自己解决. 现在正是需要我们认真考虑的时候,要如何提高我们的编程能力,要怎样努力才可以成为一

好好讲一讲,到底什么是Java高级架构师!

一. 什么是架构师 曾经有这么个段子: 甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我. 乙:羡慕ing,都什么人来了? 甲:CEO.COO.CTO.All of 程序员,还有会计.司机都来了. 乙:哇,他们太重视你了,人才啊,这么多人迎接你! 甲:没有啊,就一个人! 乙:靠,#%¥$%... 很多的创业公司,一人身兼数职的情形还是很常见的.至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝.骑独轮车总会有失足的时候,结果有一次

优效学院JAVA高级架构师视频教程

课程目录: 01-项目简介Springboot简介入门配置项目准备 02-MariaDB主从安装SpringBoot整合MyBatis配置 03-MyBatis主从实现代码读写分离应用以及实现 04-RocketMQ入门及其使用(一) 05-RocketMQ入门及其使用(二) 06-RocketMQ与项目整合 07-消息可靠性投递和幂等设计与实现 08-ZooKeeper学习使用 09-Zookeeper整合RocketMQ代码实现 10-生产.消费平台消息业务场景讲解(一) 11-生产.消费平

Java高级架构师(一)第28节:Index、商品详细页和购物车

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <

Java高级架构师(一)第13节:Spring MVC实现Web层开发

package com.sishuok.architecture1.customermgr.web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.Mo

Java高级架构师(一)第20节:X-gen生成需要的Action

package cn.javass.themes.smvcsm.actions; import cn.javass.xgen.genconf.vo.ModuleConfModel; import cn.javass.xgen.geninvocation.BaseGenAction; import cn.javass.xgen.geninvocation.decorator.GenComponent; public class GenAddPageAction extends BaseGenAct

Java高级架构师(一)第24节:加入ehcache,把工程加入到Git

ehcache的maven配置: <!-- ehcache的jar --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.8.0</version> </dependency> ehcache的配置文件: <?xml version="1.0&quo

2017最新技术java高级架构、千万高并发、分布式集群、架构师入门到精通视频教程

* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat