从安卓转到Java开发,我吃透了这份pdf,终于4面拿下美团offer

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 先说说个人情况吧,坐标广州,16年从一所普通二本大学毕业,毕业后在一家小公司干android开发,年薪在15w左右。转Java的契机是认识到了一个朋友,做Java后台的,经常跟他聊相关的内容,经过慎重考虑及个人的发展规划,所以就决定转型了。

开篇:为什么转Java?

先说说个人情况吧,坐标广州,16年从一所普通二本大学毕业,毕业后在一家小公司干android开发,年薪在15w左右。转Java的契机是认识到了一个朋友,做Java后台的,经常跟他聊相关的内容,经过慎重考虑及个人的发展规划,所以就决定转型了。

从安卓转Java,肯定不能是说转就转的,需要耗费大量的时间和精力,所以在工作之余是一定要抽出自己的时间来学习。好在付出终是有回报的,简历上不说敢写精通,熟练是没多大问题的,最终4面拿下了美团offer。

以下主要分享面经和个人学习方法,会包括很多PDF文档,如面试题库(含答案+解析)、学习笔记、实战文档和脑图等等,均可以免费分享,可以点击此处来获取就可以了!

美团点评面试场景还原,最真实的面经

美团点评第一面:

  1. 做一下自我介绍吧,简单说一下你的项目;
  2. 有遇到过内存泄漏吗?你们是怎么解决的?
  3. Java的基本类型有哪几个?String是不是java的基本类型?String为什么要是final类型的?
  4. 反射机制的底层实现是什么?动态呢?动态的实现原理?
  5. HashMap了解吗?说一下hashmap相关的一些东西?hashmap是线程安全的吗?为什么是线程安全的?
  6. concureenthashmap了解吗?他是如何实现线程安全的?
  7. 你刚才说1.8基于cas?cas的ABA问题怎么解决?
  8. 说一下JVM的线程模型?这些区域都分别是干啥用的?、
  9. 说一下Java类加载器的工作机制?类加载在哪个域进行的?
  10. 说一下Java的线程模型?
  11. violate了解吗?它的原理是什么?violate是线程安全的吗?
  12. 保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读
  13. 数据库的索引有哪几种?为什么要用B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC机制了解不?MVCC机制有什么问题?怎么去解决这个问题?mysql慢语句调优做过吗?说说你是怎么做的?
  14. redis了解吗?你说说怎么用redis实现分布式锁?
  15. spring中Bean的作用域,springMVC的controller是线程安全的吗?怎么去保证线程安全呢?
  16. 消息队列有用过吗?说说你怎么用的?
  17. 计算机网络了解吗?说一说TCP三次握手和四次挥手吧
  18. time_wait状态产生的原因是什么?,有什么危害?可以如何避免?
  19. 寻找旋转排序数组中的最小值

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

请找出其中最小的元素。

你可以假设数组中不存在重复元素。

示例 1:

输入: [3,4,5,1,2]

输出: 1

示例 2:

输入: [4,5,6,7,0,1,2]

输出: 0

美团点评第二面:

  1. 首先还是问项目。
  2. String,StringBuffer,StringBuilder的区别,为什么String是不可变的,StringBuffer和StringBuilder哪个是线程安全的,他们分别适用于什么场景。
  3. java类加载过程是怎么样的,说一下volatile。
  4. 并发包了解吗?假如几个线程之间相互等待,可以用哪个并发类来实现,他的原理是什么?
  5. 数据库慢查询优化了解哪些?
  6. 说一下spring容器的启动过程?
  7. 讲一下分布式锁,基于zookeeper实现和redis实现在性能上有什么差异?
  8. kafka如何保证不丢消息又不会重复消费。了解大数据相关的一些技术吗?
  9. 最后写了道题:跳跃游戏;

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

示例 1:

输入: [2,3,1,1,4]

输出: true

解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。

示例 2:

输入: [3,2,1,0,4]

输出: false

