Microwave 2019-11-09
之前面了腾讯的提前批,不过没走流程。同期还面了阿里的两轮面试,被告知不走流程就不能面了,所以也没面完。
后来走了京东这边的流程。前几天刚刚面完HR。
正好今天分享一下面经,大家可以多交流交流哈。
首先确认对京东的意向度(如果异地更会考虑对工作地点(北京)的意向度!京东很看重这个);其次面试官一般会针对您所做过的项目来做具体技术的交流,会比较关注个人对项目细节是不是掌握到位,主要考察Java的技术基础和原理,比如Spring框架以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等,重点考察是不是有比较钻研技术和技术上的亮点【不一定每个面都很厉害但一定要有亮点】;
貌似并发包里确实没有其他list啊。
还问了concurrenthashmap1.8的改动。
答了TCP连接复用,加入ssl,以及压缩请求头。
其中哪个更新比较有意义,为什么。我说的是压缩请求头,这样可以优化HTTP服务的性能。
说下BIO和NIO的区别把。
我说了BIO的阻塞用法,以及NIO的IO多路复用用法,说了selector,seletedkey,channel等类的使用流程,以及单线程处理连接,多线程处理IO请求的好处。
讲了netty,写过服务端和客户端的demo,没有在生产中实践。
channelhandler负责请求就绪时的io响应。
bytebuf支持零拷贝,通过逻辑buff合并实际buff。
eventloop线程组负责实现线程池,任务队列里就是io请求任务,类似线程池调度执行。
acceptor接收线程负责接收tcp请求,并且注册任务到队列里。
其实就是搜索引擎的基础索引,根据关键字到文档的映射关系建立索引,中文关键字可以使用中文分词,查询时通过关键字来定位索引,并且进行排序后得到文档结果集。
然后面试官说讲一下数据库把,说下sql优化的方式
我说的是MySQL,先讲了一下sql使用索引的优化,然后基于索引说了几条优化方案。
说了联合索引的前缀匹配,跳跃索引,聚合函数,判空和<>这些情况。
了解过,但是讲不清楚。
paxos:多个proposer发请提议(每个提议有id+value),acceptor接受最新id的提议并把之前保留的提议返回。当超过半数的accetor返回某个提议时,此时要求value修改为propeser历史上最大值,propeser认为可以接受该提议,于是广播给每个acceptor,acceptor发现该提议和自己保存的一致,于是接受该提议并且learner同步该提议。
raft:raft要求每个节点有一个选主的时间间隔,每过一个时间间隔向master发送心跳包,当心跳失败,该节点重新发起选主,当过半节点响应时则该节点当选主机,广播状态,然后以后继续下一轮选主。
说了mycat实现分表分库,消息队列kafka和rabbitmq等。
本文限于篇,无法把答案也完整写出(也影响排版);其实在这次面试回来后,我就认真的把这份面试题整理了一下;虽说花了不少时间,但是我们程序员的口号是啥——传播知识,分享快乐!把这份面试题分享出来是为了帮助那些正在找工作或者即将找工作的朋友,多一份面试题就多一分面过的机会,何乐而不为呢!
需要面试题的朋友,愿意给个关注就关注一下,不愿意给关注的就帮忙转发一下,你都领取到了,为什么不分享一下呢!
资料领取方式:加入Java技术交流群963944895
,点击加入群聊,私信管理员即可免费领取
最后,学习没有捷径,能力增强自信,乐观有益人生! 祝大家学习愉快!