菜鸟面经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遍历。
总结:算法未准备充分,字节面试还得好好刷算法。秋招再战!