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

news2024/9/23 17:16:17

年末离职,年初为面试也筹备挺长一段时间,找了不少复习资料,刷了很多题在网上投了很多简历最终面试了有赞,还有幸拿到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,那么首先得要有面试阿里的机会,想要得到大厂面试机会并不是一件容易的事情,而简历,是撬开面试大门的钥匙,钥匙是否匹配,就要看简历是否优秀了。很多应届生不知道怎么制作自己的简历,随便在网上下载一份,改改个人信息。实际上,大厂面试的简历,看重的不是你的个人爱好,也不是在校参加过什么社团学生会,更注重的还是你的个人实际能力。所以,一份优秀的简历,应该包括你个人掌握的技术点,是否有实习经历,参加过什么项目,解决过什么项目难题等等。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

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

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

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

  • Java核心知识整理

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

Java部分:Java基础,集合,并发,多线程,JVM,设计模式 数据结构算法:Java算法,数据结构 开源框架部分:Spring,MyBatis,MVC,netty,tomcat 分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等 微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

编辑切换为居中

添加图片注释,不超过 140 字(可选)

Java核心知识

  • Spring全家桶(实战系列)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 其他电子书资料

Step3:刷题

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

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

编辑切换为居中

添加图片注释,不超过 140 字(可选)

写在最后

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

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

                                     资源获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

 精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BM(Boyer-Moore) 算法详解

BM算法(Boyer-Moore) BM算法也叫做精确字符集算法,它是一种从右往左比较(后往前),同时也应用到了两种规则坏字符、好后缀规则去计算我们移动的偏移量的算法。 坏字符规则 BM 算法是从后往前进行比较,此时我们发现比…

ArcGIS基础:不同方法修改栅格数据像元值

【1】:根据值修改栅格值 原始数据如下所示: 是一个栅格数据,分为三种不同的颜色,三种颜色代表三个不同的数值,如下所示: 如下所示,为1、2、3三个不同值。 下面将栅格值为1 的数据的数值替换…

5年测试,面试结束后被HR怼了..(心塞)

前一阵子向朋友诉苦,我在参加字节跳动面试的时候被面试官怼得哑口无言,场面让我一度十分尴尬。印象最深的就是下面几个问题: 根据你以前的工作经验和学习到的测试技术,说说你对质量保证的理解?非关系型数据库和关系型数…

【免杀前置课——Windows编程】十五、网络编程——C/S,B/S模式分别是什么?WinSocket、Socket传输的定义和其特点、实现简易通信(附代码)

网络编程网络编程C/S:客户端/服务器模式:B/S:浏览器/服务器架构模式。WinSocket:Socket传输的定义和其特点实现简易通信服务器端客户端网络编程 网络分为C/S,B/S两种模式。 C/S:客户端/服务器模式: 服务器端: 首先服务器先启动,并根据客户端请求做出相…

Pytest 的高级用法之插件开发

用过pytest的小伙伴应该都知道,pytest之所以功能强大,是因为pytest的插件非常的多。这是插件大多是pytest的使用者所开发的,今天咱们专门来聊聊如何去自己开发Pytest的插件。 一 pytest插件的介绍 pytest框架采用的是插件系统的模式来设计的…

安装VMware

大纲: 一、VMware简介 VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。 二、VMware摘要笔记 三、VMware安装步骤 1、将VMware Workstation 16 Pro解压后 双击运行第二个应用程序(player)进行…

精品基于springboot的线上跳蚤市场平台

《线上跳蚤市场平台》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 开发语言:Java 框架:springboot(ssm) 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库&a…

Android 中的权限

1、权限类型 Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。每项权限的保护级别取决于其类型。 1.1、安装时权限 安…

智慧农业发展,商业计划书撰写,商业模式,ppt亮点

目录 什么是商业模式 中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要_滚动新闻_中国政府网 第五篇 加快数字化发展 建设数字中国 第十五章 打造数字经济新优势 第十六章 加快数字社会建设步伐 第十七章 提高数字政府建设水平 第十八章 营造…

