20秋招 后端 字节提前批一二三面 意向书+1
一面 2020年7月22号
进程与线程的区别
进程的状态、进程状态转换
进程调度算法
Linux改变进程优先级指令、查看进程的指令
项目中自定义通信协议的作用
HTTP协议的头部字段
TCP粘包半包问题、如何解决
TCP报文的最大长度、为什么会有这种限制
HTTP的CLOSE_WAIT状态、为什么会出现这种状态
事务的ACID
Redis使用场景、常用数据类型、缓存穿透问题、设置过期时间的指令
有数据表student(id, sex, name, class_id)和class(id, name),写一个SQL查询女同学人数最多的班级的名称
IP v4 与 IP V6的区别、IP V4子网划分、无分类编址
编程题:
1.输入一个字符串(例如192.168.2.1),将它解析成IP地址(32位的二进制整数)
设计测试用例
2.判断IP地址(例如192.168.2.1)是否在某一个网段中(192.168.2.0/24)
3.输入两个IP地址(例如192.168.0.1 192.184.2.2),拆分尽可能少的成多个网段
===================== 这是一条分割线 (*╹▽╹*) ===========================
二面 2020年7月26号
介绍项目的整体情况,和面试官重点探讨了聊天功能的技术要点。
单聊功能如何实现?
如果聊天时某用户不在线,如何确保他上线后能接收到之前的消息?
用户未接收的消息存储在什么地方呢?
你会选择Redis的哪种结构来存储这些数据?
如何确保客户端不会接受到重复的消息?
群聊功能如何实现?
如何确保群聊消息的可靠投递?
1.若某个用户成功发送了消息,群聊中的其他人都一定能接收到
2.所有成功发送的消息是不乱序的
3.保证所有人接受到的消息的顺序是一致的
4.群聊中的人上线后需要接受到所有历史消息,新入群的人需要能接收到部分历史消息
常见的进程调度算法?Linux系统中采用的进程调度算法?
设计一个完全公平的进程调度算法,保证系统运行一段时间后,各进程的实际运行时间与进程优先级成比例。
我:实现多个优先级队列,高优先级的进程执行一段时间后就调低优先级?面试官:比较粗糙,这样做不能实现完全意义的公平
我:根据进程的实际执行时间 / 进程优先级计算权重,使用堆选出权重最低的去执行? 面试官:OK,Linux中的CFS算法就是这样做的
冒泡排序、堆排序、快速排序的稳定性
堆排序的时间复杂度
编程题:
实现一个堆排序
===================== 这是第二条分割线 (*╹▽╹*) ===========================
三面 2020年7月30号
介绍项目,和面试官重点讨论了电商系统的下单和支付模块。
如果订单支付成功之后再扣库存,在订单支付成功之后库存量检测失败,应该怎么做?
如果调用微信支付接口进行退款,退款失败应该怎么做?
如何保证扣库存、更改订单状态是一致的?
事务的ACID、事务的原子性和持久性如何实现的
并发量很大的情况下,如何改造现有系统?(秒杀场景)
如何避免超卖?
如何实现一个算法限制用户的访问频率?(限流算法)
例如现在需要限制用户每秒只能访问100次商品接口,并且限制用户每秒只能访问20次A商品,如何改进上面的算法?
===================== 这是最后一条分割线 (*╹▽╹*) ===========================
面试总体还是很顺利的呀,昨晚的面试我的是一个女面试官诶(大姐姐?阿姨?),聊了会儿项目,才40分钟,她就说今天的面试结束了,你还有什么问题想问我嘛?
啊?这么快就结束了啊,我好慌...
今天早上问了HR小姐姐,她说:emmm,我们这边还在讨论,如果通过的话会有其他的小姐姐联系你哒,你耐心等等
好的吧,求字节给个offer吧,求求了
前来还愿,8月5号收到意向书啦!