美团金融面试总结(目测已挂)

面试之前挺紧张的,觉得自己准备充分,又觉得自己没准备好。

一面:

首先自我介绍,我简单说了一下自己的情况以及做过的项目。
1、项目结构
我把麦座系统的结构画了一遍,包括与大麦网的对接。
2、如何解决数据一致性
我说麦座系统是单机服务,不涉及到数据一致性,然后说了一下自己对解决方案的理解。
3、多线程的一些问题。
voliate关键字,synchronized关键字,因为仔细研究过,所以答的还不错,从原子性可见性顺序性分析了一通,分析了synchronized锁的转变。
线程池的结构,主要参数,使用的队列(无界和有界),拒绝策略有哪些(说出三个,有一个忘了。),执行的过程(对核心线程,最大线程,阻塞队列的优先级判断)
ReetrantLock,与synchronized的区别,从类型,锁机制上分析一下,两者怎么选座,我说了一下自己的理解。
ThreadLocal,我说没用过,说了一下自己的理解,线程局部变量,举了数据库连接可以用threadlocal。
线程到这就结束了,这块之前看的挺多,所以答的还不错。
4、spring
拦截器,过滤器有什么作用和区别,以及作用的顺序,dispatcherservlet的作用,如何转发请求。
这块答的挺差的。
5、数据库
mysql的默认隔离级别,可重复读,什么是可重复读。
脏读是什么,幻读是什么,Mysql使用的锁。
MVCC是如何实现的
有些记混了,答的感觉还可以。
6、分布式相关
thrift的结构,如何实现远程调用,配置中心,
service调用dao层如何实现短超时时间,
redis如何实现安全的更新-覆盖。
zk和dubbo我说没用过就没问。
7、项目相关
如何实现抢票,麦座与大麦的数据一致性,
同步请求和异步请求的实现,我说了支付回调的实现,
对现有系统改造的想法。
项目相关回答的还可以。

一面聊了一个小时左右,最后我问了一下对我的评价:长短板明显,对java基础掌握的很好,储备性知识懂得比较多,但是对于自己常用的服务反而理解不深,spring和mysql掌握的不够好。

二面

二面应该是技术主管。
也是先自我介绍,然后问我如何实现抢票的场景。
如何实现三个线程顺序执行。一时没想起来,我说可以使用sleep(其实应该用join()),
double-check的安全实现,加volatile。
mysql如何实现主从复制,没做过说不出来。
为什么要用thrift,为什么可以跨平台和跨语言,客户端如何知道服务端的状态。
网络七层协议都是干什么的,http和tcp的三次握手有什么区别
有没有看过源码,我说看过hashmap和concurrentHashmap的。
有没有看过spring的源码,没有(我猜主要是想问这个)
hashmap在jdk1.8的实现,数组+链表+红黑树,我把put的源码说了一遍。

二面差一些,很多都答的不够理想。
最后回去等通知,他们需要讨论一下。应该是挂了。

总结

之前的准备中,拼命的看了一些zk,dubbo,hsf的一些东西,结果面试官一听没有实际用过就不问了,反而问thrift的比较多。对java基础的东西看的较多,但是对自己平常使用的反而关注太少,比如spring,并没有研究的特别深。
准备过程中进入了一个误区,太过于追求广度,忽略了深度,其实面试官更关注的是你日常工作中实际用到的东西的掌握情况,没用过的东西不会也正常,了解一下就行,工作中还可以学。但是像spring和mysql这些掌握不好的话,基本就没戏了。
这次面试,自己准备的大部分东西都已经表现出来了,但是还是不理想,说明确实是自己的水平不够,可能比初级和中级好一些,但是要达到高级或者自身,还需要继续学习。
下次面试前的重点,会放在对spring,mysql,thrift,jpa这些工作中用到的技术进行深入学习,其他方面了解即可。

你可能感兴趣的:(美团金融面试总结(目测已挂))