Linux下载安装 RabbitMQ​

压缩包:RabbitMQ-Linux版-Java文档类资源-CSDN下载 一、官网下载: 1、需要先下载RabbitMQ所需要的erl语言环境 官网地址:Downloads - Erlang/OTP 2、下载MQ 官网:Messaging that just works — RabbitMQgithub地址:…

一篇文章,教你彻底掌握接口测试!

Part 01、什么是接口测试 所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试,则是通过接口的不同情况下的输入,去对比输出,看看是否满足接口规范所规定的功能、安全以及…

【设计模式】外观模式(Facade Pattern)

外观模式属于结构型模式,主要解决客户程序访问复杂程序中的多个子程序而产生的高耦合度及高复杂度问题,根本目的在于简化接口的调用。例如我们去医院看病,可能要去挂号、门诊、划价、取药(子系统角色),这让…

Redis主从复制、哨兵模式、集群模式

文章目录一、Redis主从复制主从复制流程Redis主从复制的作用二、哨兵模式1、哨兵模式集群架构2、哨兵模式主要功能3、哨兵监控整个系统节点的过程4、主观下线5、客观下线6、master 选举7、故障迁移8、优点与缺点三、Cluster群集1、集群的作用2、Redis集群的数据分片四、实验一&…

Linux||使用vi编辑器按上下键输出字母

一、问题描述 在终端执行sudo命令时,系统提示“vboxuser is not in the sudoers file.This incident will be reported”,因此需要修改/etc/sudoers文件。 使用Linux自带的vi编辑器修改/etc/sudoers文件时候,按i键进入编辑模式。使用键盘上下…

SD-Branch多分支组网解决方案

一、多分支组网建设背景 多分支一般是指行政上由总部和分支单位组成,总部和各分支处在地域不同的区域;由于业务访问需要,组网要求“总部-分支”互联打通。多分支网络组网方案主要针对的是总分企业、金融网点、连锁酒店、连锁门店、商超地产、…

组合预测 | MATLAB实现基于BP-Adaboost强分类器多特征分类预测

组合预测 | MATLAB实现基于BP-Adaboost强分类器多特征分类预测 目录 组合预测 | MATLAB实现基于BP-Adaboost强分类器多特征分类预测预测效果基本介绍模型特性程序设计参考资料预测效果 基本介绍 MATLAB实现基于BP-Adaboost强分类器多特征分类预测。在集成学习-Boosting,Bagging…

如何建立公司网站?【公司网站建设】

现在很多实体公司企业都会做一个自己的公司网站,毕竟一个网站等同于一张在互联网中的名片,可以让更多客户了解到你。那么如何建立公司网站?流程步骤大概是什么?今天给大家简单讲解一下。 一、注册域名 这个域名是就是网址&#…

学编程:Python入门考级必备[8]

目录 知识模块(8) 列表知识——井然有序 1.列表的创建 2.列表访问(查找操作) 3.列表增加操作 4.列表删除操作 5.统计与计算 附件代码: 炼 知识模块(8) 列表知识——井然有序 知识模块(8) 列表知识——井然有序 1.列表的创建 1.1 空列表: lie …

[Linux](16)网络编程:网络概述,网络基本原理,套接字,UDP,TCP,并发服务器编程,守护(精灵)进程

文章目录网络协议初识OSI 七层模型TCP/IP 四层(或五层)模型IP、MAC、端口号TCP 协议与 UDP 协议套接字套接字地址结构socket 函数bind 函数recvfrom 函数sendto 函数UDP 通信实现服务端客户端TCP 通信实现服务端listen 函数accept 函数实现客户端connect 函数实现改进&#xff…

项目中集成高德地图

如果文章对你有帮助欢迎【关注❤️❤️❤️点赞👍👍👍收藏⭐⭐⭐】一键三连!一起努力! 本文我们主要讲述的是怎么在自己的项目中集成高德地图。 一、注册账号并申请Key 首先我们打开浏览器,直接百度&…