字节懂车帝实习一面面经(已过)

439 阅读2分钟

1 tcp/ip 五层模型讲一下

2 详细讲一下http协议

3 讲一下进程和线程,进程间通信方式,线程通信方式。

4 索引是什么?聚簇索引和非聚簇索引?还有一些关键字 like orderby走索引的情况?

5 给你一条sql你会怎么去优化它。

6 redis的数据类型有哪些?

7 你说一下redis hashmap底层实现?缓存击穿,穿透解决方案。

8 接下来就是重点了,拷问redis

Q:如果数据库中一个数据需要被修改,但是在数据还未来得及重建缓存时,有人命中了它的缓存(也就是旧值),这个你如何解决?

A:我回答在线程修改数据之前去把缓存删了

Q:你把缓存删了,线程就回去数据库里面查找,照样也可能拿到脏数据,你如何解决?

A:我回答在线程修改数据库数据的时候,不仅删缓存,还让这个值的读操作失效

Q:那你给用户返回什么?

A:我说错误信息或者友好提示

Q:有没有更好的解决方案?

A:想到了循环原地休眠,线程在没有命中缓存情况下就原地休眠几毫秒,再重启检查缓存是否被重建

Q:那如果在重建缓存的时候redis宕机了,或者是写入超时,如何解决?

A:我回答循环休眠10次就返回错误信息

Q:有没有更好的解决方案

A:当时懵了,redis都挂了能有啥更好的解决方案。我回答暂时没有。后面面完了想起来既然已经在重建缓存了,那数据库肯定也改好了,我可以让线程加锁去数据库里面拿啊。

9 拷问了一下代理模式和dubbo(简历上写了)

算法题 437. 路径总和 III - 力扣(LeetCode) 这题做过,很快秒了

还有一道忘了也没在leetcode上找到

反问:部门城市在哪,用什么技术。字节都是以go为主,进去都得转,技术栈一般都是自研的中间件,进去要学。

算法加上八股一共面了一小时多,字节对redis和数据库的要求是挺高的,其他的都是常见八股,一面也没问项目。面试体验很好,晚上面的,面试官还能这样气定神闲和我谈论真的很感谢了。面完第二天就打电话确认二面时间