字节|golang实习|一面,二面(已offer)
部门:懂车帝
一面
- 问项目的背景
- 实习项目做了什么工作
- 项目流量在什么量级,有多少提升
- 怎么发现Redis存取结构这里需要优化
- 业务是业务部门还是中台部门,业务主要是做什么
- 讲一下业务流程和业务架构
- 订单量有多少?
- 业务应用的城市范围?是灰度还是已上线业务?
- 实现的收获有什么?
- 你们部门维护的微服务个数?
- 项目中提到了Netty,Netty支持的三种Reactor模型是什么?
- worker的负载均衡是如何做的
- 线程池的作用是什么
- 线程池有哪些组件,是如何实现的(核心线程数-》阻塞队列-〉最大线程数-》拒绝处理策略)
- 线程池的运行原理?
- 线程池的阻塞队列作用
- 分布式锁是如何实现的?(Redis,对比zk)
- Redis集群架构
- Redis集群的实现方式(Redis cluster)
- Redis数据结构(主要讲ziplist、skiplist)
- 详细讲ziplist和skiplist的结构
- 讲一下红黑树的数据结构
- 主键索引和非主键索引
- 如何排查慢SQL
- 行锁,表锁,意向锁
- 表锁lock tables语句
- 锁和索引的关系是什么,分主键和非主键索引讨论
- Java中的锁了解哪些
- ReentrantLock底层实现
- AQS原理
- Condition的实现原理
- condition和aqs如何实现的reentrantlock
- threadlocal如何实现的
- threadlocalmap是static方法,怎么保证每个线程可以取到自己的变量(key存线程,value存遍历)
- 如何排查cpu100%的情况?(top,kill,jps,jstack)
- Linux命令:cpu、内存、磁盘、网络链接
二面
- (算法)中序和前序构建二叉树
- follow up:如果有重复元素怎么做,还能用hash实现吗
- HashMap的数据结构
- 扩容原理
- 介绍一下数据库中的锁机制
- 三次握手过程
- 四次挥手过程
- time_wait意义,time_wait和close_wait区别
- linux系统中执行kill命令之后系统实际发生了什么
- 控制台发出kill命令后,由哪个线程接管
- 控制台的命令被接管的执行什么系统调用
- LRU原理和实现
- 了解LFU算法吗
- 其他的页面置换算法了解吗
- 讲一下先进先出和最佳置换算法
- 机器上日志记录了每条请求访问的ip,如何从日志中提取出所有访问过的ip,并且计算出访问频率位于前10位的ip
- dag图使用什么算法判断环
- 快排和堆排的时间复杂度、空间复杂度
- 快排有递归过程吗?
- 递归过程占用的空间大小是多少?
- 递归占用的空间算不算在空间复杂度内?
- 堆排序我开始说的O(n)空间复杂度,面试官反问一定需要O(n)的时间复杂度建堆吗(不需要)
- 快排和堆排序的稳定性