shopee 新加坡 一面二面三面面经(后端研发,已意向书)
shopee
shopee一面
代码:n个有序的数组合并
(每个数组有m个值 ,时间复杂度:n * m logn, 可用堆 / 归并)
n个有序的数组合并 + 去重
代码题:判断一个树是不是二叉搜索树,空间复杂度要 O(1)
Redis 中数据结构,什么场景需要使用 hash; 数据倾斜怎么办(某台服务器数据太多了)
LRU怎么实现
怎么实现HashMap
HashMap 和 数组的区别 (利用哈希函数,快速的得到对应的值在数组的位置,这也是利用了数组随机访问的特性)
数据库索引是用来干嘛
Primary Key
聚簇索引, 非聚簇索引, 查找和插入的区别
MySQL如何加锁的详细流程:
----------------------------------- name | age ----------------------------------- name : unique key
select * from table where name = "James" for update 有这一条数据怎么加锁 没有这一条数据怎么加锁 ```
MySQL如何解锁死锁
MySQL回滚什么事务
MySQL如何保证同时成功,同时失败
TCP断开连接是怎么做的
shopee 二面
项目介绍
挖项目(记录回答的不好的)
cookie用了UUID,能不能把cookie做的更短一点,UUID有没有必要(随机性有没有必要)。
恶意用户绕过答题功能怎么办 (在后端做标记,需要答题后才能继续执行后面的流程)
修改Redis中的值用不用限流,因为Redis可能也会打死
进入MQ前没有返回信息,不就成了同步?
算法题:
Given a non-negative integer num represented as a string, remove k digits from the number so that the new number is the smallest possible. Input: num = "1432219", k = 3 Output: "1219" Explanation: Remove the three digits 4, 3, and 2 to form the new number 1219 which is the smallest.
一开始用了滑动窗口做,但是时间复杂度不是很优
后面用栈写
进程和线程的区别,为什么进程的创建销毁比线程开销小?
一个程序需要用多核来加速执行,使用线程和进程的优劣? 进程和线程使用上的区别?线程共享进程的什么资源,详细点?资源共享?
shopee三面
项目里有多少个表
事务怎么处理的
怎么保证Redis和数据库内存是一致的。 多买 少买
redis和数据库 数据同步问题。
redis挂掉了怎么办? 主从复制,哨兵模式
令牌桶的原理。和漏桶相比,有什么好处
Java的垃圾回收机制
如果程序发生 stop the world, 怎么解决? (看GC log 、内存大小、垃圾收集器)
算法题:找中位数。
堆排序的工作原理。 快排和堆排相比。 快排为什么比堆排快
场景题:设计shop系统
char 和 varchar 区别
分库分表
雪花算法、主键自不自增
分布式限流
shopee HR面
(很漂亮的HR小姐姐)
问了很平常的问题。 (家人允不允许去新加坡之类的)
#面经##校招##Java工程师#