美团后端开发暑期实习一面

美团后端开发暑期实习问题详解

美团后端开发暑期实习面试时,面试官会考察应聘者的基本知识和技能掌握情况:

自我介绍:首先,应聘者应描述自己的背景、专业技能和个人优势必须以清晰、有条理的方式呈现。
数据结构与复制:考察对深复制和浅复制概念的理解及其在实际场景中的应用。
队列和堆栈:熟悉这两种基本数据结构,包括它们的使用场景和操作特点是很有必要的。
LinkedListvsArrayList:比较这两个集合类的优缺点,以及它们在性能和操作上的异同。
String底层原理:了解String对象的内存管理,包括静态池和字符数组的使用。
JDK版本熟悉程度:询问考生对不同JDK版本的掌握情况以及对新功能的理解。
Lambda表达式和函数式编程:检查现代编程范例的理解和实际应用。
StreamAPI:询问流处理数据的场景和操作,例如过滤、映射等。
withresource的原理:了解资源管理的原理以及如何调整类以在withresource语句中使用。
并发控制:volatile关键字的使用,检查异常和非检查异常的区别。
网络知识:TCP和UDP比较并熟悉HTTP状态代码。
数据库优化:MySQL索引类型和失败场景,以及Autowired和@Resource的区别。
Bean管理:在Bean被销毁之前如何对其执行特定操作的候选设计和实现。
实践测试:实践测试可以包括简单的编程问题。
以上是美团暑期实习面试可以涵盖的主要话题。
准备充分的候选人将更具竞争力。

MyFlash——美团点评的开源MySQL闪回工具

闪回工具的现状和理想特征。
目前市场上有各种数据恢复工具。
主要分为三种实现方式:1、使用MySQLbinlog工具配合sed和awk,将binlog解析成SQLText,然后使用sed和awk。
转换为真正的SQL。
2、修补数据库源码,添加闪回选项,扩展mysqlbinlog功能。
3、使用业界提供的Binlog分析库生成SQL,以binlog2sql为代表。
这些工具的过滤选项有限。
如果无法根据SQL类型进行过滤,需要重新设置delete语句,则需要结合awk、sed等工具进行过滤。
一个理想的Flashback工具必须具备以下特性:-**不需要Binlog文本转换**,直接操作Binlog。
-**提供丰富的基于库、表、SQL类型、位置、时间等的过滤方法**。
-**兼容多个MySQL版本**。
-**数据库重建不敏感**,方便升级。
-**binlog分析自主控制**,操作灵活。
Flashback工具的Binlog格式的基本Binlog文件结构以“formatdescriptionevent”开始,以“rotateevent”结束,中间由几个事件组成。
每个事件由事件头和数据组成。
最常见的事件包括:-“formatdescriptionevent”:描述binlog格式。
-`tablemapevent`:定义表结构。
-`updaterowevent`:表示数据更新。
Binlog事件回滚回滚逻辑基于事件类型:对于插入和删除操作,只需要交换type_code即可完成回滚。
在更新操作中,难点在于计算AI和BI的长度,需要处理字段长度编码和小数类型。
解析Binlog时的要点-**长度编码整数**:通过一个或多个字节的组合来表示长度,有效节省存储空间。
-**十进制类型**:整数和十进制数每9位占用4个字节。
如果数字小于9,则填充剩余字节。
闪回工具架构分析MyFlash工具通过以下步骤实现闪回功能:1.**分析Binlog**:将binlog文件解析为多个事件。
用户可以指定开始和结束位置并确定时间条件。
2.**重组事件**:将事件组织成最小的执行单元,包括表元数据和数据事件,保证执行逻辑正确。
3.**事件反转与重组**:反转最小执行单元内的数据事件,反转最小执行单元的队列。
4.**生成新的binlog**:将最小执行单元倒序输出为新的binlog文件,注意next_position字段的变化。
性能对比与测试在特定场景下,对MyFlash工具的性能进行了测试,结果显示其速度最快,说明MyFlash在闪回操作方面表现良好。
以上内容展示了Flashback工具的现状、理想特性、binlog格式分析、事件回滚逻辑、分析关键点、工具架构分析和性能测试结果。