2018最新蚂蚁金服面试题:Docker+秒杀设计+RocketMQ+亿级数据设计

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 一面:1 自我介绍2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。

一面:

1 自我介绍

2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。

3 hashmap的实现,以及hashmap扩容底层实现。

4 NIO了解么,讲一下和BIO的区别,AIO呢。阻塞,非阻塞,异步。具体。

5 你说了解分布式服务,那么你怎么理解分布式服务。

6 你说了解Tomcat的基本原理,了解的是哪一部分,基本架构,connector和container

7 你在项目中怎么用到并发的。

8 docker和虚拟机讲一下。

9 高并发情况下,如何使用线程池

10 并发juc了解么,有哪些线程安全的list。

二面

1 项目

2 说一下Spring源码把,它的架构,流程。

3 Spring的bean如果要在实例化过程中修改其某一个成员变量,应该怎么做呢。不通过构造方法,并且AOP也并不能实现。

4 Tomcat的类加载器了解么,回答不了解只了解Java的类加载器。

5 自定义类加载器怎么实现,其中哪个方法走双亲委派模型,哪个不走,不走的话怎么加载类(实现findclass方法,一般用defineclass加载外部类),如何才能不走双亲委派。(重写loadclass方法)

6 布隆过滤器了解么,讲了ip地址过滤的布隆过滤器实现。

7 听说你项目用过docker,讲一下docker的实现原理,说了虚拟机一般要对内核进行虚拟化,docker则用cgroup和namespace分别进行硬件和命名空间的隔离。

8 dubbo的基本架构,几个组件说一下

9 dubbo的负载均衡怎么做,讲一下具体代码实现。

10 参与项目的挑战在哪里,有哪些收获。

三面

主要还是问中间件

1 阿里的dubbo,rocketmq的事务消息的架构设计

2 mycat实现分表分库方案实现

3 消息队列kafka和rabbitmq等

4 分库分表,分片规则hash和取余数。

5 数据库万级变成亿级,怎么处理

6 双11秒杀的设计思路

以上就是最新蚂蚁金服中间件团队面试题,以下是总结的阿里等java必考题范围和答案。

阿里技术面试回顾:

1.Java基础还是需要掌握牢固,重点会问HashMap等集合类,以及多线程、线程池等。

2.Java AIO BIO NIO等

3.Redis的使用以及最常问的一致hash算法,以及消息队列的异步场景等。

4.各种平时经常使用的开源框架Spring等,从原理到技术细节。

5.高并发场景的技术方案。

6.以及微服务等架构设计。

这些技术范围的面试题目还是需要平时多学习和积累,提前准备充分,面试通过率就会高很多,最后总结了部分阿里Java必考题目用于参考~

【阿里巴巴面试题目含答案】

1,mysql的三大引擎是啥?

mysql常用的引擎有InnoDB,MyISAM,Memory,默认是InnoDB

InnoDB:磁盘表,支持事务,支持行级锁,B+Tree索引

ps:优点: 具有良好的ACID特性。适用于高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。

缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。

mysql的4大特性+4种隔离级别:

MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引

ps: 优点:占用空间小,处理速度快(相对InnoDB来说)

缺点:不支持事务的完整性和并发性

MEMORY(Heap):内存表,不支持事务,表级锁,Hash索引,不支持Blob,Text大类型

ps: 优点:速度要求快的,临时数据

缺点:丢失以后,对项目整体没有或者负面影响不大的时候。

2,redis的hash算法用的是啥?

redis应该是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率优点,google改进的版本cityhash也是redis中用到的哈希算法。

现有的主流的大数据系统都是用的 MurmurHash本身或者改进

3,nosql为啥比sql快?

Nosql是非关系型数据库,因为不需要满足关系数据库数据一致性等复杂特性所以速度快;

sql是关系型数据库,功能强大,但是效率上有瓶颈

4,什么是索引为啥nosql没索引?nosql有索引滴

索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。

聚簇索引:有主键时,根据主键创建聚簇索引;没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引;如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引

非聚簇索引:非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引

5,B+树和B树区别?

B树的非叶子节点存储实际记录的指针,而B+树的叶子节点存储实际记录的指针

B+树的叶子节点通过指针连起来了, 适合扫描区间和顺序查找。

了解最新的学习动态;了解最新的阿里、京东招聘资讯;获取更多的面试资料以及阿里架构师精讲资料及视频资源,欢迎加入Java进阶之路:878249276

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
消息中间件 Java 测试技术
消息队列 MQ使用问题之数据流出规则是否支持平台的云RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
1月前
|
存储 数据管理 应用服务中间件
Docker的数据管理实战篇
关于Docker数据管理实战的教程,涵盖了Docker数据卷的使用、特点、场景以及数据卷容器的概念和应用。
49 13
Docker的数据管理实战篇
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
Java
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?
|
2月前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
2月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
|
2月前
|
消息中间件 缓存 负载均衡
复盘女朋友面试4个月的RocketMQ面试题
这篇文章复盘了面试中关于RocketMQ的高频题目,包括架构组成、使用姿势、功能原理及高级特性,并强调了理解这些实现机制对于面试成功的重要性。
复盘女朋友面试4个月的RocketMQ面试题
|
3月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
280 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
3月前
|
canal 缓存 NoSQL
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;先删除缓存还是先修改数据库,双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
|
2月前
|
存储 负载均衡 算法
[go 面试] 一致性哈希:数据分片与负载均衡的黄金法则
[go 面试] 一致性哈希:数据分片与负载均衡的黄金法则
下一篇
无影云桌面