首页 > 美团Java工程师社招面试经历
头像
牛客895370106号
编辑于 2020-08-09 21:01
+ 关注

美团Java工程师社招面试经历

笔试

主要是算法和数据结构以及架构设计方面

1、自己实现一个hashMap

2、并发编程中的生产者消费者模式代码。

3、字符串的一道算法题,就是位图法。

4、写一个自己熟悉的架构图


面试

1、jdkCollection包,

2、还有就是之前在公司所做项目的部署思想。

3、java并发锁机制。

1)偏向锁:JDK1.6提出来的一种锁优化的机制。其核心的思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就是说,若某一锁被线程获取后,便进入偏向模式,当线程再次请求这个锁时,就无需再进行相关的同步操作了,从而节约了操作时间,如果在此之间有其他的线程进行了锁请求,则锁退出偏向模式

2)轻量级锁:如果偏向锁失败,Java虚拟机就会让线程申请轻量级锁,轻量级锁在虚拟机内部,使用一个成为BasicObjectLock的对象实现的,这个对象内部由一个BasicLock对象和一个持有该锁的Java对象指针组成。BasicObjectLock对象放置在Java栈帧中。在BasicLock对象内部还维护着displaced_header字段,用于备份对象头部的Mark Word

3)重量级锁:当轻量级锁失败,虚拟机就会使用重量级锁。重量级锁在操作过程中,线程可能会被操作系统层面挂起,如果是这样,线程间的切换和调用成本就会大大提高。

4)自旋锁:它可以使线程在没有取得锁的时候,不被挂起,而转去执行一个空循环,若在若干个空循环后,线程如果可以获得锁,则继续执行。若线程依然不能获得锁,才会被挂起。使用自旋锁后,线程被挂起的几率相对减少,线程执行的连贯性相对加强。因此,对于那些锁竞争不是很激烈,锁占用时间很短的并发线程,具有一定的积极意义,但对于锁竞争激烈,单线程锁占用很长时间的并发程序,自旋锁在自旋等待后,往往毅然无法获得对应的锁,不仅仅白白浪费了CPU时间,最终还是免不了被挂起的操作 ,反而浪费了系统的资源。


4、为什么要用读写锁而不用synchronized这种同步锁?

5、事务隔离性的理解,为什么会有脏读,可重复读,提交读等。

6、spring的事务管理是如何实现的,编程式如何实现,aop式如何实现,动态代理的原理是什么?

7、事务的传播性的理解。

事务传播性就是事务中还包括另外的事务,事务之间是怎么相互影响,然后如何执行的,这就是事务传播性


8、最后谈谈为什么离职,期望薪资什么的。


更多模拟面试

全部评论

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

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