阿里UC面试题

分布式消息队列

  • 1,为什么使用消息队列啊?消息队列有什么优点和缺点啊?
    答案:解耦、异步、削峰、写日志(kafka)
  • 2,如何保证消息队列的高可用啊?如何保证消息不被重复消费啊?
  • 3, kafka,act ivemq, rabbitmq, rocketmq都有什么优点,缺点啊???
  • 4,如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路

分布式搜索引擎

  • 1,es的工作过程实现是如何的?如何实现分布式的啊
  • 2, es在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
  • 3, es的查询是一个怎么的工作过程?底层的lucence介绍一下呗?倒排索引知道吗?es和mongdb什么区别啊?都在什么场景下使用啊?

高并发高可用架构设计

  • 1,如何设计一个高并发高可用系统?
  • 2,如何限流?工程中怎么做的,说一下具体实现?
    参考:令牌桶算法、漏桶算法
  • 3,缓存如何使用的?缓存使用不当会造成什么后果?
  • 4,如何熔断啊?熔断框架都有哪些?具体实现原理知道吗?
  • 5,如何降级?如何进行系统拆分,如何数据库拆分???

通信协议

  • 1,说一下TCP/IP四层?

  • 2, http的工作流程??? http1.0 http1.1 http2.0具体哪些区别啊?
    工作流程:
    一次HTTP操作称为一个事务,其工作整个过程如下:
    1 ) 、地址解析,

    如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm

    从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
    协议名:http
    主机名:localhost.com
    端口:8080
    对象路径:/index.htm
    在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。

    2)、封装HTTP请求数据包
    把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

    3)封装成TCP包,建立TCP连接(TCP的三次握手)
    在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口
    4)客户机发送请求命令
    建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
    5)服务器响应
    服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
    实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
    6)服务器关闭TCP连接
    一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
    Connection:keep-alive
    TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
    http/1.0:增加了很多命令、增加了status code和header、多字符集支持,多部分发送,拥有了权限、缓存等功能
    http/1.1:支持持久连接、pipeline、增加host和其他一些命令、(我们现在用的大部分是http1.1)
    http2:(信道复用)、所有数据以二进制方式传输、同一个连接里面发送多个请求不在需要按照顺序来
    、头信息压缩以及推送等提高效率的功能

  • 3, TCP三次握手,四层分手的工作流程?画一下流程图?为什么不是四次五次或者二次啊?

  • 4,画一下https的工作流程?具体如何实现啊?如何防止被抓包啊??

算法

  • 1,比较简单,我一个文件,有45亿个阿拉伯数字,如何进行去重啊?如何找出最大的那个数啊?

数据结构

  • 1,二叉树和红黑树等。

数据库

  • 1,使用mysql索引都有哪些原则??索引什么数据结构?? B+tree和B tree什么区别??
  • 2,mysqL有哪些存储引擎啊?都有啥区别??要详细!!!
  • 3,设计高并发系统数据库层面该怎么设计???数据库锁有哪些类型?如何实现呀?4,数据库事务有哪些??
  • 分库分表

  • 1,如何设计可以动态扩容缩容的分库分表方案???
  • 2,用过哪些分库分表中间件,有啥优点和缺点,讲一下你了解的分库分表中间件的底层实现原理?
  • 3,我现在有一个未分库分表的系统,以后系统需分库分表,如何设计,让未分库分表的系统动态切换到分库分表的系统上???
  • 4,分布式事务知道吗?你们怎么解决的? TCC?那若出现网络原因,网络连不通怎么办啊???
  • 5,为什么要分库分表啊???
  • 6,分布式寻址方式都有哪些算法?知道一致性hash吗? 手写一下java实现代码? ?你若userId取摸分片,那我要查一段连续时间里的数据怎么办???
  • 7,如何解决分库分表主键问题?有什么实现方案??

分布式缓存

  • 1, redis和memcheched什么区别?为什么单线程的redis比多线程的memched效率要高啊?
  • 2, redis有什么数据类型?都在哪些场景下使用啊?
  • 3, reids的主从复制是怎么实现的? redis的集群模式是如何实现的呢? redis的key是如何寻址的啊?
  • 4,使用redis如何设计分布式锁?使用zk可以吗?如何实现啊?这两种哪个效率更高啊??
  • 5,知道redis的持久化吗?都有什么缺点优点啊??具体底层实现呢?
  • 6, redis过期策略都有哪些?LRU?写-下java版本的代码吧??

分布式服务框架

  • 1,说一下dubbo的实现过程?注册中心挂了可以继续通信吗??
  • 2, zk原理知道吗? zk都可以干什么?Paxos算法知道吗?说一下原理和实现??
  • 3, dubbo支持哪些序列化协议?hess ian?说一下hessian的数据结构?PB知道吗?为啥PB效率是最高的啊??
  • 4,知道netty吗? netty可以干嘛呀NIO, BIO,AIO都是什么啊?有什么区别啊?
  • 5, dubbo复制均衡策略和高可用策略都有哪些啊?动态代理策略呢?
  • 6,为什么要进行系统拆分啊?拆分不用dubbo可以吗?dubbo和thrift什么区别啊?

corejava

  • 1, hashcode相等两个类一定相等吗?equals呢? ?相反呢?
  • 2.介绍一下集合框架?
  • 3, hashmap hastable 底层实现什么区别?hashtable和concur renthashtable呢?
  • 4, hashmap和treemap什么区别?低层数据结构是什么?
  • 5,线程池用过吗?都有什么参数?底层如何实现的??
  • 6, sychnized和Lock什么区别??
    sychnize什么情况情况是对象锁?什么时候是全局锁?为什么??
  • 7, ThreadLocal是什么?底层如何实现?写一个例子呗?
  • 8,volitile的工作原理??
  • 9, cas知道吗?如何实现的?
  • 10.请用至少四种写法写一个单例模式呗???

JVM

  • 1,请介绍一下JVM内存模型??用过什么垃圾回收器?都说说呗?
  • 2,线上发送频繁full gc如何处理?? CPU 使用率过高怎么办?如何定位问题?如何解决?说一下解决思路和处理方法。
  • 3,知道字节码吗?字节码都有哪些?
    Integer x=5,int y =5, 比较x==y都经过哪些步骤?
  • 4,讲讲类加载机制呗?都有哪些类加载器,这些类加载器都加载哪些文件?手写一下类加载Demo
  • 5,知道osgi吗?他是如何实现的???
  • 6,请问你做过哪些JVM优化?使用什么方法?达到什么效果???
  • 7, class . forName(“java. lang.String”)和String.class getClassLoader(). loadClass(“java. lang.String”)什么区别啊??

Spring

  • 1, spring都有哪些机制啊?AOP底层如何实现的啊?I0C呢??
  • 2, cglib知道吗?他和jdk动态代理什么区别?手写一个jdk动态代理呗?

猜你喜欢

转载自blog.csdn.net/weixin_44578690/article/details/86607931