四面美团开发岗,成功斩获 offer,这份面经总结终结篇看完就是血赚
1、从 10 万个数中找最小的 10 个,时间复杂度分析(最大堆,考虑内存)
2、从一个有正有负数组中找连续子数组的最大和,时间复杂度分析(动态规划)
3、满二叉树第 i 层有多少个节点,n 层的满二叉树共有多少个节点
终于到我提问环节了
1、你们是什么部门(他说是核心部门,大数据研发)
2、我对高并发和负载均衡挺有兴趣的,但是我平时在学校也没有这个环境让我在这方面有所体验,那你建议我目前可以怎么学呢(他说这确实是不太好学,只能看些理论和别人的博客,以后工作中才能慢慢学)
3、中间件具体是做什么的,是解决高并发和负载均衡吗(他说差不多是的,然后他说我们这个部门不是中间件,是大数据部门啊,我说恩我知道)
最后没啥问题了,他让我保持电话畅通。
这一面面完,口干舌燥,我一度怀疑他可能不知道我是在应聘实习生的岗位。有太多要总结的了,放在总结的地方一起讲吧。
美团技术三面 25 分钟
面试官说是他是另外一个部门的,需要进行交叉面试。
1、MySql 优化
2、说下项目做了些什么,架构之类的
3、在 collabedit 上在线写代码,题目很简单是编程之美上的原题,一个有序的整数数组,输出两个数,使它们的和为某个给定的值。之前做过很快写好,然后给他讲思路。他继续问如果数组无序怎么办,先排序。4、两个文件,每个文件中都有若干个 url,找出两个文件中相同的 url(用 HashMap)
这一面挺简单的,只是增加之前面试没有过的在线写代码环节,collabedit 后来我才了解,像 facebook 一些互联网公司远程面试都会用这个在线编辑器写代码,就是文本文档写,没有提示,不能编译运行,跟白板写一样。平时练练手就好。
美团技术 HR 四面 30 分钟
三面面试官说他那就是终面,说我过了等 hr 联系我。万万没想到半小时后的 hr 面居然也是技术。
1、自我介绍,都四面了还自我介绍?!我还以为是单纯的 hr 面,所以介绍的都是我的性格和生活方面的,结果并不是。
2、问项目,问的特别特别细,技术细节,还有遇到什么问题,怎么解决的,做项目有没有人带,怎么跟别人沟通的。
3、数据库优化,如果数据库一个表特别大怎么办 数据库优化我就讲了之前讲过很多遍的点,他问一个表特别大怎么办:大表分小表,怎么实现:使用分区表
4、问研究生的科研题目,为什么选这个题,看了一些什么论文(细到问我那些论文是发表在什么期刊上的,作者是哪所学校的),为什么要选这个算法,怎么优化的,实验结果怎么跟别人作对比的,为什么比别人的算法好(一个个问题不断砸过来,我猜我说的那些专业名词他应该不太懂,只是判断一下是不是我做的而已。。)
5、确定实习时间 这一面确实让我感到有压迫感,项目是本科做的,挺久了,一些技术细节上也没太总结,所以问细了我只能连想带编,嘿嘿。科研方面倒还好,上个学期都在弄这个,一些算法的实现和改进、对比都还记得比较清楚,回答的挺流畅的,可能这真的就是技术型的 hr 面吧。
以上就是他的面试经历了,他事后也找我聊过,总的来说,他表达的意思大概是:在进行过系统学习后一定要多刷面试题!!!
但其实在我看来,基础知识是比较重要,但是并不会重要到对面试起决定性作用,因为对于企业来说,并不需要你能够记住多少知识,哪怕你一点都记不住,但是能够实现产品的需求,并能够说明其中的来龙去脉,说白了就是看你的动手操作能力和业务能力。如果你是一个死记硬背,记下来一大堆理论知识,但是到实际操作的时候,那些理论知识往往只是纸上谈兵,不过在面试前刷刷题还是有必要的。(有必要但不绝对)当然应届生还是要多刷题的,因为应届生在面试之前,大部分都有笔试,刷题还是很有必要的。
前段时间我闲下来也整理过一些面试题,现在把它分享出来,希望能对各位读者老哥有些许的帮助。
(篇幅限制只能展示部分面试题及答案出来)感兴趣的话下面会有获取方式哈
数据库
请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?
MySQL 中有哪几种锁?
Redis 是什么?两句话做一下概括
Redis 实现原理或机制
什么是 MongoDB
MongoDB 的功能与适用场景
Redis、memcache、MongoDB 对比
开源框架
Spring IOC 如何实现
说说 Spring AOP
Spring 的单例实现原理
Spring MVC 运行流程
说说业务中,Netty 的使用场景
Netty 线程模型
说说 Netty 的零拷贝
微服务
前后端分离是如何做的
微服务哪些框架
说说 RPC 的实现原理
说说 Dubbo 的实现原理
说说 CAP 定理、 BASE 理论
如何应对微服务的链式调用异常
如何拆分服务
消息中间件
activemq 的几种通信方式
activemq 如果数据提交不成功怎么办(消息丢失)
**acti
veMQ 发送消息的方式有哪些?**
为什么不应该对所有的 message 都使用持久化机制?
向不存在的 exchange 发 publish 消息会发生什么?向不存在的 queue 执行 consume 动作会发生什么?
RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
乐观锁与悲观锁
何谓悲观锁与乐观锁
两种锁的使用场景
乐观锁常见的两种实现方式
乐观锁的缺点
CAS 与 synchronized 的使用情景
设计模式
请列举出在 JDK 中几个常用的设计模式?
什么是设计模式?你是否在你的代码里面使用过任何设计模式?
Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
使用工厂模式最主要的好处是什么?在哪里使用?
举例说明什么情况下会更倾向于使用抽象类而不是接口?
BATJ 必考面试题
Java
大数据
pythoh
多线程
现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
什么是不可变对象,它对写并发应用有什么帮助?
什么是竞争条件?你怎样发现和解决竞争?
你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
JVM
内存模型以及分区,需要详细到每个区放什么
堆里面的分区:Eden,survival (from+ to),老年代,各自的特点
GC 的两种判定方法
java 类加载过程?
什么是类加载器,类加载器有哪些?
简述 java 内存分配与回收策略以及 Minor GC 和 Major GC
Springboot
什么是 Spring Boot?
Spring Boot 有哪些优点?
Spring Boot 中的监视器是什么?
如何在自定义端口上运行 Spring Boot 应用程序?
如何集成 Spring Boot 和 ActiveMQ?
如何使用 Spring Boot 实现异常处理?
Linux
Linux 中主要有哪几种内核锁?
Linux 中的用户模式和内核模式是什么含义?
怎样申请大块内核内存?
用户进程间通信主要哪几种方式?
通过伙伴系统申请内核内存的函数有哪些?
评论