2年经验+2本学历+CRUD背景,凭啥面试蚂蚁金服拿到30K
本文素材由一位粉丝分享 ,感谢你的回馈
写在前面
本人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!!!