美团到店事业群(一二面)已oc
小插曲
本来自己 3.15 就入职了深圳的一家中厂,然后美团21号约一面,我直接回复时间不合适,想着找到一家中厂就可以了。没想到入职后发现部门并不合适,很后悔21号没有约面。就在我懊悔之时,美团一面面试官直接打电话给我问我什么时候有时间,我立马说29号可以。所以就开始了一面。
现在回想,真是千钧一发,改变命运。如果我当时下班走在回家的路上,拒绝了美团的面试,不知道我的未来如何了。。。
时间线
投递:02.27
笔试:03.18
一面:03.29
二面:04.04
Offer:04.06
美团一面
时间:03.29,1 h 19 mins
概括:从项目开始,一直深挖,随后根据项目拓展八股,问到我不会或者面试官认为可以为止。
我的项目主要是 Java 项目 + golang 项目
- 开头先询问我在校怎么学习的。我回答逃课看书,随后也解释了我从来没有挂过科的缘故,所有科目80以上,向面试官保证不考研
- 拷打我 goKV 项目:
- 项目背景,项目架构。仿照redis实现的非关系型数据库,支持高并发访问等等特性
- goKV 高并发的实现原理,底层原理,java concurrentHashMap
- Redis cluster 集群模型:集群实现的原理,具体如何将一个key存放到集群上,其中的hash原理、哈希槽、16384、master-slave等等内容
- 一致性 hash 算法原理
- 对比 Redis 的集群模型与自己的 goKV 的相同点、不同点,并解释自己为什么这样设计
- goKV 项目中集群模式下 TCC 事务的实现,为什么需要 TCC 事务,如何实现(try、comfirm、rollback)
- TCC 事务的协调者
- 客户端 pipeline 网络模式,为什么这么设计,这样设计有什么优点
- Redis 数据结构,hash、跳表、string
- 面试官称赞我 Redis 底层实现很好,从这里开始,开始拷打 Redis 八股:
- Redis 缓存雪崩、缓存击穿原理,如何处理、解决这些问题
- Redis 热key问题。检测热点数据,找到热点数据后处理。
- 过滤违法请求redis的ID。布隆过滤器。
- 因为我提了一嘴限流处理,所以拷打我限流算法:
- 限流算法实现。滑动窗口算法,怎么实现
- 滑动窗口限流算法的特点,你如何实现
- Redis Zset Lua 脚本滑动窗口算法实现。具体结合我自己的项目回答
- 单窗口滑动窗口实现,那么如何实现多窗口的滑动窗口限流算法呢?
- 校园消息推动平台项目
- 介绍项目背景,项目架构。(项目介绍很重要,一定要让面试官明白你在干什么)面试官随后根据我的介绍简单总结了一下我的项目,说明他听懂我的项目核心功能了!
- Nacos 注册中心、配置中心。为什么用Nacos,在项目中扮演什么角色?
- Nacos 注册中心底层原理实现。NameServer、服务请求方、服务提供方,三方如何交互
- Nacos 配置中心底层实现原理
- 配置更新了怎么同步到服务订阅者,具体步骤?长轮询。
- RocketMQ 在项目中的角色,起到什么作用?微服务解耦、削峰
- RocketMQ 为什么那么快?底层原理实现。commitLog、MapperFile,解释底层顺序写的原理。底层异步刷入。
- MQ 使用场景。(解耦、削峰、事务消息、顺序消息)
- MQ 怎么保障消息不丢失。消息生产者、MQ 存储、消息消费者,三个方面讲述
- 面试官称赞我 MQ 理解很深
- MySQL 拷问
- InnoDB 了解,底层实现,B+ 树结构
- InnoDB 表锁、行锁、临键锁、间隙锁、意向锁
- InnoDB 隔离级别,实现原理
- 索引
- Hash 索引、B 树索引、B+ 树索引比较,分别介绍各自场景,时间复杂度
- 联合索引,abc 联合索引,怎么使用才能用到索引。a、ab、abc
- MyBatis $ 和 # 的区别。(不会,太久没用 MyBatis 了)
- MySQL 优化
- 慢SQL优化流程。(开启慢SQL日志、explain、profiling、trace)
- 怎么避免写慢SQL。怎么加索引,索引失效的场景,怎么避免
- JVM 相关
- JVM 异常。OOM 排查,处理方式。(开启 dump 日志,分析日志,确定是内存溢出、内存泄露,或者是fullGC异常)
- 内存泄漏介绍,举个开发例子介绍
- JVM 大对象。什么才叫大对象。(占用连续内存大)
- Java 中什么对象容易形成大对象。(使用连续内存的对象:数组、连续集合list、String等等)
- Java 多线程
- 线程池。7大参数说明,分别介绍它们的作用
- Java 锁。sychronize、ReentrantLock、ReentrantReadWriteLock、CopyOnWriteLock
- 分布式锁。基于 Redis 实现的分布式锁,介绍原理。
- 询问安信证券的实习经历,介绍自己在里面做了什么。当时我在里面就是干杂活,涵盖Java后端开发、测试、大数据处理多个内容。面试官没有深入问,因为我解释了是在里面干杂活。
- 我当时由于已经入职了一家深圳的中厂,面试官看到我没有写到简历上,所以深入了问了一下:
- 介绍自己从入职以来干了什么,所处的部门主要工作。
- 问我怎么学到这么多知识的。项目 ---> 博客 ---> 经典书籍
- 最近学什么?
- 算法题:
- 合并两个有序数组
美团二面
时间:04.04,44min
概括:很像KPI面,没有问得很深。搞得我emo了两天,以为挂了。。。
- 自我介绍。实习经历介绍
- 实习经历介绍
- 安信实习
- Kyligence实习
- OAuth2.0 原理,结合目前的实习项目详细介绍(因为我第二段实习主要做认证授权项目)
- 实习经历对我最大的收获
- 第一段实习。(小白 ---> 熟悉公司流程)
- 第二段实习。(因为第一段尽力,所以我才可以在目前快速上手)
- 实习的时候,学校学不到的东西,简单介绍一下
- 代码规范、代码评审、代码评审、项目打包部署
- 重构代码不能忽虑原有的 API,不能影响到原有的项目能力
- 后端开发需要掌握什么技术栈,大致讲一下
- Java 基础,Java Stream 流,SpringBoot,mysql,redis,sql 书写规范
- 消息中间件、JVM 调优
- 代码规范
- 开发沟通、需求沟通
- 对服务治理有什么了解
- 微服务治理,spring cloud,rpc 调用(openfeign、dubbo)
- 负载均衡,限流(Sentinel、Hystrix)
- 网关层,spring gateway
- 又问我 Mybayis $ 和 # 的区别,还是答不出来。。。
- 一面飘了。。。
- Java 多线程
- 创建线程的方式
- 什么场景里使用多线程。我用自己的项目做介绍
- 为什么要在自己的项目里面这样用?解决了什么样的问题?效果如何?
- IDEA 实操代码
- 两个线程,A线程打印 1 3 5 7,B线程打印 2 4 6 8
结语
感慨万千,总算找到暑期实习了!!!
#美团##暑期实习##软件开发2023笔面经#