220307 | 抖音系统架构 | 后端研发
自我介绍
组里在线服务用的是C++,一直在问考不考虑C++...
语言
-
Java/Go区别---这里应该回答GMP调度器,使用协程更加轻量化 切换成本低
-
Go继承如何实现
-
Java/Go垃圾回收?Go没有虚拟机,什么时候进行垃圾回收?
首先明确,垃圾回收和VM没有关系,
- 如何查看JVM垃圾回收情况、如果不用启动参数如何查看?
- 线程池如何实现?
七个参数
OS
-
上下文切换?为什么开销大?--OS实现,陷入内核态
-
协程调度为什么开销小?
-
GMP实现原理?
-
协程间切换如何操作的?
-
加锁的队列如何实现?---synchronized
-
轻量级的队列如何实现?无锁算法---CAS
-
可重入锁?
可重入:某个线程已经获得某个锁,可以再次获取锁而不会出现死锁
- 公平锁?
按照加锁的顺序获得锁
- JDK中如何实现?
维护申请锁的队列
- 申请锁的队列如何实现线程安全?
原子操作
算法题 或者叫应用题
输入:多个队列,每个队列有 weight,队列内部有序;输出长度 N;
输出:长度为 N 的列表
要求:合并后多队列内容占比与权重比例一致,且每个队列的内容优先选择顺序在前面的。结果尽量从多个队列里获取
网络
- HTTP的请求方法
GET POST
-
SSL
-
重放攻击
- 如何确定请求节点?
负载均衡
- 负载均衡算法?
反问
基础OK 算法代码风格需要再加强
组里用C++ 面试官说再综合考虑一下 大概率凉了😅