美团后端暑期实习一面面经
美团后端开发实习一面面经
总计七十分钟,面试官人挺好的,全程很有耐心。就是我自己基础太薄弱,很多八股都回答得很模糊,一遇到追问就露馅了。
一、 项目拷打
问了高并发下怎么做防重设计?
系统的 QPS 瓶颈在哪里?如果落库失败怎么处理数据一致性?
二、 计算机网络 & 操作系统
1. HTTP: HTTP 1.1 版本有什么比较重要的新特性?
2. TCP: TCP 链接复用问题:如果电脑开了一个浏览器,先后打开两个相同的网页标签,它们用的 TCP 链接是同一个吗 如果用不同的浏览器打开呢?
3.Linux: 了解 Linux 的线程模型吗?了解多路复用函数(如 select, poll, epoll)吗?
4.OS理论: 操作系统中,“并发(Concurrency)”和“并行(Parallelism)”有什么区别?它们在系统处理器视角下分 别是什么意思?
三、 Java 基础 & 并发编程 (JUC)
1. 面向对象: 封装、继承、多态。其中 protected 修饰符的访问规则是怎样的?
2. Object类: Object 类提供了哪些基本的函数?
3. 线程通信: wait() 函数和 Thread.sleep() 有什么区别?
4. 线程池原理: 线程池的核心参数有哪些?
5. 线程池场景: 核心线程数为2,最大线程数为4,队列容量为10。当任务不断进来时,线程池的分配和创建逻辑是怎样的?
6. 线程池参数设置: 针对 CPU 密集型任务和 IO 密集型任务,线程池大小应该怎么设置?
7. 追问: 为什么 IO 密集型通常设为 2N?如果两个 IO 任务耗时差异很大(比如一个是500ms,一个是50ms),设置原则上有什么差异?
8. 线程池拒绝策略: 了解哪些拒绝策略?
四、 JVM & 框架
1. JVM: JVM 和 GC 了解过吗?平时这些底层知识是怎么学习的?
2. Spring: Spring Boot 和 Spring 框架有什么区别?
3. IOC: 依赖注入时,@Autowired 和 @Resource 有什么区别?它们分别是谁约定/提供的?
4. Web组件: 拦截器(Interceptor)和过滤器(Filter)的执行顺序是怎样的?具体有什么差异?
5. AOP: AOP 动态代理在不同的场景下有哪些实现机制?
五、 数据库 & 中间件 (MySQL, MQ, Redis)
1. MySQL底层: InnoDB 引擎中,主键使用自增 BigInt 和使用 UUID,在性能上有什么差异?
追问: 如果是通过主键精确查询(id = xxx),自增 ID 和 UUID 有区别吗?
2. MQ: 消息队列有多个分区(Partition),但某些场景下必须要保证“顺序消费”,如何实现?(例如 A 消息和 B 消息分别进了不同分区,如何保证顺序)
3. Redis 容量评估: 如果现在上一个新需求,数据结构确定了,数据量级也确定了,怎么评估存储这些数据所需的 Redis 内存空间是否足够?
4. 底层原理: Redis 是用 C 语言写的,你知道怎么计算一个 C 语言结构体(Struct)占用的内存空间大小吗?
六、 算法题
很简单的一个反转链表(LeetCode 206)。
要求: 必须用 递归 和 迭代 两种方法分别写出来。
#发面经攒人品##美团##后端#
总计七十分钟,面试官人挺好的,全程很有耐心。就是我自己基础太薄弱,很多八股都回答得很模糊,一遇到追问就露馅了。
一、 项目拷打
问了高并发下怎么做防重设计?
系统的 QPS 瓶颈在哪里?如果落库失败怎么处理数据一致性?
二、 计算机网络 & 操作系统
1. HTTP: HTTP 1.1 版本有什么比较重要的新特性?
2. TCP: TCP 链接复用问题:如果电脑开了一个浏览器,先后打开两个相同的网页标签,它们用的 TCP 链接是同一个吗 如果用不同的浏览器打开呢?
3.Linux: 了解 Linux 的线程模型吗?了解多路复用函数(如 select, poll, epoll)吗?
4.OS理论: 操作系统中,“并发(Concurrency)”和“并行(Parallelism)”有什么区别?它们在系统处理器视角下分 别是什么意思?
三、 Java 基础 & 并发编程 (JUC)
1. 面向对象: 封装、继承、多态。其中 protected 修饰符的访问规则是怎样的?
2. Object类: Object 类提供了哪些基本的函数?
3. 线程通信: wait() 函数和 Thread.sleep() 有什么区别?
4. 线程池原理: 线程池的核心参数有哪些?
5. 线程池场景: 核心线程数为2,最大线程数为4,队列容量为10。当任务不断进来时,线程池的分配和创建逻辑是怎样的?
6. 线程池参数设置: 针对 CPU 密集型任务和 IO 密集型任务,线程池大小应该怎么设置?
7. 追问: 为什么 IO 密集型通常设为 2N?如果两个 IO 任务耗时差异很大(比如一个是500ms,一个是50ms),设置原则上有什么差异?
8. 线程池拒绝策略: 了解哪些拒绝策略?
四、 JVM & 框架
1. JVM: JVM 和 GC 了解过吗?平时这些底层知识是怎么学习的?
2. Spring: Spring Boot 和 Spring 框架有什么区别?
3. IOC: 依赖注入时,@Autowired 和 @Resource 有什么区别?它们分别是谁约定/提供的?
4. Web组件: 拦截器(Interceptor)和过滤器(Filter)的执行顺序是怎样的?具体有什么差异?
5. AOP: AOP 动态代理在不同的场景下有哪些实现机制?
五、 数据库 & 中间件 (MySQL, MQ, Redis)
1. MySQL底层: InnoDB 引擎中,主键使用自增 BigInt 和使用 UUID,在性能上有什么差异?
追问: 如果是通过主键精确查询(id = xxx),自增 ID 和 UUID 有区别吗?
2. MQ: 消息队列有多个分区(Partition),但某些场景下必须要保证“顺序消费”,如何实现?(例如 A 消息和 B 消息分别进了不同分区,如何保证顺序)
3. Redis 容量评估: 如果现在上一个新需求,数据结构确定了,数据量级也确定了,怎么评估存储这些数据所需的 Redis 内存空间是否足够?
4. 底层原理: Redis 是用 C 语言写的,你知道怎么计算一个 C 语言结构体(Struct)占用的内存空间大小吗?
六、 算法题
很简单的一个反转链表(LeetCode 206)。
要求: 必须用 递归 和 迭代 两种方法分别写出来。
#发面经攒人品##美团##后端#
全部评论
牛的 兄弟
666
相关推荐
点赞 评论 收藏
分享