面试题网址https://www.oschina.net/question/3866162_2280368 如下为原内容,后边整理下答案。 淘宝一面:java
1.简单介绍你目前的工做状况web
2.在这些工做项目当中有没有哪些项目是你主导或者比较了解的,详细说明一下状况,包括技术的设计面试
3.由项目中所使用的框架,介绍一下对公司内部框架的具体实现(我这里主要是亚信的CSF和AICACHE)redis
4.csf是怎么实现的?算法
5.csf是亚信内部的分布式通讯框架,经过zk去管理服务注册和发现,那么,若是当zk集群压力过大,是如何动态扩容和管理的?好比像阿里这样体系的公司, 对于服务注册和发现,能够如何设计,去承载搞负载,高并发的,也就是主机集群并无宕机,可是负载很高,如何作扩展和优化?缓存
6.当前是一个服务提供者,我发布了服务以后向zk注册,此时,服务调用方来调用服务,会首先询问zk我要调用的服务有哪些提供者,这些服务信息是缓存在 服务调用者这一方,仍是每次调用时都问zk要呢?tomcat
7.若是服务调用时,忽然提供服务的主机不可用了,好比由于网络抖动调用不通,此时又是一个什么样的流程呢? 8.假如此时服务不可用的主机短期内又恢复了服务提供能力,又是一个怎样的流程?网络
9.csf服务自己有路由规则的设计吗?双机房,相互容灾,甚至是异地多机房相互容灾,调同机柜,同机房,同城,这些调用顺序是如何设计的?csf服务是如何 作优先选择的?或者说,服务有没有进行过一些分组,相似场景,好比根据用户id分组,50%用户使用A服务提供者,另外50%使用B服务提供者,这样的场 景是如何实现的,有没有这样的一种策略在里面呢?若是有的话,又是如何实现的?并发
10.服务注册与发现以后,是对象的序列化,对序列化这块,在Java里了解有哪些具体的序列化方式呢?彼此之间的优劣是什么样的?在CSF里又是怎么作序列 化的呢?框架
11.既然有第三方的序列化方式,说明java官方提供的序列化方式应该有一些很明显或者很致命的缺点,你能说说是什么吗?
12.假如让你来设计csf框架,刚好你负责序列化这一块,你会怎么来设计高可用,或者选择哪些数据来进行压缩,哪些数据又是不能压缩的,压缩以后确定会 带来一些负面效果,这些负面有哪些,有具体了解过吗? 好比说,原生的bmp图片,我能够压缩成jpg图片,那咱们知道,jgp图片实际上是有损压缩,虽然在 肉眼上其实分辨不出来,那这种压缩它是如何作的呢?那还有一些是无损压缩。你以为protobuf是有损压缩仍是无损压缩呢?异构系统之间又是采起什么样 的序列化方式呢,能采用java原生的序列化机制来实现序列化传输吗?
13.序列化传输以后,就是底层网络传输了,那nio包也出来好久了,能说明一下nio主要是作了什么,为何要设计nio?以及nio里面主要的类和接口吗?这些类 和接口分别是设么做用能详细描述一下吗?nio是基于事件驱动机制来设计的,那nio里哪一个类负责nio的事件驱动呢?
14.能说一下nio和aio的区别吗?有了解过aio吗?aio有哪些主要的类和接口,主要做用是什么,能说明一下吗?
15.对java8,java9,甚至java10有哪些重大版本的更新,有了解吗?(面试官更想问的是java9和java10),java8有哪些至少是包级别的重大的功能更新,有了 解过吗?(我回答了了解ConcurrentHashMap put元素致使同一个hash桶元素多于8个时,会将链表转化为红黑树)
16.能具体说一下红黑树吗?红黑树的具体实现?红黑树具体是如何提升性能的?红黑树如何作到动态调整的?
17.对于列表的流式处理(流处理)和Lamda表达式有接触过吗?
18.对于Garbage First(G1)垃圾回收器有了解过吗?
19.对于其余垃圾回收器有了解过吗?
20.jvm应用启动参数优化,有了解吗?大家这边项目当中有这样操做过吗?好比说,当你发布应用上去,经过监控发现young GC和old gc数据比较异常,有没 有试图调全年轻代和老年代之间的空间比例,以及调整垃圾回收器,以达到性能调优的目的?
21.对类加载器有了解吗?什么样的状况下须要打破双亲委派模型?打破的方式是什么样子的?你能描述一下吗?举个场景,你如今有一个web应用程序,这个 war包里有a模块和b模块,a模块依赖一个jar包的1.0版本,b模块依赖这个jar包的2.0版本,这个jar包的1.0版本和2.0版本互不兼容,由于a,b模块又在一个 war包里面,那就意味着这个jar包的1.0和2.0所有在这个应用程序内部,tomcat启动的时候对jar包里的同一个类只会加载一次,那么如今状况是,要么a模 块起不来不能用了,要么b模块起不来不能用了,若是你是这个应用的owner,你怎么办?模块代码自己很难改,或者说比较复杂,a模块没法升级jar包,b 模块没法降级jar包。
22.据说过osji吗?你知道osgi主要功能是什么吗?它大概的一个实现原理又是什么样子?
23.前面都是我在问,你在回答,比较被动,你能够说说你对那些技术或者开源框架有比较深刻的了解吗?
24.选举算法,能具体描述一下吗?怎么避免死循环的选举方式呢?好比说,有三台主机1,2,3,1主机选举本身并向23发送选举消息,2和3不一样意,而后2主机选 举本身而后也向1和3主机发送选举消息,1和3主机也不一样意,3主机也如法炮制,这个怎么避免呢?要么所有选本身,要么所有选别人,你们都是一条,怎 么办呢?
25.能描述一下paxos算法的具体实现方式吗?这个算法里有哪些角色?
26.能描述一下raft算法,它里面哪些角色和它整个选举过程是怎么样的吗?具体是如何选举的?好比仍是有1,2,3三台主机,1,2,3都分别发出选举信息,要求 选举本身,过程僵住了怎么办?paxos和raft是不同的处理,那raft是怎么处理的?
27.redis是如何解决热点问题的呢?dedis集群是怎么实现的呢,能跟我描述一下吗?每台redis从机上都是完整的数据吗,若是这样,数据是否是太过冗余了? 那若是是这样,应用在访问缓存的时候,是随机挑选一台redis机器吗?那怎么保证不会随机挑选到同一台机器上去呢?redis数据切片这个概念有了解吗?