shopee后端一二面

shopee基本就没问语言相关问题,很大的一部分难点在网络和数据库,其他的方面都是很常规的题

一面

项目相关

  • 介绍了一下项目
  • 怎么避免线程空转的
  • epoll和select和poll
  • 什么是线程安全,怎么做到线程安全

数据结构&&操作系统&&网络

这几个方面好像很少,写在一起吧

  • 数组和链表不同
  • set和unordered_set的底层
  • 具体说说哈希表
  • 什么是堆,堆排序
  • 进程通信方式
  • 虚拟地址的好处
  • 什么是缺页异常
  • 三次握手四次挥手
  • time_wait状态在哪里
  • https过程

数据库

  • mysql的存储引擎
  • 索引的数据结构
  • 创建索引要考虑什么问题,例如索引越多越好吗(索引的维护需要时间空间不是越多越好,要考虑哪些列常被用来做条件,考虑联合索引的最左匹配,非聚簇索引可以用覆盖索引)
  • redis的五种基本数据结构
  • 说出redis的10个命令(我就憋了几个,不到10个,他估计也看透了我水平了)
  • redis的过期策略(有lru还有随机吧)
  • lru是属于主动过期还是被动过期(这啥啊,我不会……)

做题

小case,写的挺快的,面试官可能觉得我编程题还可以才给过的吧,毕竟我数据库那块那么烂……

  1. 合并链表
  2. 最长不重复子串

二面

项目

  • (一见面就夸我项目经验多)介绍了后台和安卓两个项目
  • reactor模式介绍
  • 使用多路复用和普通的方式对比有什么好处(一个线程能维护多个连接,减少线程数)
  • 使用多路复用的话怎么做到快速响应一个连接上的事件(非阻塞io,耗时任务丢给计算线程)
  • 非阻塞io和阻塞io区别

网络

  • tcp和udp的不同
  • tcp怎么处理丢包的问题的(ack,超时重传,接收缓冲,快重传)
  • 如果接收方发了重复ack了,但是对方一直没有回应会怎样(不知道,我说可能就丢弃接收缓冲的数据了)
  • 知道一个域名,怎么和他通信(dns,ip,路由)
  • http除了常用的get和post还有什么方法
  • 说了一个广播造成的问题问怎么解决,我想了一会才反应过来是广播风暴,我说我只记得可以用“生成树协议”
  • A要用到B服务器的服务,开了多个连接,但是只有一小部分连接成功了,怎么排查原因(我说可以用netstat查看一下两端的连接状态,比如可以判断B是否被SYN攻击了,还是单纯网络问题。 另外也可能B端的文件描述符用完了,他表示能想到文件描述符这个层面很好)

数据库

  • 索引的数据结构,与B树的区别
  • 事务的特性
  • 原子性怎么实现(undo log做回滚)
  • undo log什么情况会执行(崩溃重启)
  • 那重启时怎么判断是要做undo log还是redo log(不会……)
  • 隔离级别说一下
  • 和隔离级别对应的有三个问题说一下
  • 那隔离级别是怎么实现的(我说用锁,但是具体用什么锁怎么用我忘了)
  • 了解redis那其他的中间件例如*¥%¥#,#¥#%,H%454^……有了解的吗(有一两个大概知道做什么的但是确实不了解)
  • 微服务呢(我了解个概念吧……)

智力题

本来已经结束了,结果我问他这轮怎么没写代码,他说你要的话我出几道题,口述即可

  1. 检测链表是否有环
  2. 圆形棋盘下棋,最后一个放的赢,问先手策略(这题我拼多多面过……)
  3. 2个玻璃球100层楼问题,没想到最优,只想到2分

你可能感兴趣的:(shopee后端一二面)