字节跳动飞书后端开发面试
一面
首先介绍一下自己
说一下在实习期间做的项目
说一下数据库索引底层结构
说一下https的原理
说一下redis在分布式情况下的key是如何查找的
说一下几种map间的区别
说一下线程池的几个参数和具体用途
我在这里下,面试官可能不太了解。所以说了很久线程池的不可重入锁的用途。
编程题 链表大数相加
不是很难,但是现在想想感觉可以翻转链表按照leetcode 2的思路做,但是当时直接记录链表长度,递归连接了。
二面
首先介绍一下自己
说一下在实习期间做的项目
balabala具体项目的一些思路以及解决方案,说了很久
场景设计题:
积分换礼物的活动,每个用户(user)可以用不定积分(point)兑换一种礼盒,且每人限换一次。下单(order)逻辑:1)创建订单 2)扣减用户积分 3)扣减礼盒库存 4)下单成功
根据题目讨论了一下分布式锁,以及锁的范围大小,幂等的处理问题。
之后讨论了一下分布式事物处理方案,实习的组内是使用消息队列的形式保证事物的,但是当时和面试官讨论的时候一直纠结于如何处理回滚问题(我到现在也不知道,看网上的资料也只是通过重试保证一致性),没有回答好。
三面
聊了一下简历上的一些项目。
问题:
说一下map的get,put。
说一下堆的增删
说一下多进程间通讯方式。
说一下在命令行kill一个线程,在操作系统通信层面,都做了什么?(我不会)
编程题 输入二维数组matrix, 将其中被1包围的所有0改为1
编程题 leetcode 71
最后问了一下我在阿里和头条间如何选择,舔!!!