Shopee(深圳)提前批后端开发一面+二面面经
一面 8.7 11:30 35min
一面全程没有涉及到基础问题,就问了实习经历和算法题(感觉有点短)
1. 自我介绍
2. 在实习中重构老项目用到了什么方法?怎么保证重构后的正确性?
3. 你们这个项目大概是做什么?是否有遇到流量波动?
4. 算法题:LeetCode 494 目标和
当晚收到邮件通知通过,网页约二面时间
二面 8.8 15:00 35min
二面感觉刚好就是把一面没有涉及的项目经历和基础部分补上了
项目相关
1. 自我介绍
2. 详细介绍一下简历上的项目
3. 不使用有序消息如何保证选课的顺序?
4. 如果并发量很大,这个项目的性能瓶颈会在哪些方面?
之后就从这个问题引入到数据库基础的相关问题
基础知识
1. MySQL如何处理大数据量?
分库分表、读写分离等
2. 建立索引需要注意哪些东西?
答:最左匹配、选择区分度高的列
追问:可以建立很多的索引吗?或者把所有的列都放到索引当中去?
3. 谈谈数据库的锁?
4. SQL题:
一个t1表,有name和time两个列,记录员工打卡的时间,统计每名员工在2021年的打卡天数。(员工可以重复打卡)
5. 说说快排的原理?
追问:快排是稳定的吗?有没有什么稳定的排序算法?
6. 介绍Redis的五种数据类型?
string, list, hash, set, zset
7. 详细讲一下Zset的底层实现?
就大概讲了一下跳表相关的。
8. Redis为什么用单线程?
大概就讲了性能瓶颈不在CPU、IO多路复用和线程切换的开销几个地方。
9. 线程之间通信的方法?
10. 当系统运行出现一定问题的时候,Linux有什么查看情况的命令?
智力题
1. 有一个苹果,两个人轮流抛硬币,抛到正面的人可以吃掉苹果。问第一个抛硬币的人吃到苹果的概率?
2. 有500瓶一样的液体,其中一瓶有毒。若干只老鼠,怎样测出是哪瓶有毒?
其他
1. 感到最有挑战性的事情是什么?
2. 实习感觉和上学有什么区别?
后面就是反问和闲聊环节了