蚂蚁金服中间件,一大波面经来袭!助Java程序员一臂之力

简介: 蚂蚁金服中间件一号机一面:自我介绍1、Java中的多线程了解么,线程池的增长策略和拒绝策略了解么,说一下。2、讲一下线程增加的过程和拒绝策略的执行。

蚂蚁金服中间件一号机

一面:

自我介绍

1、Java中的多线程了解么,线程池的增长策略和拒绝策略了解么,说一下。

2、讲一下线程增加的过程和拒绝策略的执行。

3、讲了一下fixthreadpool的增长策略,然后几种拒绝策略。

4、高并发情况下,如何使用线程池,用哪个,问了一下线程结束要多久,是否在下一个线程结束前完成(我想的是cachethreadpool,其实思路错了)。

5、表示并发量比较大,所以我说可以考虑并发量是否大于队列长度加上最大线程数量和,如果不超过的话可以是用fixthreadpool。

6、并发juc了解么,有哪些线程安全的list。说了个copyonwritelist,想了半天说不出第二个了。尴尬,那就vector把,不是juc里的。

貌似并发包里确实没有其他list啊。

还问了concurrenthashmap1.8的改动。

7、HTTP协议了解么,和tcp有什么区别。

8、http1.0和2.0的区别。

答了TCP连接复用,加入ssl,以及压缩请求头。

其中哪个更新比较有意义,为什么。我说的是压缩请求头,这样可以优化HTTP服务的性能。

9、Java的网络编程,比如NIO和Socket了解么。

说下BIO和NIO的区别把。

我说了BIO的阻塞用法,以及NIO的IO多路复用用法,说了selector,seletedkey,channel等类的使用流程,以及单线程处理连接,多线程处理IO请求的好处。

10、说一下NIO的类库或框架

讲了netty,写过服务端和客户端的demo,没有在生产中实践。

channelhandler负责请求就绪时的io响应。

bytebuf支持零拷贝,通过逻辑buff合并实际buff。

eventloop线程组负责实现线程池,任务队列里就是io请求任务,类似线程池调度执行。

acceptor接收线程负责接收tcp请求,并且注册任务到队列里。

11、倒排索引了解么,我说不了解。

其实就是搜索引擎的基础索引,根据关键字到文档的映射关系建立索引,中文关键字可以使用中文分词,查询时通过关键字来定位索引,并且进行排序后得到文档结果集。

然后面试官说讲一下数据库把,说下sql优化的方式

我说的是MySQL,先讲了一下sql使用索引的优化,然后基于索引说了几条优化方案。

12、索引什么时候会失效变成全表扫描

说了联合索引的前缀匹配,跳跃索引,聚合函数,判空和<>这些情况。

13、分布式的paxos和raft算法了解么

了解过,但是讲不清楚。

paxos:多个proposer发请提议(每个提议有id+value),acceptor接受最新id的提议并把之前保留的提议返回。当超过半数的accetor返回某个提议时,此时要求value修改为propeser历史上最大值,propeser认为可以接受该提议,于是广播给每个acceptor,acceptor发现该提议和自己保存的一致,于是接受该提议并且learner同步该提议。

raft:raft要求每个节点有一个选主的时间间隔,每过一个时间间隔向master发送心跳包,当心跳失败,该节点重新发起选主,当过半节点响应时则该节点当选主机,广播状态,然后以后继续下一轮选主。

14、中间件知道哪些,阿里的dubbo,rocketmq的事务消息,问了TCC回答说这个之前没看明白。

说了mycat实现分表分库,消息队列kafka和rabbitmq等。

15、平时看什么书,怎么学习的。还跟我说他们部门3个华科的,校友多多。

16、Spring和Springmvc讲一下。讲了Spring的ioc和aop,Springmvc的基本架构,请求流程。

蚂蚁金服中间件二号机

一面:

1、 自我介绍

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

3、 hashmap的实现。

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

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

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

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

8、 docker和虚拟机讲一下。

9、 有啥想问的

蚂蚁金服中间件二面

1、 项目

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

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

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

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

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

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

8、 项目中遇到的最大挑战。

9、 项目中学到最多的东西

10、 有什么想问

蚂蚁财富事业部

一面:

1、 亿级ip地址过滤

2、 排序算法和适用场景

3、 数据库的事务有什么用

4、 数据库的悲观锁和乐观锁

5、 数据的索引有什么用,怎么实现

6、 联合索引的匹配原则

7、 数据库万级变成亿级,怎么处理。分库分表,分片规则hash和取余数。使用mycat中间件实现。

8、 redis这种nosql和mysql有什么区别,讲了一遍redis

9、 Spring了解不,用到了哪些设计模式,说了四个,单例,工厂,代理,观察者,模板其实也算。

10、 web请求的过程,讲了浏览器到http服务器的过程,再讲了mvc的请求处理过程。

11、 你的职业规划

二面:

没有二面,好像说是跳过了一轮,直接技术主管面。

三面:

1、 项目中的多线程,为什么用chm,还有什么可以避免并发问题。

2、 平时在看什么,写什么博客,我说分布式,关注什么内容,大后端,Hadoop生态。

3、 dubbo了解么

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

5、 服务生产者和消费者怎么进行rpc调用

6、 怎么进行服务注册发现 zk实现具体说说

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

8、 dubbo的服务容错怎么做,怎么知道服务器宕机了 zk的心跳机制维持服务器连接

9、 好了我要问的差不多啦。

交叉面:

隔壁部门的技术主管,问了一道算法题。。就没问别的了。。我也是很醉。。。

题目是链表的排序,扯了4、5种方案,转成数组,直接排序,拆分再排序,顺序连接等等。。然后我表示不能再优化了。他就说没别的问题了。。。有点吃惊。

HR面:

1、 兴趣爱好

2、 三年到五年的职业规划

3、 意向公司和城市

4、 实习经历和收获

5、 实习中最大的困难

6、 为什么换公司,为什么拒绝菜鸟实习offer

7、 你的缺点和优点

8、 你觉得你比其他人优秀的地方说三个

9、 为什么想来我们部门

欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

相关文章
|
10月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
1305 33
|
10月前
|
Java 程序员 应用服务中间件
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-2)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
189 0
|
10月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
316 0
|
10月前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
218 0
|
10月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
201 0
|
10月前
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
395 0
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
305 9
|
11月前
|
人工智能 Java 程序员
Java程序员在AI时代必会的技术:Spring AI
在AI时代,Java程序员需掌握Spring AI技术以提升竞争力。Spring AI是Spring框架在AI领域的延伸,支持自然语言处理、机器学习集成与自动化决策等场景。它简化开发流程,无缝集成Spring生态,并提供对多种AI服务(如OpenAI、阿里云通义千问)的支持。本文介绍Spring AI核心概念、应用场景及开发步骤,含代码示例,助你快速入门并构建智能化应用,把握AI时代的机遇。
2320 61
|
10月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
人工智能 Java 程序员
【AI程序员】通义灵码 AI 程序员全面上线JAVA使用体验
通过 AI 程序编写一个JAVA后台项目登陆页面
902 42

热门文章

最新文章