首页 > 美团二面
头像
岑昕沐
编辑于 09-14 19:14 辽宁
+ 关注

美团二面

写在前面

那什么,uu们别光收藏不点赞,这可是xd一个一个字手敲的!!!!

-------------------------

感谢一面大哥不杀之恩,岑某若能入职必定涌泉相报...... 

-------------------------

被二面杀了,xdm秋招加油吧

面试

  • 开篇经典环节-自我介绍
  • 来到了part2,项目经历
  • 终于到了我最熟悉的part3,基础知识询问
  • 介绍一下 JVM 的内存模型:
  • 堆,方法区,虚拟机栈,本地方法区,程序计数器
  • 堆:
  • 放对象的地方,class对象和new的对象(我的对象在哪里?TAT)
  • 方法区:方法区是一个逻辑概念,1.6是永久代实现,1.7是堆和永久代实现,1.8是元空间和堆实现。
  • 会存放一些常量池,字符串常量池等,有的池子还会缓存一些基本类型的封装类型的数据,比如Integer就会缓存-128-127的数据,在使用该范围内数据会直接从缓存里面拿而不是new一个新的。
  • 这里面对于方法区和堆具体请看图片吧,能理解就理解,理解不了自己再搜一下吧,我懒得改了 略略略

  • 虚拟机栈:
  • 存储结构栈帧,每一个栈帧就是一个方法的执行
  • 局部变量表,内部的计数器,动态链接(面试忘了),返回地址。
  • 本地方法区:
  • native方法,就是比jvm还底层的c的方法。
  • 程序计数器:
  • 仿cpu结构的一个东西,用来决定下一个该执行什么代码
  • 紧随其后,常见的OOM有哪些:( 总结来讲,只要没有限制直接把JVM虚拟机干爆的,都会抛出OOM异常)
  • 虚拟机栈:
  • 固定大小:申请不到栈帧报 StackOverflow
  • 无限大小:申请不到栈帧报 OutOfMemory
  • 堆:忘记是不是能固定大小了
  • jvm内存满了,对象分配不到堆了就会报OutOfMemory
  • 方法区:(面试官提示,感谢)
  • 方法区里面的常量池也是会不断加入数据的
  • 一直调用string.intern()方法会不断加字符串到字符串常量池导致OOM
  • 反射加载类:(要不是回去看我又忘掉了QAQ)
  • final, finalize, finally之间的区别
  • final定义的对象,指针无法修改,指向了固定的内存起始位
  • finalize:这个可能是垃圾回收那个重生方法吗,我记不住了没答
  • finally:try、catch、finally,必定会执行的语句块
  • 线程池有哪些参数:可以模拟现实巧记一下的
  • 核心线程数
  • 最大线程数
  • 额外线程存活时间
  • 存活时间单位
  • 阻塞队列(四种,我记得是,但好像只见过三种)
  • 线程工厂(面试忘了woc,写到这才想起来)
  • 拒绝策略(四个)
  • 线程池使用规范:(这我怎么知道?我只能扯一些我了解的东西了)
  • 要用ThreadPoolExcutor创建线程池,不要那三个写好的
  • 为什么?
  • sigleton和fixed使用的都是无限队列,可能会OOM,拒绝策略也不会生效
  • cached没有一直存活的线程,有任务才创建,任务也不会堆积(这个是它用的阻塞队列的特性)
  • 除了队列外,还有其他的建议吗?(???这我怎么知道,绞尽了脑汁)
  • cpu密集型:N+1
  • IO密集型:2*N
  • 解释了一下为什么,你们自己搜一下吧,懒得手打了
  • 死锁的四个条件:(说实话名词真没记住,倒是破环死锁的三个元素我倒是记得清清楚楚:前进、互斥、有限等待)
  • 互斥
  • 无法剥夺
  • 请求和保持
  • 循环等待
  • 常用的锁有哪些(顺手问了下项目,之前的锁,当时被整懵了,忘了实现原理了,面完才反应过来项目当时的情况可重入锁解决不了问题)
  • JVM的synchronized
  • Concurrent里面Lock类下的ReentrantLock
  • 提醒了我一下,我项目当时的设计确实是有问题,二次rpc调用的话无法保证路由到同一个机器,jvm层级的锁会有问题的,果然经历面试才会发现问题哈!!!
  • 上面的锁谈到了Redis实现分布式锁,那么Redis的持久化都有什么,区别呢
  • RDB:瞬时数据快照
  • AOF:追加操作命令
  • 混合:AOF重写时先RDB,然后把生成RDB时对Redis的操作用AOF的形式追加到文件中,所以叫混合模式
  • 一致性hash:
  • 我只知道它是个环状hash,新增节点或者节点宕机不用将全部数据都hash一遍,只需要rehash区间数据即可
  • (面试官提示,确实学到了)他的主要应用场景是针对于有状态服务新增或下线节点
  • 一致性hash的算法了解吗?(???谁会看啊?,有大佬可以在下面贴个链接我有时间过去瞅瞅吗)
  • 没了解过,这个真的没法扯了
  • 经典缓存三板斧:(相信各位牛油果们都比较熟悉了)
  • 缓存穿透
  • 缓存击穿
  • 缓存雪崩
  • 介绍Spring的IOC,还有作用域
  • 就是把对象实例化和初始化操作交给容器管理
  • 作用域(原来不止两个,面试官提示了一个,但他说一般这两个就够用了)
  • singleton
  • prototype
  • session(一些web相关的作用域)
  • AOP:经典问题
  • 应用场景:日志等非业务逻辑切面,便于维护和弱耦合
  • 实现方式
  • jdk的继承接口(我记得是反射执行invoke方法来着)
  • cglib的ASM字节码织入(效率更高,调用类文件比反射快)
  • AOP的限制:哦对,上述应用场景少了个事务
  • 我只能想到事务失效的情况,最常见的,类调用自己内部加了事务注解的方法,由于是原本对象调用而不是代理对象调用,事务根本不会生效

算法

阿巴阿巴

出了一道题,他说我也没做过,我们俩一起看看,然后给我理了一下思路,指出是一个状态变换的题,还把关键点给我指了一下,A了之后问要不要解释一下,他说你刚才思考的时候自言自语已经解释过了就不用了......

写在后面

由于和上一个面试官同部门,一些东西在上一个面试官那问过了,就问了问我还需要学点什么以及接下来的面试流程之类的。面试氛围还不错,说一些场景的时候还把面试官逗笑了hhh

------------------------------------

上面的八股是我个人浅显的理解,希望有大佬可以帮我指正以下,岑某不胜感激,谢谢uu们。^_^~

------------------------------------

好了uu们,泡池子人才库了,唉...有缘再见~~~

全部评论

(8) 回帖
加载中...
话题 回帖

近期热帖

近期精华帖

热门推荐