下面给出我的美团点评面经还有个人的复习方法,原创哟,祝美团点评点评越来越好!原文链接

美团点评

在所有面试里面,我觉得美团点评的是最让人舒服的,也最专业。面试都是在单独的酒店房间里面,绝对安静,而且问的也很专业,态度也很诚恳,等候厅还有吃的喝的,唯一不好的就是通知面试的时间总是在半夜两点。 一面面试官是个女的,一脸严肃,进去后简单的自我介绍后,她就拿到我的简历,在技能栏那里圈出了8个关键词,当时我就虚了。首先先让我手写一个生产者消费者模式,然后开始一个点一个点的问,一共问了1小时40分钟左右,都快虚脱了我。庆幸还是过了。 二面面试官是男的,就问了几个问题就结束了,差不多半小时,我当时都以为我估计要挂了。结果回来半夜两点收到第二天的三面通知,好开心! 三面是平台事业群的boss,很有气质,上来就自我介绍,然后开始面试。三面主要考察项目相关的东西,我详细说了我管理的项目,我的专利和论文。最后简单问了点技术的东西和一些性格相关的问题就结束了,全程聊的很愉快,于是过了三面。 HR面主要问了意向工作地和一些性格相关的东西,15分钟左右就结束了。刚面完的时候我想要是美团点评要我我就来美团点评了,体验超棒! 过了几天就收到offer了,超级开心。国庆后来谈的薪资和地点,事业群是到店综合事业群,坐标上海,虽然是批发价,但是也很开心了。

