目录
1自我介绍
2 基础提问
2.1 HashMap的扩容机制
2.2扩容时的多线程问题
2.arrayList 和 LinkedList
2.4事物的ACID?
2.5MVCC的原理
2.6数据库的四种隔离级别
2.7什么是当前读和快照读
2.8JAVA内存模型?volatile关键字作用?
2.9TCP 的流量控制和拥塞控制
2.10慢启动是指数增长,就为什么是指数增长,而不是线性增长呢?
2.11清楚这个 Docker 的这个核心概念吗?就是容器和虚拟机的这种区别?
3 项目提问
3.1第一个是那个微信聊天系统,然后主要想了解一下第一个是那个,呃,心跳检测和断线重连,你这块具体是怎么实现的
3.2这些操作在并发下下有没有数据一致性的问题?这个我想就是看看你你们是怎么考虑的?
3.3SA token 的 token 默认是怎样传递的?
3.4套餐的那些数据,就是底层它是怎么做的?就比如说那个有没有什么缓存之类的?就每次用户浏览都会查数据库吗?
3.5缓存和数据库是如何保持数据一致性的?
3.6为什么是删除缓存,而不是更新缓存?
4测试用例设计
4.1体检预约功能 — 测试用例设计思路
5手撕
6其他
6.1你现在有接触过 AI 吗?可以大概大概说一下吗?
6.2你觉得Agent和大语言模型有什么区别?
6.3龙虾尝试过吗
6.4主动学习了什么内容?然后这个是什么驱动你去学习它?以及你通常是通过什么方式去学习这种新的知识、新的技术?
6.5 base在北京,就你对这个地域有啥要求吗?
6.6如果说有后续的话,然后你的那个实习,实习是怎么安排?就是最早什么时候可以来实习?大概能实习多久?
7反问环节
写在前,一面面试官是一个很温柔的小姐姐,遇到我不会的问题小姐姐也在耐心沟通!!
时长60min
1自我介绍
首先在第一部分了解到了Keemart 是美团面向沙特等海外市场的即时零售业务,类似国内小象超市,结合了国际化业务特点。
2 基础提问
2.1 HashMap的扩容机制
HashMap原理?为什么扩容是扩容是二次幂扩容?
2.2扩容时的多线程问题
2.arrayList 和 LinkedList
区别?什么场景下用ArrayList 什么场景下用 LinkedList 呢?
2.4事物的ACID?
2.5MVCC的原理
2.6数据库的四种隔离级别
2.7什么是当前读和快照读
2.8JAVA内存模型?volatile关键字作用?
2.9TCP 的流量控制和拥塞控制
2.10慢启动是指数增长,就为什么是指数增长,而不是线性增长呢?
2.11清楚这个 Docker 的这个核心概念吗?就是容器和虚拟机的这种区别?
3 项目提问
3.1第一个是那个微信聊天系统,然后主要想了解一下第一个是那个,呃,心跳检测和断线重连,你这块具体是怎么实现的
项目有点忘了+有点紧张 没太答上来。。不过面试官说没关系(555
3.2这些操作在并发下下有没有数据一致性的问题?这个我想就是看看你你们是怎么考虑的?
3.3SA token 的 token 默认是怎样传递的?
3.4套餐的那些数据,就是底层它是怎么做的?就比如说那个有没有什么缓存之类的?就每次用户浏览都会查数据库吗?
3.5缓存和数据库是如何保持数据一致性的?
3.6为什么是删除缓存,而不是更新缓存?
4测试用例设计
4.1体检预约功能 — 测试用例设计思路
5手撕
我记得是最长括号匹配,也就是最长括号对长度。
先用的栈解的
public int longestValidParentheses(String s) { int max = 0; // 栈存下标 Stack<Integer> stack = new Stack<>(); // 先放一个-1当起点 stack.push(-1); for (int i = 0; i < s.length(); i++) { // 左括号:存下标 if (s.charAt(i) == '(') { stack.push(i); } // 右括号:匹配 else { stack.pop(); if (stack.isEmpty()) { stack.push(i); } else { // 计算长度 int len = i - stack.peek(); if (len > max) max = len; } } } return max; }提问:讲一下这个代码的思路?你是怎么想的? 时间复杂度和空间复杂度?有其他更优的解法吗?是什么?