年前面试阿里被挂,疫情复盘,五面阿里斩获offer,面经分享

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

try {

// 这里需要知道 BeanFactoryPostProcessor 这个知识点,

//Bean 如果实现了此接口,那么在容器初始化以后,Spring 会负责调用里面的 postProcessBeanFactory 方法。

// 这里是提供给子类的扩展点,到这里的时候,所有的 Bean 都加载、注册完成了,但是都还没有初始化

// 具体的子类可以在这步的时候添加一些特殊的 BeanFactoryPostProcessor 的实现类或做点什么事

postProcessBeanFactory(beanFactory);

// 调用 BeanFactoryPostProcessor 各个实现类的 postProcessBeanFactory(factory) 方法

invokeBeanFactoryPostProcessors(beanFactory);

// 注册 BeanPostProcessor 的实现类,注意看和 BeanFactoryPostProcessor 的区别

// 此接口两个方法: postProcessBeforeInitialization 和 postProcessAfterInitialization

// 两个方法分别在 Bean 初始化之前和初始化之后得到执行。注意,到这里 Bean 还没初始化

registerBeanPostProcessors(beanFactory);

// 初始化当前 ApplicationContext 的 MessageSource

initMessageSource();

// 初始化当前 ApplicationContext 的事件广播器

initApplicationEventMulticaster();

// 从方法名就可以知道,典型的模板方法(钩子方法),

// 具体的子类可以在这里初始化一些特殊的 Bean(在初始化 singleton beans 之前)

onRefresh();

// 注册事件监听器,监听器需要实现 ApplicationListener 接口

registerListeners();

// 初始化所有的 singleton beans(lazy-init 的除外)

// 重点方法将会在下一个章节进行说明

finishBeanFactoryInitialization(beanFactory);

// 最后,广播事件,ApplicationContext 初始化完成

finishRefresh();

}

catch (BeansException ex) {

if (logger.isWarnEnabled()) {

logger.warn("Exception encountered during context initialization - cancelling refresh attempt: " + ex);

}

// 销毁已经初始化的 singleton 的 Beans,以免有些 bean 会一直占用资源

destroyBeans();

// Reset ‘active’ flag.

cancelRefresh(ex);

// 把异常往外抛

throw ex;

}

finally {

// Reset common introspection caches in Spring’s core, since we

// might not ever need metadata for singleton beans anymore…

resetCommonCaches();

}

}

}

了解过字节码的编译过程吗(这个还真不知道)

image

三面

自我介绍,不超过3分钟(这次好像时间更久了,也就2分钟多点)

说一下你对哪个项目比较熟悉

数据库项目

为什么做这个项目

当时公司里为了整改balabala

项目采用了什么架构,数据库如何设计的

简单是MVC架构,数据库数据库由哪些表,为什么有这些表

主要有哪些核心模块,模块之间如何通信的session放在哪里

主要有哪些核心模块,模块之间如何通信的 session放在哪里

image

如何保存会话状态,有哪些方式、区别如何

cookie 保存在客户端,容易篡改

session 保存在服务端,连接较大的话会给服务端带来压力,分布式的情况下可以放在数据库中,

优点:

1:简单且高性能

2:支持分布式与集群

3:支持服务器断电和重启

4:支持 tomcat、jetty 等运行容器重启

缺点:

1、需要检查和维护session过期,手动维护cookie;

2、不能有频繁的session数据存取;

token 多终端或者app的话一定要这个,

随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。

JWT的token包含三部分数据:

Header:头部,通常头部有两部分信息: 声明类型,这里是JWT 加密算法,自定义

我们会对头部进行base64加密(可解密),得到第一部分数据 Payload:载荷,就是有效数据,一般包含下面信息: 用户身份信息(注意,这里因为采用base64加密,可解密,因此不要存放敏感信>息) 注册声明:如token的签发时间,过期时间,签发人等

这部分也会采用base64加密,得到第二部分数据 Signature:签名,是整个数据的认证信息。一般根据前两步的数据, 再加上服务的>的密钥(secret)

(不要泄漏,最好周期性更换),通过加密算法生成。用于验证整个数据完整和可靠性(不要泄漏,最好周期性更换),

通过加密算法生成。用于验证整个数据完整和可靠性

分布式session如何管理,你有哪些方案 Redis做缓存持久化存储session 数据库存储session

学过数据结构和算法吗(当然),你说说二分搜索的过程 二分搜索有一点要求就是数据有已经排序好的,假设是自然排序的,拿到目标数据后查找中间的值,如果大了,就去右边一部分的中间值比较,小了就去左边一部分的中间值

说一下快排的过程,写一下伪代码 取一个值,然后设置两个指针,一个指针先从后到前开始遍历,遇到小于这个值的就停止,然后另一个指针从前到后遍历,遇到大于这个值的就停止,知道这两个指针相遇,此时交换这个值与相遇的时候指针的值,以这个坐标为边界两边开始递归

了解哪设计模式,举例说说在jdk源码哪些用到了你说的设计模式 单例:ioc容器 模板:ioc、springmvc 建造者模式:lombok 工厂:ioc 代理:aop 订阅/发布:消息队列,redis的pub/sub

你有什么问我吗(仍然上面三个问题)

四面:

来个自我介绍呗,不超过3分钟 介绍下你最熟悉的项目 项目使用了什么架构,亮点是什么 MVC,用到Lucene,用aop实现了权限的管理 平时主要学习什么课程 Java、数据结构、数学建模 你目前的研究方向是什么 家是哪的 喜欢看什么书

