面试官是个小姐姐,和以前的面试官不大一样的地方是提前看了一下简历。
开场先介绍了一下是美团支付部门,负责什么业务,然后因为提前看了简历就没让自我介绍。然后就问了一下秒杀项目的情况,问了项目中什么背景下引入的redis和消息队列,都了解哪些消息队列。我说就用过rocketmq,倒是有看到过kafka,对他们的区别就知道消息重试机制不同,rocketmq是通过一个重试队列,kafka会类似tcp一样重传窗口中所有消息。然后问了一下有没有考虑过消息队列挂了的情况下如何保证redis和数据库的库存数据一致性,想了一下没啥想法,就答了只有保证消息队列的高可用了...
然后开始八股文QA...基本上就是一问一答,java,数据库,计网,操作系统的八股文挨个问...
既然你平时用的主要是java,那就先说一下HashMap吧,说一下HashMap的结构,HashMap是线程安全的吗,那在多线程环境下如何解决呢?concurrentHashMap的原理是什么样的?你刚刚说了concurrentHashMap在1.7和1.8的时候的不同,HashMap1.7和1.8的区别了解吗?HashMap采用头插法为什么会有线程不安全的问题呢?
深拷贝浅拷贝有了解吗?如何实现深拷贝呢?object的clone方法有了解吗,默认实现是什么?
内存泄露有了解吗?那ThreadLocal中内存泄露是如何解决的呢?ThreadLocal的原理能说一下吗?java中线程之间同步有哪些方式呢?说了一下object的wait和notify,Condition的await和signal,面试官不是很满意,问对java中的锁或者保证线程安全的方法有了解吗?那能说一下volatile的理解吗?那synchronized和volatile有什么区别呢?
再聊一下操作系统吧,什么是死锁有了解吗?死锁的几个条件是什么?满足这几个条件就一定是死锁吗?活锁有了解吗?(没有,能介绍一下吗?没事,不了解就算了)线程和进程的区别了解吗?操作系统中的堆栈了解吗,他们有什么区别呢?那我们有时会遇到栈溢出,你平时在什么场景下遇到过?(就递归没写好的时候遇见过StackOverflow)怎么排查呢?(就见过递归的场景,那就检查递归方法的逻辑呗)
然后开始聊计网,说一下tcp保证可靠传输和有序传输的策略?背了一下通过确认应答、超时重传、拥塞避免等八股,然后问需要说一下三次握手吗,面试官说不用了。有序传输不大理解,就说了一下滑动窗口能保证下一个窗口的数据包肯定是在前一个窗口之后到,但一个窗口里的数据包没法保证一定是fifo到。
再问一下数据库,数据库的隔离级别都有哪些?这些隔离级别下都会有哪些问题?数据库的索引的作用是什么?索引越多越好吗,为什么?一般在什么样的列上加索引呢?
到这就差不多40分钟了,然后面试官说写一道题吧,十分钟。(心想这要是dp十分钟够干啥的啊...怕不是凉凉了
然后出了一道二叉树的层序遍历....有什么问题吗?(这个要自己实现树的数据结构,自己写测试样例吗)不用,写一下核心方法就行。
代码和lc上之字形遍历差不多,是每次读每一层的节点,面试官看完代码说没必要用两个队列,层序遍历没让你对某些层进行其他处理。
最后就是反问了,前面八股被问的有点累了,就问了一下过或者没过大概多久会有反馈。
休息了一下就去吃饭了,吃完饭五点多看了几个美团二面通知一般什么时候出的帖子感觉自己挂了,没想到一会就收到了约二面的电话。
全部评论
(6) 回帖