三面“有赞”Java岗斩获offer:Spring+JVM+并发锁+分布式+算法

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 年末离职,年初为面试也筹备挺长一段时间,找了不少复习资料,刷了很多题在网上投了很多简历最终面试了有赞,还有幸拿到offer!

年末离职,年初为面试也筹备挺长一段时间,找了不少复习资料,刷了很多题在网上投了很多简历最终面试了有赞,还有幸拿到offer!

本人两年Java开发,本科毕业,计算机专业,勤学好问、积极上进!!!!(对自己能力还是比较认可的)

有赞:问得非常细节

一面:

1 Java并发技术了解吗,说了线程,juc的线程池,并发容器,阻塞队列,原子数据类型等。

2 问我原子数据类型怎么实现,cas

3 线程池有哪些参数,阻塞队列用的是普通队列么,答不是,是blockingqueue

4 concurrenthashmap和hashmap的区别,chm的实现原理,你在什么场景下用到chm,为什么,我说了多线程查询数据,put可能覆盖,或者hashmap的扩容可能产生死链

5 还用过哪些数据结构,list,set,map,stack和queue。

6 Spring了解么,问我了解五大组件不,不了解,说了ioc和aop。然后问我分别怎么实现的,使用xml和注解配置实现类有什么区别,怎么解析它们的数据。

7 Spring如何动态地加载一个bean到bean容器中,不是通过配置文件配置的,不会。

8 Spring aop的实现原理,如何加一层动态代理的,我说是创建bean过程中直接生成代理类的实例

9 Spring的spring quartz知道么,必须不知道

10 spring源码看过么,mvc了解么,说了一下mvc的原理和请求过程

11 hibernate和mybatis的源码看过么,没有

12 如何实现不同环境中配置文件的自动切换,使用脚本或者命令,他说使用hibernate的注解可以实现切换。

13 nio和io的区别,nio是阻塞轮询的,如何改用异步通知的机制,我说使用aio注册异步回调函数。

14 nio的包装框架了解么,我说netty,看得深入么,我说没有深入看。

15 分布式服务dubbo了解么,有哪些功能,如何自己实现一个dubbo,我分别从rpc和微服务的角度说了一下。问我有哪些序列化方式。

16 mysql问了几个简单问题。

17 对我们公司了解么,只是稍微了解。

二面:

1 项目

2 Java的内存模型,堆和栈分别存什么

3 Java的深拷贝和浅拷贝

4 Spring的aop怎么实现的,动态代理的原理是什么

5 Spring MVC的请求过程。

6 跳出Spring,说一下浏览器的请求过程

7 网络编程这一块,你了解哪些,说了socket和nio

8 nio的底层实现一般是epoll,讲一下epoll吧。

9 mysql的索引说一下,二级索引是怎么进行查找的

10 MySQL的两个引擎区别

11 hibernate的orm是怎么实现的,我说的是xml和注解的解析,以及jdbc封装

12 hibernate的事务如何实现,我说是jdbc的事务实现。

13 分布式数据库查询一个表的前十条数据,对id进行hash来索引节点,如何进行查询。我说那就对id hash,找到节点分别查询。

14 分布式系统的概念,如果有数据一致性怎么办,答cap和base

15 了解哪些分布式技术,说了缓存,负载均衡,消息队列,Hadoop

16 负载均衡的衡量指标,不知道

17 消息队列了解哪个,rabbitmq和kafka,为什么kafka比rm快,答了零拷贝,具体实现原理答错了,应该是避免复制数据到应用缓冲,直接使用sendfile传输数据。

18 hadoop了解哪些,hdfs的文件读写机制说一下。

19 没什么问题了

20 需要来现场面试,其实我不想去现场面,然后隔天给我发了拒信

三面:

1 自我介绍和项目

2 Java的内存分区

3 Java对象的回收方式,回收算法。

4 CMS和G1了解么,CMS解决什么问题,说一下回收的过程。

