字节 后台开发 1面问题+思考
1、背景
最近收到字节面试通过的通知,把自己当中碰到的一些面试问题、复盘分享出来,祝大家求职顺利。
比较多放一个不太合适,按照123面这样一个一个具体说。当中有一些我的思考可能回答的点大家也可以参考。
2、字节1面 技术面
个人自我介绍【略过】
mysql
- 聊一聊mysql 你对索引的认识。
- 提到了聚簇索引,非聚簇索引。那非聚簇索引存的是什么?
其实比较大众化的问题,基本上是往着数据结构B+树角度去谈,为什么是B+。
比如可以聊hash表、二叉树、多叉树等等,各自的优缺点;
同时基础更好的同学可以围绕着 io ,page,innodb,b树b+树区别上聊,可以说很多。
首先是要回答出,聚簇索引、非聚簇索引的区别,以及各自的存储引擎 是否涉及聚簇索引这个事情。然后才是存什么。
概括上来说,跟数据绑定在一起的,就是聚簇索引;没有绑定在一起的就是非聚簇索引。
可以接着延伸,回表,覆盖索引等等。
网络
- osi 七层模型描述一下。
- tcp udp有哪些区别?对应哪些应用场景?
- tcp udp 哪个传输效率更高?
- 能不能基于udp完成可靠数据传输呢?
描述每一个层,大概干什么作用,有什么协议即可。同理可以扩展5层,5层是把哪些合并了等等。
当时复习没注意这个点,网络层传输层还说反了,答得不是很好。
这个建议好好读计算机网络自顶向下,说的挺清楚的。
最起码的有链接无连接,tcp的一些特性(可靠数据传输、拥塞机制、流量控制),比如应用场景 实时通信,比如报文头区别等等,可以涉及很多。
效率更高这个我无从下手,当时就说 咱们评判效率标准是什么?比如我是追求传输的快?还是追求质量?按照我的框架下给出对应的答案。
这个问题就是顺着我说的质量,接着往下问的。应用层上可以做到的,书上也会讲到。
多线程
- 进程 线程 协程的区别
- 多进程 多线程的区别
这个是因为我的简历上有go语言,协程,所以问了这个问题。
本科老师教授过openmp和mpi,我就按照这两个的区别回答了一下。其实网上面经回答应该也挺好的,没有固定答案,可能是看个人思考吧。
比如多个之间如何合作,共享变量怎么办,消息通信等等。java的也可以聊聊thread local,锁啊,进程通信(ip+port)等等。
算法 最大栈
最大栈,最大队列。和剑指offer的题目应该类似吧。
最大栈就是新建一个额外的栈,保存最大值;最大队列这样干的不是最好,得有一些操作,反正当时是没想到。
然后灵机一动,讨了个巧,用两个栈 实现一个队列,原来o(n),用两个栈的话最多也就o(2n)=o(n),符合要求,实现出来了。
3、其他
欢迎收藏点赞~有问题可以评论区指出哈
#字节面试##字节##23届秋招笔面经##校招#