字节跳动系统架构部一二三面hr面(已意向书)
时间线
- 9.26一面
- 10.8二面
- 10.9三面
- 10.9hr面
- 10.11意向书
字节系统架构一面 59min
自我介绍?
netty是什么?
netty为什么性能高?
netty监听到事件之后怎么通知线程的呢?
假设现在有一个基于netty的rpc进行调用进行了哪些操作呢?
在浏览器中发起一个http请求的过程?
TCP的连接为什么是可靠的?
TCP怎么保证传输的顺序?
在发送数据的时候seq码是1、2、3但是因为网络原因接收到的是3、2、1请问这个问题怎么解决?
TCP和UDP有什么区别?
UDP适用于什么场景?
HTTP的post请求有什么结构?
cookie是什么?
cookie是怎么被带过去的呢?
http请求头中有些什么?
keep-alive是怎么做到的?
TCP为什么要四次挥手?
操作系统在执行一个进程的时候需要分配哪一些资源?
操作系统的内存是怎么管理的呢?
段页式的话访问需要访问几次内存?
为什么会有段页式这样的管理方式?
为什么要用虚拟内存来进行管理?
进程在内存中的模型是什么样的?(程序段 存储执行的文件 数据段 存储执行时的数据 PCB)
现在用一个递归没设置结束条件会发生什么?
栈是一个什么样的概念?
内存管理中的栈是用来干什么的?
JVM的内存模型?
声明了一个静态变量会存储在哪里?
GC主要是在哪里工作?
GC怎么找到需要回收的内存呢?
进程中有多个线程,这多个线程要怎么进行通信?
volatile做了什么?
不保证原子性会出现什么问题?
锁是做了什么事情?
是怎么做到的?(答了synchronized 和 lock接口)
synchronized加的锁是一个什么样的锁?
synchronized的锁升级?
死锁是一个什么样的东西?
手写一个死锁案例?怎么避免死锁?
手写一个SQL?
MySQL中的索引是什么?
跳表有了解过吗?时间复杂度是多少?
B+树适合用来维护zset吗?
算法题:4. 寻找两个正序数组的中位数
首先这个算法题第一思路就是说创建一个temp数组 将两个数组的值添加到temp数组中 然后进行中位数的查找。我还把这道题和数据流中的中位数弄混了。。尴尬。。说出了两个优先级队列的解法。
字节跳动系统架构部二面 60min
闲聊?
redis集群情况下put一个key value会存储在哪里?
redis集群怎么保证写的数据比较均匀?
redis在put的时候什么情况下算写入成功了? 1.主机写入内存了返回成功 2.主从复制完了返回成功 3.主从复制完了还需要持久化到磁盘返回成功
redis的put操作是线程安全的吗?
redis为什么要设计成单线程而不设计成多线程?
es的脑裂是什么?
mysql事务的级别有几种?
怎么保证不会出现幻读?
幻读诗怎么引起的?
串行化怎么保证不出现幻读的?
b+树的高度有多高?
为什么设计这么高?
反问环节?
字节系统架构三面 55min
自我介绍?
netty比nio高效的地方在哪里?
select,epoll有了解吗?
nio在linux下用的什么多路复用技术?
程序设计题 多个图书馆的书 a = {100,50,90,180,70} M = 400 需要把400本书放入a中,希望能够分配完之后a比较均匀。
数学题
(x, y)
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
M = 4 N = 8
顺时针旋转遍历 如(0, 0) (0, 7) (3, 7) (3, 0) (1, 0) (1,6) (2,6) (2, 1)
求关于MN的最后一个节点的坐标?
java中gc有哪些算法?
gc的线程特别多会出现什么状况?
垃圾回收的时候会出现page fault吗?
操作系统中的页表是用来做什么的?
进程之间的页表可以共享吗?
线程之间的页表可以共享吗?
线程局部数据怎么实现的?每一个线程怎么找到自己私有的数据?
系统调用是一个什么概念?
获取系统时间需要使用到系统调用吗?
操作系统的fork是做什么的?
java中的forkjoin是什么?
java中的fork是做什么的?
java中的join是做什么的?
操作系统中的进程调度算法?
系统提交一个任务系统怎么知道需要执行多久等待多久?
在TCP中有一个数据包叫rst数据包,一般以哦你感到哪几种场景?
软件层的***的原理是什么?
TCP的滑动窗口是什么?
一般滑动窗口有什么算法?
操作系统有什么参数可以调整滑动窗口的大小?
反问环节?