美团点评第三面:

  1. 自我介绍
  2. 项目介绍
  3. 怎么管理项目成员
  4. 当意见不一致时,如何沟通并说服开发成员,并举个例子
  5. 怎么保证项目的进度
  6. 数据库的索引原理
  7. 非聚簇索引和聚簇索引
  8. 索引的使用注意事项
  9. 联合索引
  10. 从底层解释最左匹配原则
  11. Mysql对联合索引有优化么?会自动调整顺序么?哪个版本开始优化?
  12. Redis的应用
  13. Redis的持久化的方式和原理
  14. 技术选型,一个新技术和一个稳定的旧技术,你会怎么选择,选择的考虑有哪些
  15. 说你印象最深的美团点评技术团队的三篇博客
  16. 最近在学什么新技术?
  17. 你是怎么去接触一门新技术的?
  18. 会看哪些书
  19. 怎么选择要看的书
  20. 为什么要转Java?

美团点评第四面:

  • 在原公司的哪一段时间是比较享受的?
  • 为什么现在出来看机会呢?看什么类型的机会?
  • 同事或者朋友之间如何评价你?
  • 平时如何学习呢?有没有什么技巧?
  • 你对我们的业务方向有了解吗?
  • 你的职业规划是什么?
  • 你的一些优点有哪些?
  • 目前还在看哪些机会呢?手里还有别的Offer吗?
  • 转Java之后有遇到哪些困难?怎么解决的?

美团4面面试题完整答案(详细解析版):

篇幅有限,面试题答案和下文的文档资料,可以点击此处来获取就可以了!

从安卓转到Java,我经历了哪些?如何才敢挑战美团?

(一)清楚自己要什么:调整心态,多给自己勇气,重新规划目标

安卓转Java,这个想法是需要比较大的勇气的,前后我大概是纠结了一年多的时间才做出了决定,期间的心态是比较复杂和焦虑的,最主要的是“担心”,所以要想成功转到Java,首先第一个难关就是自己的心态问题。这个过程中,我不断给自己加油打气,重新规划目标,才得以冷静且稳定下来,重新规划了自己的目标。

(二)清楚自己学什么:重新梳理知识结构,整理知识脉络

做安卓的,都是具备一定的Java基础的,所以相对其他语言来说,转Java要容易不少。但要想成为合格的Java后台开发,具备的技术肯定是远远不够的,因此需要重新去梳理一遍自己的知识结构,整理Java的知识脉络,清楚目前掌握了多少,需要学习哪些内容。

另外,我手上也有一本Java核心知识点的pdf,Java知识点整理得非常齐全,我之所以能够拿下美团offer,也多亏我自己努力把这份文档给吃透。可以点击此处来获取就可以了!

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

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

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

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

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

(三)清楚面试问什么:飞速提升,恶补开源,刷题备战

当自己学习到一定程度后,需要的就是准备面试及工作了,所以这一步就需要让自己有一个飞速的提升,要优化自己所学,要清楚Java面试会问一些什么?因此接下来的安排就是要读一些书籍笔记,开始刷题备战面试了。

  • 实战系列:Spring全家桶+Redis等

  • 其他相关的电子书:源码+调优

  • 大厂面试题题库:阿里巴巴、腾讯、美团、字节跳动、网易、拼多多等

写在最后

说了这么多,不善言辞,也是随性发挥,想到啥说些啥,更多是对自己开发历程的一些感受和自己学习的方法。不过,最后我想表达的是,在开发过程中每一行代码,每一种设计模式的使用,思考的重点和角度都会有所不同。所以,能够尝试不同的技术栈,从不同的视角来思考并解决问题,融会贯通,才是我个人追求的技术之“道”。

以上内容中,我谈及到的学习方法、学习面试资料,均可以免费分享给大家,希望大家在今年的金九银十里能够发挥顺利,进到自己想进的公司,共勉!

资料免费获取,可以点击此处来获取就可以了!

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
12天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
72 13
|
20天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
41 19
|
20天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
45 14
|
17天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
52 10
|
11天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
48 2
|
20天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
21天前
|
搜索推荐 前端开发 测试技术
打造个性化安卓应用:从设计到开发的全面指南
在这个数字时代,拥有一个定制的移动应用不仅是一种趋势,更是个人或企业品牌的重要延伸。本文将引导你通过一系列简单易懂的步骤,从构思你的应用理念开始,直至实现一个功能齐全的安卓应用。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你提供必要的工具和知识,帮助你将创意转化为现实。
|
21天前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
27 0