一面(47min)
- 自我介绍
- 简单的聊了聊项目和博客,比赛经历这些,讲了讲收获。
- 写sql语句(行转列)
- 索引了解吗,说一下b+树,有什么优点。
- 联合索引,怎么样会失效
- mysql缓存
- java基础知识(脑子不好使,忘记了)
- 线程池参数及执行流程,拒绝策略等等
- 算法:(先讲了实现思路,再写代码)
- 2个相交的链表,求交点。
- 2个相交的直线,求交点
- 开放题:
打开美团app,如何找到离你100米的商家。(讲一下思路)
11.反问
(介绍了下他的部门是地图方向的,我脑壳一抽问了一下地图,然后他反手给我加了一道题)如何判断一个点在一个三角形内(讲讲思路)。
二面(1h18min)
- 自我介绍
- 深入聊项目
- 项目中的难点,背景,介绍一下
- 项目的数据库怎么设计的,有没有用到索引,哪些表用了哪些索引
- 多个用户下单,如何解决超卖。
- 用户下单的流程说一下,30分钟订单取消怎么实现的?,延迟队列底层实现,如何实现阻塞的,雪花算法。
- 支付模块怎么实现的?支付宝下单流程?
- 假设商品a库存是5,现在5个用户同时下单(还未支付),此时库存为0了,怎么样让第6个用户下单???(我黑人问号脸,求好心人解答)(我回答是采用预减库存方案,他恩了一声,我也不知道对不对)
- 数据库行锁,表锁介绍一下
- 事务隔离级别,每个级别存在的问题,举个例子说明脏读,不可重复读,幻读,
- 如何解决幻读,讲一下mvcc和范围锁
- volatile和synchronized的区别,java内存模型解释volatile如何保证可见性,禁止指令重排序讲一下。
- 了解哪些gc收集器,执行过程?gc roots? STW? 安全区域?等等(问的挺多的,记不清了)
- 算法
给定一个升序数组,将它转变为一个二叉平衡搜索树,返回它的头节点。
先给了[1,2,3,4,5,6,7,8],让我画出最后的树啥样,然后写代码。 - 反问:
介绍了一下日常开发所使用的技术,rpc,soa,微服务,消息队列,log,打点,远程缓存,redis等等。(我听的一脸懵逼)
3面(1h18min)
1.自我介绍
2.聊项目(聊了20min,都是根据项目问的,这里就不写了)
3.ThreadLocal和inheritableThreadLocal
4. cms,g1垃圾回收器介绍
5. eden,surviver介绍
6.如何触发full gc,怎么让系统减少full gc
7. 秒杀系统设计方案
8. 在线抢答问题,怎么设计
9.缓存了解哪些,聊了本地缓存
10.聊实习
11. 算法:
给定n个非负整数,代表一个高程地图,每个整数表示一个挡板,挡板高度为整数值,挡板宽度均为1(即挡板都是紧挨的,之间没有缝隙)。
计算下雨之后,整体可以存储多少水。
示例:
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
- 一个无限大的矩形,2个人有无限多的棋子,2个人轮流下棋,谁最后下完棋子,谁就获胜,设计一个策略让你获胜。(没想出来,面试官提示矩形中心,哇你确定这是博弈而不是智力题???)
反问