八股(30min)
- ArrayList和LinkedList的区别和特点以及使用场景
- 如何将ArrayList变成线程安全
- 并发包里有一个线程安全的ArrayList你知道吗?(不知道)CopyOnWriteArrayList听说过吗?(没听过,讲了一下CopyOnWrite)
- CopyOnWrite有什么缺点?适合什么样的场景?
- HashMap线程安全吗?它在并发包里对应的线程安全的类叫什么?
- currentHashMap如何保证线程安全的?为什么要将红黑树转化成链表?
- Java有哪几种方法创建线程?
- 线程池的核心参数
- Executors工具类提供的四种常见的线程池说一下?newCachedThreadPool里的阻塞队列是什么?有什么特点?
- Java异常体系介绍一下?顶级父类是什么?(本来只答了Exception的,面试说Error也属于异常体系)
- 编码过程中如何处理异常,最佳实践?
- CountDownLatch和CyclicBarrier了解吗?(知道是什么,底层不了解)
- JVM内存结构?哪些地方会发生GC?
- 常见的GC算法?常见的垃圾回收器?
- Linux统计一个文件有多少行的命令?
- grep命令一般怎么使用?
项目(50min)
- 介绍SaaS短链接项目
- 短链生成长链的算法
- 前后端交互的数据格式是什么?
- 为什么选择分表?为什么选择水平分表?
- 分片键如何选择?为什么需要路由表?
- 布隆过滤器?你在项目中用到布隆过滤器两面性的哪一面?
- 项目中如何保证缓存一致性?
- 有哪些方法保证一致性?延迟双删一定可以吗?Canal监听binlog的具体流程你知道吗?这里面MQ起到什么作用?(不知道)
- 什么场景需要用到MQ?你的项目为什么需要MQ?
- MQ的死信队列了解吗?(美团里经常用,挺熟悉的,面试官说Canal监听binlog就用到了死信队列)
- MySQL的InnoDB引擎了解吗?底层数据结构是什么样的?
- 聚簇索引和非聚簇索引的区别?可以有多个聚簇索引吗?
- 索引失效的场景?
- abc联合索引,出了四个查询语句,问分别都用到了哪些索引
- MySQL的隔离性特点会带来什么问题?
- 默认隔离级别是什么?为什么RR可以解决幻读?
- MVCC机制,当前读和快照读
- 服务拆分怎么做的?你是如何理微服务?
- 请求到达服务器,gateway、nacos、feign分别起到什么作用?
- feign的数据交互格式是什么?
- 你是如何理解RPC的?(我说http、grpc、mq都可以算作rpc,面试官说核心就是一句话“调用远程方法如同调用本地方法”)
- 什么是分布式锁?Redisson的实现有什么特点?如何理解可重入?
- setnx 和 设置过期时间 两步需要保证原子性吗?
- 知道ThreadLocal吗?如何用ThreadLocal实现可重入锁?(不知道,没考虑过)
- 倒排索引的概念?(面试官希望我脱离ES聊倒排)
做题(10min)
- SQL题,面试官问我知不知道in 和not in,我说知道,面试官说那这题就不用做了
- 判断链表是否有环,set去重2min秒了,面试官说很好很符合公司实际开发情况,然后让我换一个空间复杂度低一点的方法,双指针2min秒了
- 面试官看我做得很快,笑着又出了一道返回有环链表的环,5min秒了
反问
- 什么业务
总结
美团面试官都温声细语,体验很好,问题也很基础,面试官夸我基础扎实知识完备,而且很多我答得不好的地方面试官都说没事没事已经答得很好了。然后面试官还教会了很多我没答上来的知识点,收获满满!赞美美团!而且美团的算法题也都是eazy和mid为主,太棒了!总体来说是体验很好收获良多的一次面试。
#暑期实习校招#
#美团#