美团一面
昨天晚上8点面得。总结下,面试的小哥哥人很好哟,很温柔,我不太会的地方没有刻意刁难,还一点一点整理思路给我讲,真的很不错。
1、自我介绍之后,讲了一下SSM的一个项目,有几张表,有日志表么?每张表涉及到的数据量,数据库中使用的是什么引擎?知道哪几种引擎?Myisam和Innodb的区别是什么?数据库优化会从那些方面考虑(我说索引),讲一下聚集索引和非聚集索引的区别和底层实现,了解事务么?说一说事务,为什么要使用事务?事物的几种隔离级别?mysql使用可重复读仍然有可能会导致幻读么(我说,会,所以需要使用MVCC),面试官说除了MVCC还有其他的办法么?为什么要使用SSM框架?Spring的几大特性是什么?AOP主要是用来解决什么问题的?底层是通过什么实现的(我说动态***)?动态***有哪几种(jdk动态***和CGlib)?你知道java中的容器类有哪些?(List、Set、Map以及它们之下的)说了Vector是线程安全的,问怎么实现线程安全的?你认为怎么样算是线程安全?为什么需要保证线程安全?保证线程安全有几种方式(你能想到的)(我说加锁synchronized、lock、ReetrantLock、volatile、乐观锁、悲观锁、共享锁、排它锁、可重入锁等)知道重量级锁相关的么?volatile是干嘛的?知道CAS么?实现原理以及过程。使用过线程池么?线程池的一些常用参数有哪些?线程池的拒绝策略了解么(我没答上来,面试官说没关系,这部分不是很重要),接着刚刚容器类,了解HashMap么?(我讲了jdk1.7和jdk1.8区别和底层实现,为什么jdk1.8底层要采用红黑树我说加快查询速度,时间复杂度为o(logn),之前是o(n))线程安全么?为什么线程不安全?如果要实现HashMap的线程安全,需要怎么办(我说用HashTable或者CurrentHashMap,面试官说假如不用这两个,只有HashMap,我不太会,面试官提示用带参的构造方法,初始化一个容量稍微大一点的HashMap,使其不扩容就可以保证线程安全)
2、第二个项目里边用到了关于kafka、zookeeper的内容,问kafka有哪几种组件?kafka相比其他消息队列为什么吞吐量这么大?kafka从消息生产者到消费者这整个的流程是怎么样的?Redis在项目里边是用作缓存还是消息队列?过程是怎么样的?用到了Redis的哪几种数据结构?Redis和Mem***d的区别,为什么不用Mem***d(答Redis支持的数据类型比较多且支持持久化)Redis有几种持久化方式?(AOF和RDB)Redis的事务了解么?Redis的哨兵模式和Redis集群各解决什么问题?这两种方式可以混合在一起使用么?
3、最后问了实习的话什么时候可以过去?可以实习多久?然后我问面试官主要用到哪些技术栈?还有总共几面,面试官说总共3面技术面+1面HR,不过第三面涉及的技术可能不是很多,他说如果后续通知二面的话会在下周二之前通知。
#面经##实习##美团##Java工程师#