美团面试,问的贼细~

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

1.自我介绍

自我介绍讲明白三个点:

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

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

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

3.TCP和UDP的区别?

  1. TCP 有连接;UDP 无连接。
  2. TCP 可靠;UDP 不可靠。
  3. TCP 基于数据流;UDP 基于数据报。
  4. UDP 比 TCP 更高效。
  5. TCP 发送缓冲区、接收缓冲区;UDP 只有接收缓冲区,没有发送缓冲区。

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

保证可靠性的机制:

  1. 确认应答。
  2. 超时重传。
  3. 连接管理(三次握手和四次挥手)。
  4. 拥塞控制。
  5. 流量控制。

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

可靠性主要依据:

  1. 连接管理
  2. 确认应答
  3. 超时重传

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

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

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

原因有两个:

  1. TCP 本身自带确认应答。
  2. TCP 有接收缓冲区的任务可能没执行完。

8.GET和POST请求的区别?

主要区别:

  1. 隐私性:通常情况下 POST 的隐私性高于 GET。
  2. Restful 规范:GET 用于查询;POST 用于写入操作。
  3. 传参的大小不同:GET 传参有大小限制,而 POST 没有。

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

不同的浏览器是不同。 早期版本通常是 2k4k,现在是 4K8k。

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 类图:

  1. 接口类
  2. 真实类(被代理的类)
  3. 代理类

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

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

Java 有以下 8 大数据类型:

  1. 整型:byte、short、int、long
  2. 浮点类型:float、double
  3. 字符类型:char
  4. 布尔类型:boolean

15.int是几个字节?

4个字节。

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

区别:

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

使用场景:

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

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

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

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

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

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

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

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

csharp 复制代码
select count(*) from users where gender=1;

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

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

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

22.HashMap的底层实现原理?

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

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

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

本文视频解析

飞书链接:r6b93q3exi.feishu.cn/docx/GBJPdy...

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

相关推荐
AI人工智能+电脑小能手5 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
红尘散仙6 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
来杯@Java6 小时前
图书管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·mybatis·课程设计
卷毛的技术笔记7 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥7 小时前
匿名函数 lambda + 高阶函数
java·python·算法
会编程的土豆7 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木7 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
Cosolar7 小时前
从零写一个 Attention Is All You Need
人工智能·面试·架构
adrninistrat0r7 小时前
Java调用链MCP分析工具
java·python·ai编程
喵个咪8 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm