Python、Java、大数据、人工智能分享

2年经验+2本学历+CRUD背景,凭啥面试蚂蚁金服拿到30K

2020-09-15  本文已影响0人  Java领域指导者

本文素材由一位粉丝分享 ,感谢你的回馈

写在前面

本人Java开发经验2年半,学历也很普通,非一线城市二本毕业,毕业后就一直在青岛Crud,对于在公司每天重复的工作,我觉得对我的技术提升也并没有什么帮助。但从小镇出来的我,也深知自我努力的重要性,所以想要改变“命运”,没有背景没有资本的人,只能通过自我奋斗获得。

而幸运女神往往会眷顾努力的人,而我也准备好了迎接这份幸运。所以当这份幸运降临到我头上,我并不诧异,只觉得终于到我大展拳脚了。目前拿到了蚂蚁金服30K的offer,下面就主要分享我这次“蚂蚁面试经历”和“个人学习方法”,希望能帮助到大家更好的学习。

请注意,因本文内容过多,除了面经外,还有很多学习资料,不适合在文章中全部阐述,下文的面试题以及学习资料都有整理在pdf里,需要完整pdf版的,私信回复【学习】即可。

蚂蚁金服面试经历(还原最真实的4面)

蚂蚁一面:

1、自我介绍

2、聊项目相关

介绍项目

怎么保证redis与Mysql的数据一致性

见你写了个加随机数预防缓存雪崩,解释一下

未改进和改进后的Jmter测试性能对比

3、Redis

redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?

redis 主从复制如何实现的?redis 的集群模式如何实现?redis 的 key 是如何寻址的?

使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?

知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?

redis 过期策略都有哪些?LRU 算法知道吗?写一下 java 代码实现?

缓存穿透、缓存击穿、缓存雪崩解决方案?

在选择缓存时,什么时候选择 redis,什么时候选择 memcached

缓存与数据库不一致怎么办?

主从数据库不一致如何解决?

4、Mysql

解释一下什么是事务

讲一讲事务隔离级别

为什么使用B+树作为索引

聚簇索引和非聚簇索引的区别

5、Java

Java是如何保证其安全性的

刚见你说了Java 内存泄漏问题,解释一下什么情况下会出现

说一下BIO、NIO、AIO

6、其它

平时怎么学习的

有什么需要问的吗?

蚂蚁二面:

1、手撕算法

10个多线程保证 i从0加到10 (差点翻车,主线程忙等另外10个线程完结

反转链表

上台阶(n=80)

2、操作系统

常用的linux命令说一下

操作系统中的信号 和 信号量有什么关系

epoll 和 Selector 有什么区别?

3、计算机网络

说一下拥塞控制

4、数据结构

说一下红黑树,你平时用的技术哪里用到了它?

哈希表怎么处理冲突?

5、项目相关

把项目放到服务器上运行的时候有没有遇到什么问题?查看项目运行的状态怎么做?

spring 和 springboot的关系你是怎么理解的?

Spring IOC和AOP说一下你的理解

为什么用消息队列?

对于消息的重复消费你有什么设计方案吗?

蚂蚁三面:

你是怎么学习Java的?

设计模式了解吗?单例讲一下,懒汉饿汉double-check,怎么实现。策略模式,外观模式,适配器模式,装饰器模式,分别讲一下

联合索引什么时候不会触发索引?

AOP了解么,有什么好处,如何使用,怎么实现的?

支付宝到银行的转账业务怎么实现?

redis实现分布式锁

三台机器集群,按不同权重访问,怎么做?

蚂蚁四面(hr面):

先介绍一下你自己吧

平时怎么去学习的?

为什么你说学习了要去实践?

说一下的最大的优点和缺点

举一下你缺点的例子

想象一下你几十年后是怎样的生活?

你觉得最痛苦的一段时间

对你影响最大的一件事情

在安排活动的过程中有没有发生什么冲突?

你有什么崇拜的人吗?

你有什么想问的?

怎么样,看到这里觉得你跟大厂的距离是不是也没那么遥远?是的,只要你也勤加学习,积极提升自己,你的未来也一定十分耀眼。

越努力,越幸运(如何高效学习?)

1、看视频进行系统学习

这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够系统,所以重新进行系统学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

以下奉上我的系统学习路线和视频学习资源:

2、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

Spring源码深度解析:

本书完全从开发者的角度去剖析源码,每一章 都会提供具有代表性的实例,并以此为基础进行功能实现的分析,而不是采取开篇就讲解容器怎么实现、AOP怎么实现之类的写法。在描述的过程中,本书尽可能地把问题分解,使用剥洋葱的方式一层一层地将逻辑描述清楚,帮助读者由浅入深地进行学习,并把其中的难点和问题各个击破,而不是企图一下让读者理解一个复杂的逻辑。

Kafka源码解析与实战:

由浅入深,循序渐进:本书从LinkedIn (领英)公司内部大数据架构讲起,引出消息队列Kafka,接着讲解Kafka的基本架构,然后着重分析Kafka内部的各模块实现细节。从诞生背景至架构组成,再到内部实现细节,由浅入深,循序渐进,让读者在阅读时能够逐步了解Kafka。

由里到外,层层剖析:本书不仅讲解Kafka内部的实现原理,而且还详细描述Kafka外部的维护工具,对外的客户端编程原理以及和第三方集成的方式。由里到外,层层剖析,让读者在阅读时能够更加全面地掌握Kafka。

JVM G1 源码分析和调优:

本书尝试从G1的原理出发,系统地介绍新生代回收、混合回收、Full GC、并发标记、Refine 线程等内容;同时依托于jdk8u的源代码介绍Hotspot如何实现G1,通过对源代码的分析来了解G1提供了哪些参数、这些参数的具体意义;最后本书还设计了一些示例代码,给出了G1在运行这些示例代码时的日志,通过日志分析来尝试调整参数并达到性能优化,还分析了参数调整可能带来的负面影响。

Spring Boot2精髓:

本书系统介绍了Spring Boot 2.0的主要技术,侧重于两个方面,一方面是极速开发一 个Web应用系统(第1~6章,包含Spring介绍、MVC、视图技术、数据库访问技术),随后介绍了Spring Boot的高级特性(第7~9 章),包括多环境部署、自动装配、单元测试等技术。另外一方面,当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot来实现分布式架构,会在本书的第10~17章介绍。

3、面试前夕,冲刺刷题

面试的前一周时间内,就可以开始刷题冲刺了。在这里为大家推荐左神的《程序员代码面试指南》,由简入繁的为你的算法面试保驾护航。

总结

由学习路线,到实战文档,再到视频解析,小编在这里都已经为大家整理好了,有需要深度学习了解的朋友,请转发文章并关注小编,私信回复【学习】即可。

最后希望大家在金九银十里都能够拿到想要的大厂offer!!!

上一篇 下一篇

猜你喜欢

热点阅读