5 CMS回收停顿了几次,为什么要停顿两次。

6 Java栈什么时候会发生内存溢出,Java堆呢,说一种场景,我说集合类持有对象。

7 那集合类如何解决这个问题呢,我说用软引用和弱引用,那你讲一下这两个引用的区别吧。

8 Java里的锁了解哪些,说了Lock和synchronized

9 它们的使用方式和实现原理有什么区别呢,使用的话,synchronize用于方法和代码块,可以锁对象和类以及方法,Lock一般锁一块代码。并且Lock可以搭配condition使用。

实现原理的话,synchronized使用底层的mutex锁,需要系统调用,而Lock则使用AQS实现。

10 synchronized锁升级的过程,说了偏向锁到轻量级锁再到重量级锁,然后问我它们分别是怎么实现的,解决的是哪些问题,什么时候会发生锁升级。

11Tomcat了解么。说一下类加载器结构吧,我说不知道,说了些别的。

12 问我会什么框架,说了Spring,问我Spring中如何让A和B两个bean按顺序加载,我说依赖关系,他问怎么实现,然后说要用dependon注解,我说不了解。

13 beanfactory和applicationcontext是什么关系,使用有什么区别。

14 MySQL的sql优化了解么,答了解索引优化。

15 他问我如何做一条sql的优化,说了慢日志和explain。

16 MySQL集群的主从复制怎么做的,具体有哪些线程做哪些事情,使用了哪些日志。

17 CAP定理说一下,为什么三者只能选二,为什么分区容忍性必须保证。

18 平时了解哪些技术是牺牲了一致性来保证可用性的,我说消息队列,他问我MySQL是不是,我说MySQL主从复制应该是。

19 工作中CAP的A和P是怎么选择的,我说选P吧,他的意思是选A。

20 算法题:

一:10亿个数去重,我说用hash分片做,他说可能不均匀,然后我说了bitmap,他说那数字量更多怎么办,我说那就两个bitmap把。他说下一题吧。

二:十亿个数找前10个最大的,小顶堆过一遍即可。他说如果要提高效率呢,我说可以分片做堆排序再进行归并即可。他说OK。

分享一波我的复习宝典

Step1:准备一份优秀的简历

想要拿到阿里Offer,那么首先得要有面试阿里的机会,想要得到大厂面试机会并不是一件容易的事情,而简历,是撬开面试大门的钥匙,钥匙是否匹配,就要看简历是否优秀了。很多应届生不知道怎么制作自己的简历,随便在网上下载一份,改改个人信息。实际上,大厂面试的简历,看重的不是你的个人爱好,也不是在校参加过什么社团学生会,更注重的还是你的个人实际能力。所以,一份优秀的简历,应该包括你个人掌握的技术点,是否有实习经历,参加过什么项目,解决过什么项目难题等等。

Step2:提示自身的软实力(知识和技术)

第二个关键就要自己的自身实力过硬了,无论是你应届生,还是工作好几年,无论是校招还是社招,企业招聘的永远是自身实力过硬的,也就是你的知识储备,你的技术水平要达到要求,而提升自身软实力的唯一办法就是:不断学习。

以下我会分享一些我个人的学习文档,有需要的朋友自行选择获取:

资料获取方式:可以点击此处来获取就可以了!

  • Java核心知识整理

啃完283页的pdf文档(美团资深架构师整理)

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

Java核心知识

  • Spring全家桶(实战系列)

  • 其他电子书资料

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

写在最后

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

以上学习资料均免费放送,最后祝愿各位身体健康,顺利拿到心仪的offer!

资料获取方式:可以点击此处来获取就可以了!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
16天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
37 1
Spring 框架:Java 开发者的春天
|
9天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
16天前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
16天前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
42 2
|
20天前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
31 1
|
2天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
7 0
|
4月前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
41 0
|
4月前
|
存储 Java 程序员
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
67 10
|
4月前
|
存储 运维 Java
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
57 9