发现一套面试题--很震撼,整理下答案吧,网上搜集的答案,自己不会啊

这一生的挚爱 提交于 2020-03-01 10:03:20

面试题网址https://www.oschina.net/question/3866162_2280368 以下为原内容,后边整理下答案。 淘宝一面:

1.简单介绍你目前的工作情况

2.在这些工作项目当中有没有哪些项目是你主导或者比较了解的,详细说明一下情况,包括技术的设计

3.由项目中所使用的框架,介绍一下对公司内部框架的具体实现(我这里主要是亚信的CSF和AICACHE)

4.csf是怎么实现的?

5.csf是亚信内部的分布式通信框架,通过zk去管理服务注册和发现,那么,如果当zk集群压力过大,是如何动态扩容和管理的?比如像阿里这样体系的公司, 对于服务注册和发现,可以如何设计,去承载搞负载,高并发的,也就是主机集群并没有宕机,但是负载很高,如何做扩展和优化?

6.当前是一个服务提供者,我发布了服务之后向zk注册,此时,服务调用方来调用服务,会首先询问zk我要调用的服务有哪些提供者,这些服务信息是缓存在 服务调用者这一方,还是每次调用时都问zk要呢?

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数据切片这个概念有了解吗?

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!