菜鸟面经T.T
阿里云开放平台
一面2.28:
- 实习、项目介绍
 - 最有挑战的项目?难点、怎么解决的?
 - 内存泄漏(检测工具valgrind/钩子函数、相关命令)
 - 编程层面如何预防内存泄漏,除了智能指针?
 - linux网络编程和tcp连接对应关系
 - 三次握手四次挥手,timewait、closewait
 - leveldb原理(memtable/immemtable/sstable/log/manifast/footer)
 - vector底层实现、动态扩容
 - 竞态、临界区、举例
 - ptmalloc底层实现
 - tcmalloc、jemalloc底层实现,和ptmalloc对比
 - 伙伴系统、slab分配器、STL二级配置器(内存池)
 - 最有成就感的项目/经历
算法题:之字形打印二叉树 
笔试3.14
二面3.16:
- 实习、项目挖10分钟
 - NUMA/UMA
 - 内核自旋锁底层实现?while和自旋锁的区别?
 - 内存屏障
 - 多文件全局变量的初始化顺序?例如a.cc有int a = 10, b.cc有int b = a, c.cc有int c = b;问main函数中a,b,c的值是什么(随机值还是10还是0?)
 - x86架构模型
 - x86和arm在内存架构上的不同
算法:利用malloc和free实现自己的my_malloc和my_free,使之可以基于N字节对齐。 
hr面3.18:
聊天+谈职业规划
3.21意向
阿里云块存储
一面2.26:
算法题:字符串转整数、公共子树
- 介绍项目、实习
 - leveldb原理
 - 死锁及解决
 - 如何检测系统瓶颈(cpu、磁盘、网络、内存)
 - unordered_map底层原理,扩容机制
 - struct和class的区别
 - 多线程和多进程各自的优缺点
 - 最近在关注的技术(HTTP3.0)
 - http3.0 为什么用udp
 - 3.0实现细节、TLS3.0
 - 反问
 
二面3.1
- 介绍
 - linux文件系统
 - 零拷贝
 - c++文件编码执行整个过程20min(涉及 键盘io、中断、显示器、elf文件、编译、链接、加载、执行、物理内存、虚拟内存、进程管理等等细节)
 - linux cfs进程调度底层原理
 - 磁盘缓存、布局
 - linux io细节
算法题:组合总和 
3.2通知二面过 但已选择其他部门 放弃后续面试
腾讯wxg3.17
- 代码:回文串、c++单例模式:懒汉、线程安全模式、最大字符串
 - 函数返回临时对象的问题
 - sizeof为0
 - 移动构造使用场景
 - new时内存不够,修改abort()报错要怎么做,(operator new修改回调函数)
 - 协程项目深挖(15min)
 - 协程堆上内存不够了会发生什么
 - 协程堆内存不够,申请两倍空间,拷贝过去会有什么问题
 - 第三方库调你的协程库需要怎么做?
 - 协程池必要吗?和面试官产生分歧。
 - 内核函数read、write在哪个链接器里??不知道想要问啥。
 - 内核自旋锁实现
 - 反问
3.19 挂 
字节基架
一面:
- 介绍
 - leveldb深挖(原理,读写,存储,多key查询,压缩,合并,数据结构)
 - mysql深挖(acid,事务,隔离级别,redo,undo,mvcc,readview,多线程缓存)
 - B树、B+树,节点分裂
 - osi七层
 - 虚拟内存
 - 进程和线程
 - 进程间通信
 - 页表
 - k8s(apiserver,etcd,node,kubelet)
 - docker原理
算法题:二叉查找树第k小元素非递归实现(没写出来) 
总结:问的都是不擅长的数据库,擅长的操作系统和网络问的都是八股,算法题拉了,思路对的但是做了40分钟没写出来,应该是凉透了。
更新:二十分钟后询问hr 一面过
os:算法题没做出来过了?
二面:
- 介绍
 - 操作系统深挖
 - 内存管理、虚拟内存
 - 内核自旋锁原理,读写锁
 - NUMA、MESI
 - 对计算机网络的理解
 - 反问
算法:
面试官:一面算法下来写过了吗?答写了。
面试官:不能用辅助数据结构、空间复杂度O(1)。楼主心态爆炸,这里写了20min没写出来。
面试官放水:写下memcpy和strcpy?楼主已经懵逼,忘记怎么写的了,卒。
面试后了解到面试官应该想要实现Morris遍历。 
总结:算法未准备充分,字节面试还得好好刷算法。秋招再战!