大概什么时候能来实习呢 四面总结

五面

自我介绍下吧

做了哪些项目

看你在问题中说你在杭州看到很多商贩使用付款二维码,你对支付宝怎么看

每天有那么多人使用支付宝,这些数据如果给你存储,你会怎么设计呢(不是说HR不问技术问题吗?不愧是阿里的HR)

为什么想来支付宝实习呢

技术栈、对移动支付比较好奇,

你身边同学如何评价你、老师呢

如果与同事发生了意见的不一致,你会如何解决呢

首先就是要确保双方都理解了对方的意思,因为有些是沟通不充分导致的,然后同时综合对比不同意见,可能会对工作内容产生的影响,并且会根据利弊来选择方法

通过阿里的面试,我查看了这些面试资料,现在分享出来给大家,希望能给大家带来帮助

Java多线程

说一说自己对于 synchronized 关键字的了解

说说自己是怎么使用 synchronized 关键字,在项目中用到了吗

讲一下 synchronized 关键字的底层原理

说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗

谈谈 synchronized和ReenTrantLock 的区别

说说 synchronized 关键字和 volatile 关键字的区别

为什么要用线程池?

实现Runnable接口和Callable接口的区别

执行execute()方法和submit()方法的区别是什么呢?

如何创建线程池

介绍一下Atomic 原子类

JUC 包中的原子类是哪4类?

讲讲 AtomicInteger 的使用

能不能给我简单介绍一下 AtomicInteger 类的原理

image

多线程面试专题与答案

JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供很好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Bytecode)的格式给出了明确的规格。这一规格包括操作码和操作数的语法和数值、标识符的数值表示方式、以及Java类文件中的Java对象、常量缓冲池在JVM的存储映象。这些定义为JVM解释器开发人员提供了所需的信息和开发环境。Java的设计者希望给开发人员以随心所欲使用Java的自由。

JVM

内存模型以及分区,需要详细到每个区放什么。

GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。

Minor GC 与 Full GC 分别在什么时候发生?

堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。

简述 java 垃圾回收机制?

java 中垃圾收集的方法有哪些?

类加载器双亲委派模型机制?什么是类加载器,类加载器有哪些?

简述 java 内存分配与回收策率以及 Minor GC 和Major GC

image

Redis

为什么要用 redis /为什么要用缓存?

为什么要用 redis 而不用 map/guava 做缓存?

redis 和 memcached 的区别?

上述 Redis 分布式锁的缺点?

redis 常见数据结构以及使用场景分析

redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)

redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)?

缓存雪崩和缓存穿透问题解决方案?

如何解决 Redis 的并发竞争 Key 问题?

如何保证缓存与数据库双写时的数据一致性?

image

Redis面试专题与答案

Spring一般是不可避免的,如果你的简历上注明了你会Spring Boot或者Spring Cloud的话,那么面试官也可能会同时问你这两个技术,比如他可能会问你springboot和spring的区别。 所以,一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。

另外,AOP实现原理、动态代理和静态代理、Spring IOC的初始化过程、IOC原理、自己怎么实现一个IOC容器? 这些东西都是经常会被问到的。

Spring

Spring Bean 的作用域?

如何用基于 Java 配置的方式配置 Spring?

请说下 Spring Bean 的生命周期?

Spring Bean 的作用域之间有什么区别?

请举例说明如何在 Spring 中注入一个 Java Collection?

Spring 框架中有哪些不同类型的事件?

Spring 框架中都用到了哪些设计模式?

开发中主要使用 Spring 的什么技术 ?

image

Spring面试专题与答案

“RabbitMQ?”“Kafka?”“RocketMQ?”…在日常学习与开发过程中,我们常常听到消息队列这个关键词。这也是面试经常被问到的

总结

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。

这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!

Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!

Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
[外链图片转存中…(img-ky02MqcE-1713703410919)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-2m7FABCc-1713703410920)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里云平台是阿里巴巴集团旗下的云计算服务平台,主要提供云计算、大数据、人工智能、物联网等技术服务。以下是阿里云平台的主要产品和成果应用情况: 1. 云服务器 ECS:阿里云平台提供了一种高性能、安全可靠、可弹性伸缩的云服务器,支持多种操作系统和应用,广泛用于企业的云计算、网站托管、数据库等领域。 2. 云数据库 RDS:阿里云平台提供了一种高可用、可扩展的关系型数据库服务,支持 MySQL、SQL Server、PostgreSQL、MongoDB 等多种数据库类型,广泛用于企业的数据存储和管理。 3. 云存储 OSS:阿里云平台提供了一种高可靠、高可用、低成本的对象存储服务,支持多种数据类型和存储方式,广泛用于企业的文件存储、备份、归档等。 4. 大数据计算 MaxCompute:阿里云平台提供了一种高效、弹性、安全的大数据计算服务,支持 SQL、MapReduce、Graph 等计算模型,广泛用于企业的数据挖掘、分析、预测等领域。 5. 人工智能平台 PAI:阿里云平台提供了一种集成化、可视化、自动化的人工智能平台,支持多种深度学习、图像识别、自然语言处理等算法和模型,广泛用于企业的智能客服、智能推荐、智能分析等领域。 以上产品和服务已被广泛应用于各个行业和领域,如电商、金融、医疗、教育、政府等。例如,阿里云平台支持的双十一购物节期间,处理的交易量达到了 25.3 亿笔,成为全球最大的电商购物节;阿里云平台还支持的新冠疫情期间,为全球各地的企业和机构提供了大量的远程办公、在线教育、云医疗等服务,发挥了重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值