美团面试,问的贼细~

简介: 美团校招面试涵盖网络(HTTP/TCP/UDP)、框架(Spring的IoC/AOP)、设计模式(静态代理)、编程(手写静态代理)、MySQL(事务隔离级别)、Java基础(数据类型/Integer与int的区别)、HashMap等知识点。面试从自我介绍开始,深入到技术细节,如TCP的三次握手和四次挥手,GET与POST请求的区别,以及MySQL的不可重复读示例。了解更多详情可访问[www.javacn.site](https//www.javacn.site)。

下面是美团校招的面试真题和答案解析,问的比较细,涉及到的模块有:网络、框架、设计模式(静态代理模式)、手撕代码、MySQL、Java 基础、HashMap 等知识点,接下来我们一起来看吧。
5e595e96d88d480e692a9241899e50e.jpg

1.自我介绍

自我介绍讲明白三个点:

  1. 你是谁?有几年工作经验?哪一届的学生?毕业院线?
  2. 你会啥?
  3. 你最大成就?

    2.HTTP属于传输协议的哪一层协议?

    HTTP 属于应用层,基于 TCP/IP 实现。

    3.TCP和UDP的区别?

  4. TCP 有连接;UDP 无连接。

  5. TCP 可靠;UDP 不可靠。
  6. TCP 基于数据流;UDP 基于数据报。
  7. UDP 比 TCP 更高效。
  8. TCP 发送缓冲区、接收缓冲区;UDP 只有接收缓冲区,没有发送缓冲区。

    4.TCP的可靠性传输怎么保证?

    保证可靠性的机制:

  9. 确认应答。

  10. 超时重传。
  11. 连接管理(三次握手和四次挥手)。
  12. 拥塞控制。
  13. 流量控制。

    5.如果让你设计一个协议,你怎么保证可靠性?

    可靠性主要依据:

  14. 连接管理

  15. 确认应答
  16. 超时重传

    6.TCP为什么需要三次握手?

    TCP 通讯的双方都是全双工的,所以他们彼此要证明自己和对方的发送能力和接收能力。
    TCP 如果两次握手不能证明服务器端的发送能力和客户端的接受能力 -> 两次握手。
    TCP 至少需要三次握手才能证明彼此的全双工能力。

    7.TCP为什么需要四次挥手?

    原因有两个:

  17. TCP 本身自带确认应答。

  18. TCP 有接收缓冲区的任务可能没执行完。

    8.GET和POST请求的区别?

    主要区别:

  19. 隐私性:通常情况下 POST 的隐私性高于 GET。

  20. Restful 规范:GET 用于查询;POST 用于写入操作。
  21. 传参的大小不同:GET 传参有大小限制,而 POST 没有。

    9.你刚才说GET请求传输文件大小是有限制是多少?

    不同的浏览器是不同。
    早期版本通常是 2k~4k,现在是 4K~8k。

    10.我看你博客写了很多关于Spring的东西,你可以给我说一下Spring的最重要的两大特性吗?

    Spring 核心功能:
  • IoC
  • AOP

    11.可以聊一下AOP吗?

    思路:
  1. 讲定义:AOP 面向切面编程。
  2. 讲实现
    1. 框架添加 AOP 依赖
    2. 定义切面(@Aspect)并且将它放到 IoC 容器
    3. 定义切点 -> @Pointcut 拦截规则
    4. 定义通知 -> 拦截之后的执行方法
  3. 讲原理:依靠 AOP 实现:

    1. JDK Proxy
    2. CGLib

      12.说一下静态代理的实现类图吗?

      UML 类图 -> 设计模式
      静态代理 UML 类图:
  4. 接口类

  5. 真实类(被代理的类)
  6. 代理类

    13.现在手写一个静态代理?

    14.Java基础类型有哪几个?

    Java 有以下 8 大数据类型:

  7. 整型:byte、short、int、long

  8. 浮点类型:float、double
  9. 字符类型:char
  10. 布尔类型:boolean

    15.int是几个字节?

    4个字节。

    16.int和Integer有啥区别?那你觉得哪一个用起来好,为什么?

    区别:
  • int 属于基础数据类型
  • Integer 属于对象。

使用场景:

  • int 使用场景:定义类里面的属性。
  • Integer 使用场景
    • 传参
    • 泛型
    • 对象工具方法

      17.MySQL的事务隔离级别有哪几个?

  1. 读未提交:存在脏读、不可重复读、幻读问题。
  2. 读已提交:没有脏读问题了,但是依然存在不可重复读和幻读的问题。
  3. 可重复读(默认隔离级别):没有脏读、不可重复读的问题,但依然存在幻读问题。
  4. 串行化:没有脏读、不可重复读、在幻读的问题,但效率较低。

    18.为什么读已提交有不可重复读的问题?

    读已提交会查询事务已经提交的数据,所以在两次相同的查询中,可能会读到不同的内容,这个问题就是不可重复读的问题。

    19.你可以给我模拟一下读已提交发生不可重复读的问题吗?

    begin; -- 开启事务
    select username from users where id=1; -- 张三
    -- 事务2将 users id=1 username='李四'
    -- ....
    select username from users where id=1; -- 李四
    

    20.写一个SQL语句:查询男生的数量?

    select count(*) from users where gender=1;
    

    21.根据写的SQL说一下这个里面索引是谁?生效了吗?

    考察的重点:性别是否适合做索引?

无索引,因为性别不适合做索引。

22.HashMap的底层实现原理?

HashMap 使用数组+链表/红黑树来实现的。

23.为什么HashMap要用到链表?

HashMap 会有哈希冲突,HashMap 使用的是链地址法来解决哈希冲突(实现简单、高效),所以使用链表来实现 HashMap 解决哈希冲突。

本文视频解析

飞书链接:https://r6b93q3exi.feishu.cn/docx/GBJPdy5hIoqTZNxMV8WcBDWUnHb

密码:1p6698&1

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

相关文章
|
30天前
|
存储 安全 Java
每日大厂面试题大汇总 —— 今日的是“美团-后端开发-一面”
文章汇总了美团后端开发一面的面试题目,内容涉及哈希表、HashMap、二叉树遍历、数据库索引、死锁、事务隔离级别、Java对象相等性、多态、线程池拒绝策略、CAS、设计模式、Spring事务传播机制及RPC序列化工具等。
38 0
|
4天前
|
SQL 缓存 关系型数据库
美团面试:Mysql 有几级缓存? 每一级缓存,具体是什么?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴因未能系统梳理MySQL缓存机制而在美团面试中失利。为此,尼恩对MySQL的缓存机制进行了系统化梳理,包括一级缓存(InnoDB缓存)和二级缓存(查询缓存)。同时,他还将这些知识点整理进《尼恩Java面试宝典PDF》V175版本,帮助大家提升技术水平,顺利通过面试。更多技术资料请关注公号【技术自由圈】。
美团面试:Mysql 有几级缓存? 每一级缓存,具体是什么?
|
18天前
|
算法 Java 数据库
美团面试:百亿级分片,如何设计基因算法?
40岁老架构师尼恩分享分库分表的基因算法设计,涵盖分片键选择、水平拆分策略及基因法优化查询效率等内容,助力面试者应对大厂技术面试,提高架构设计能力。
美团面试:百亿级分片,如何设计基因算法?
|
18天前
|
存储 监控 算法
美团面试:说说 G1垃圾回收 底层原理?说说你 JVM 调优的过程 ?
尼恩提示: G1垃圾回收 原理非常重要, 是面试的重点, 大家一定要好好掌握
美团面试:说说 G1垃圾回收 底层原理?说说你 JVM 调优的过程  ?
|
18天前
|
SQL 存储 关系型数据库
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
老架构师尼恩在其读者交流群中分享了关于 MySQL 中 redo log、undo log 和 binlog 的面试题及其答案。这些问题涵盖了事务的 ACID 特性、日志的一致性问题、SQL 语句的执行流程等。尼恩详细解释了这些日志的作用、所在架构层级、日志形式、缓存机制以及写文件方式等内容。他还提供了多个面试题的详细解答,帮助读者系统化地掌握这些知识点,提升面试表现。此外,尼恩还推荐了《尼恩Java面试宝典PDF》和其他技术圣经系列PDF,帮助读者进一步巩固知识,实现“offer自由”。
美团面试:binlog、redo log、undo log的底层原理是什么?它们分别实现ACID的哪个特性?
|
6天前
|
SQL 关系型数据库 MySQL
美团面试:Mysql如何选择最优 执行计划,为什么?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴面试美团时遇到了关于MySQL执行计划的面试题:“MySQL如何选择最优执行计划,为什么?”由于缺乏系统化的准备,小伙伴未能给出满意的答案,面试失败。为此,尼恩为大家系统化地梳理了MySQL执行计划的相关知识,帮助大家提升技术水平,展示“技术肌肉”,让面试官“爱到不能自已”。相关内容已收录进《尼恩Java面试宝典PDF》V175版本,供大家参考学习。
|
17天前
|
算法 Java 数据库
美团面试:百亿级分片,如何设计基因算法?
40岁老架构师尼恩在读者群中分享了关于分库分表的基因算法设计,旨在帮助大家应对一线互联网企业的面试题。文章详细介绍了分库分表的背景、分片键的设计目标和建议,以及基因法的具体应用和优缺点。通过系统化的梳理,帮助读者提升架构、设计和开发水平,顺利通过面试。
美团面试:百亿级分片,如何设计基因算法?
|
18天前
|
消息中间件 存储 缓存
美团面试: Kafka为啥能实现 10Wtps 到100Wtps ?kafka 如何实现零复制 Zero-copy?
40岁老架构师尼恩分享了Kafka如何实现高性能的秘诀,包括零拷贝技术和顺序写。Kafka采用mmap和sendfile两种零拷贝技术,前者用于读写索引文件,后者用于向消费者发送消息,减少数据在用户空间和内核空间间的拷贝次数,提高数据传输效率。此外,Kafka通过顺序写日志文件,避免了磁盘寻道和旋转延迟,进一步提升了写入性能。尼恩还提供了系列技术文章和PDF资料,帮助读者深入理解这些技术,提升面试竞争力。
美团面试: Kafka为啥能实现 10Wtps 到100Wtps ?kafka 如何实现零复制 Zero-copy?
|
18天前
|
NoSQL Java API
美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试一线互联网企业时遇到了关于Redis分布式锁过期及自动续期的问题。尼恩对此进行了系统化的梳理,介绍了两种核心解决方案:一是通过增加版本号实现乐观锁,二是利用watch dog自动续期机制。后者通过后台线程定期检查锁的状态并在必要时延长锁的过期时间,确保锁不会因超时而意外释放。尼恩还分享了详细的代码实现和原理分析,帮助读者深入理解并掌握这些技术点,以便在面试中自信应对相关问题。更多技术细节和面试准备资料可在尼恩的技术文章和《尼恩Java面试宝典》中获取。
美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?
|
18天前
|
SQL 关系型数据库 MySQL
美团面试:mysql 索引失效?怎么解决? (重点知识,建议收藏,读10遍+)
本文详细解析了MySQL索引失效的多种场景及解决方法,包括破坏最左匹配原则、索引覆盖原则、前缀匹配原则、`ORDER BY`排序不当、`OR`关键字使用不当、索引列上有计算或函数、使用`NOT IN`和`NOT EXISTS`不当、列的比对等。通过实例演示和`EXPLAIN`命令分析,帮助读者深入理解索引失效的原因,并提供相应的优化建议。文章还推荐了《尼恩Java面试宝典》等资源,助力面试者提升技术水平,顺利通过面试。