相关面试题:
一面:
* 面对过程与面对对象的区别
* 了解哪些设计模式,运用场景?
* 访问一个网站的实现原理,越详细越好?
* 写一个OOM,Stackoverflow的案例
* 说说有哪些回收算法?
* 虚拟机有哪些区域,具体存了什么?
* 哪些是GC Root对象?
* Myclass A = new Myclass()虚拟机发生的过程详细说下?Myclass文件存在哪个区域,什么时候会被清除?
* 知道哪些GVM调优,参数是什么?
* 年轻代怎么进行垃圾回收?
* CMS缺点是啥?
* Sychronized实现原理?monitorentor指令存在哪?该指令在class文件中占几个字节?
* Reentrantlock实现原理?
* Sychronized与lock优缺点比较,性能比较?
* final, sychronized, static, transient, volatile说一下?
* volatile怎么阻止指令重排?内存屏障指令是啥?
* sychronized在哪个包,java哪个版本发行的,之后的版本做了什么优化?轻量级锁,偏向锁怎么实现的?锁的标识位存在哪个位置,几个字节?
* 操作系统的线程与java线程有什么关系,怎么对应?
* 用过什么数据库引擎?支持事务吗?Innodb怎么实现事务支持?
* linux怎么查看cpu信息?除了top,如何查看多核的cpu信息?
* 数据库查询非常慢,如何定位到问题?
* threadlocal说下?如果线程消亡后,留下threadlocal逻辑上会有什么问题?
* final会影响指令重排吗?
 class A
 { 
  private final String a;
  public String b;
  A
  {
   a = "abc";
   b = "abc";
  }  
A aa = new A();
那么A.b有没有可能为null
* final初始化顺序问题,下面哪个对?为什么?
class A
{
 final static String A;
 static
 {
  A = "abc";
 }
}
class A
{
 final String A;
 A()
 {
  A = "abc";
 }
}
* 给一个美团点评的log文件,log文件的格式为:年-天-小时 用户名 ip
用awk统计出ip出现次数超过1000的ip。

二面:
* 假定一个数组,先升序再降序,如何快速找到最高的那个数字?
* sychronized介绍下?
* 浏览网页的过程,越详细越好?
* traceroute实现原理?
* sychronized(obj.class)
{
 //多个线程可同时进吗
}
* 虚拟机有哪些回收算法,优缺点?
* 用过哪些设计模式?
* 说说项目,专利,论文?

个人复习方法

7,8月:准备

复习的方向

  1. java编程基础
  2. jvm虚拟机
  3. 并发
  4. SSH框架
  5. 数据库
  6. SQL优化
  7. 操作系统
  8. Linux
  9. 数据结构
  10. 计算机网络
  11. 刷题

并制作了便签放在书桌前,如下: enter image description here

复习的相关书籍

  1. 《java编程思想》
  2. 《深入理解java虚拟机》
  3. 《java并发编程的艺术》
  4. 《Linux命令行与shell脚本编程大全》
  5. 《操作系统:精髓与设计原理》
  6. 《剑指offer》
  7. 《leetcode题解》
  8. 《看透Spring MVC:源代码分析与实践》
  9. 《Spring实战》
  10. 《Head First 设计模式》
  11. 《深入浅出MySQL》
  12. 《数据结构与算法分析:Java语言描述》
  13. 《计算机网络》

主要知识点

Java基础

这部分主要是依赖《java编程思想》,基本上把书的重要章节刷两遍就可以了,一般短的章节一两天可以刷完,长的章节比如并发那块需要三天左右,一定要耐心看下去,收获会不小的(书中关于图形界面和测试相关的可以先不看)。其中,关于常见容器,比如HashMap,Hashtable,ArrayList等要主动去看jdk源码,理解底层具体是怎么实现的

JVM

这部分的细节主要就是靠《深入理解java虚拟机》这本书了,作者写的非常好,很容易理解,也是至少刷一遍

并发

并发这块其实面试的时候问的最多,《java编程思想》,《深入理解java虚拟机》两本书中也有涉及,但是《并发编程的艺术》这书从底层讲述了并发的原理,可以配合其他的书相辅相成的看,而且可以面试的时候展示出对这块了解的深度

操作系统

操作系统由于之前没学过,看起来比较吃力,而且纯看书也比较枯燥,此处重点推荐下coursera上的北大的操作系统公开课,边看视频边辅助看书,轻松不少,也更加容易懂,就是需要花的时间较多,建议利用碎片时间看看

SSH框架

本科的时候只用过Struts2,其他的两个Hibernate和Spring完全没用过,但是根据最新的公司需求来看,Spring是使用需求最高的,Struts2用的已经很少了,因此只需要看Spring相关的就行了,Spring要看的点主要是:

  1. Ioc
  2. Aop
  3. Spring mvc

把上述的点都理解了基本就可以了,《看透Spring MVC:源代码分析与实践》和《Spring实战》这两本书都讲的可以,都能从源码的角度进行分析,达到完全的理解

数据结构

这块我主要就是根据《数据结构与算法分析:Java语言描述》这书来复习的,理解每个数据结构的原理,以及如何自己实现;各个算法的实现,时间空间复杂度的分析;二叉树的递归处理等。基本把书过一遍,之后就通过刷题来巩固了

数据库

数据库这块的复习主要就是《深入浅出MySQL》这本书了,这本其实将的也不深,主要就是对基本命令的复习,数据库这块除了基本的使用之外,还有事务,数据库引擎,范式,索引,优化等方面的知识也很重要,这部分主要是在网上搜博客进行专题复习,效率也挺高

Linux

linux这块主要就是复习基本指令的使用和shell编程了,基本看下《Linux命令行与shell脚本编程大全》这书就基本够了。还需要对常见的工具命令awk,gawk熟悉下,面试的时候考的挺多。 如果之前对linux很不熟悉的话,不建议在这块花太多经历,因为这不是必备技能而且要记的东西太多。如果之前用linux用的很熟基本上复习一下就可以了,这块的使用重点还是看平时吧,短时间突击不了。

计算机网络

基本把TCP/IP那一块的东西重点看下就行了,包括路由,拥塞控制,三次握手等,把书翻一遍,然后根据相关的面经复习即可

刷题

刷题主要就是对前面看书的巩固了,主要推荐牛客网啊,真是太好用了。前面的知识点的选择题都可以上面找到,还给你分类了,特别赞。 刷编程题的话建议先把《剑指offer》这书刷完,刷的时候最后看完题目,自己先做,然后再和答案比较,这样印象较深,直接看答案容易忘。刷完书后可以在牛客网的在线编程那再把剑指offer的题刷一遍,上面原题和测试案例。之后就可以刷刷leetcode了,建议刷的时候可以根据专题来刷,比如一次把动态规划的题刷完,这样会对动规有个更深刻的了解(leetcode题解中作者已经分好类了,感谢@soulmachine) (以上只是我的学习方法,不一定是最合适的,但是我觉得效果还可以,如果有更好的方法也可以交流下。同时分享下期间整理的各知识点的面经,基本都是从牛客网上找的,戳这里 (访问密码:SDopEJ))

9月:各种笔试+面试

9月就是疯狂的投简历了,还好基本上都是线上的,不需要到处跑,投的公司用org-mode来记录,防止到时候忘了笔试2333。 笔试了那么多,挂了一大批,还是有点菜鸡啊,所以下图大部分的更新都是笔试已挂QAQ 到最后能到面试环节的基本也就:华为,京东,趋势科技,美团点评点评,广联达。上述几个公司面完后拿到了offer后,后面好多公司就不参加笔试了,基本就开始玩了。 图片说明