算法转开发的渣渣秋招之路
感谢女朋友的全程陪读以及包容。
情况介绍
时间线:6月至11月
本科EE硕士CS,本科做过大数据开发,研究生第一年误入歧途做了一年多机器学习深度学习,靠运气拿了几个比赛的前几名赚回了当时投资的 1080 ti。考虑到手里没有论文且做的比赛都比较水,于是算法转开发,主要投的是 C++,技术栈还包括 Go、Python,项目的话有个数据库项目、CMU 15-445 LAB、Go 项目以及深度学习比赛的。所以面试的时候会有一些面试官很感兴趣为什么我做了多个领域的东西。
最后绕了一圈,去的公司组里做 Flink,也算是又回到了大数据那一圈,看来又要把 Java、Scala 捡起来了。
喜欢开源的东西,也十分感谢牛客其他大佬分享的 C++ 学习路线,然后对于选择 C++ 语言的同学,一定要把 《STL源码解析》 这本书认认真真看一下,真的是很棒的一本书,秋招的过程前后看了两遍,获益匪浅。
书籍的话我就不多推荐了,因为有很多大佬推荐过,这里我说一下项目的吧。因为 C++ 的话,似乎很多人会纠结没有项目可以写在简历上,不像 Java 可以糊秒杀项目或者电商项目。对于准备明年秋招或者春招的小伙伴,可以去做一些课程的 LAB,推荐 CMU 15-445、MIT 6.824、MIT 6.828,其实我也只是完成了部分的 LAB,但是我发现面试官对于这些 LAB 延伸出来的问题讨论蛮感兴趣的。
一定要好好刷题,我自己反思就是刷题太少,大概秋招只刷了剑指 offer 和几十道 leetcode,大部分题目都是笔试和面试中得到的锻炼。想起了被雷火轮番虐的 4 + 4 个小时。
最后拿到了映客、OPPO、百度、小米、京东、网易互娱和拼多多的 offer,面经在下面。
实名感谢招商银行 FinTech 精英训练营对于本人心智的磨练,在此希望招商银行越办越好。
觉秋招就像做梦一样,拿到京东的之后就懈怠了,也不刷题也不复习了,在决定要去哪的时候,互娱和拼多多神奇的天降了两个 offer,所以如果有还没确定去哪里的同学也可以继续坚持一下,会看到希望的。
btw 自己的简历前前后后改了十几版,对于如何修改简历有一些心得,如果有需要帮忙修改简历或者对于补招、春招有很大迷惑的同学,也可以私信我。
喜欢讨论技术及ACG的同学,也可以加我刚刚创建的群,群号:570688637,本人热爱开源热爱分享,也希望能和大佬们做朋友。
面经整理
映客-提前批-服务端开发
一面 50 min
- 指针和引用的区别
- 野指针(定义、原因、解决方式)
- 多态
- 智能指针(定义、底层实现)
- Linux 内核态、用户态
- MySQL 引擎
- MyISAM 和 InnoDB 的区别及各自应用场景
- MySQL 索引及底层
- Redis KV 如何建立
- TCP UDP 能否访问同一个端口及原因
- Docker 底层实现
- 线程和进程的却别
- 死锁的四个条件
- OSI 模型
- 四次挥手,能否两次挥手,原因
- Qt 信号槽机制
- Redis MySQL 配合使用一致性怎么保证
- Redis 和 mem***d 区别
- Url 的解析过程,包含哪些层和协议
- 对于 Go 语言的看法,为什么学习 Go 语言
- Python 和 Shell 会用么
- 算法 1:一个数组里只有一个数字出现 1 次,其他出现 2 次,找到这个数(hash 或者 xor)
- 算法 2: 一颗二叉树,从右向左看(右视图),按照层打印节点值(BFS 最后节点 或者 DFS + 记录打印层数)
二面 60 min
- 算法 1: 手写二叉树 BFS
- MySQL 索引底层实现
- 数据库中,1 - 1000 w 行数据,如何设计查找
- 算法 2: LRU 实现
- std::mutex
- Shell(查进程 pid,并且 kill)
- kill -9 底层
- Redis 持久化
- Go 做一个云盘,如何设计数据库表,上传下载删除操作会怎么操作表
- 内存泄漏,如何 debug
- 想去什么样的公司
- 拿了什么 offer
- 看过一些语言或者框架源码么
HR 面 15 min
- 聊一下研究所
- 说一下对映客的认识
- 拿了什么 offer
- 有什么问题
OPPO-提前批- C++ 开发
一面 30 min
- 自我介绍
- 讲一下 Redis MySQL 的项目
- MySQL 索引
- Redis 底层实现、持久化,单机内存不够怎办
- 纯虚函数
- C++ 三大特性
- 虚继承
- 虚函数表
- 能有虚构造函数么
- Python 和 Shell 了解多少
- 成绩怎么样
- std::mutex
- 机器学习和深度学习论文看的多么
- 有什么要问的
二面 30 min
- 自我介绍
- 挑一个项目讲一下(讲了深度学习比赛的,面试官比较关注分工、方法、创新点和解决问题的思路)
- CMU 15-445 LAB 讲一下
- Redis MySQL 项目
- 团队合作分工有没有分歧,如何解决
- LRU 及其他调度算法
- OS 数据结构等是否了解
- 有什么要问的
HR面 20 min
- 四六级成绩和成绩单
- 自我介绍
- 为什么选择 OPPO
- 家乡
- 为什么选择去广州读本科
- 职业规划和对 OPPO 的印象
- 期望薪资
- 自我评价
- 对自己影响最大的事情
腾讯-提前批(WXG)- C++ 开发
一面 60 min
- 算法 1: 从字符串 A 中剔除字符串 B 中出现的所有字符
- 算法 2: 二叉树路径和为某一值的路径数量
- 算法 3: 二维数组,行从左到右递增,列从上到下递增,查找 target 数字
- 算法 4: 输入 N,找到比 N 小的数字中,数字每一位相乘最大的数字
- 算法 5: 矩阵内,随机3个点最短路径和
- 为什么用 Redis 而不是 mem***d
- MySQL 索引
- Redis MySQL 一致性
- MySQL 操作成功,但是 Redis 操作失败,怎么判断怎么解决
- Redis 持久化
腾讯-提前批(PCG)- C++ 开发
一面 50 min
- 自我介绍
- 智能指针
- 右值引用
- std::move
- 代码量
- 异步服务器如何实现
- Redis 底层
- 进程切换成本(DRAM/SRAM/MMU/TLB)
- 红黑树、hash table 底层
- DFS
- I/O 多路复用
- 如何自己封装 TCP
- 给定 RTT,计算 TCP 建立传输之后理论传输速度
二面 60 min
- 自我介绍
- 面试官介绍项目组(腾讯文档)
- C++ Go 了解多少
- Linux 启动的过程
- 计算机网络了解多少
- TCP UDP 应用场景
- 设计一个支持读多写少业务的高并发查询架构
- Redis 类型
- TopK 问题
- 有向图最短路径算法
- 对于数据库的理解
腾讯-提前批(CSIG)-云存储
一面 65 min
- 自我介绍
- 算法 1:升序数组,查找距离 target 值距离和最近的长度为 N 的数组
- 智力题:2个鸡蛋,100层楼,最少多少次可以测出刚好摔坏鸡蛋的楼层
- CMU 15-445 LAB
- 数据库加锁、MVCC
- RR(Repeated Read)举例
- Redis 数据结构底层
- Redis 持久化
- 设计一个微信登录查询缓存架构
- Paxos、Raft是否了解
作业帮-提前批- C++ 开发
一面 40 min
- 自我介绍
- 对于 Go 的熟悉情况
- Go 里面 init 和 import 加载顺序
- Go sync 包使用问题
- Shell 的问题
- 二叉树前后中序
- 两道智力题,找规律和赛马问题
虎牙-提前批- C++ 开发
一面 60 min
- 自我介绍
- MySQL Redis 项目,一致性问题等
- Go 项目,为什么做这个项目,涉及的知识点
- CMU 15-445 项目
- C++ 基础问题
- 进程和线程
- 能否来实习
百度-提前批-测试开发
一面 30 min
- 自我介绍
- 项目简单介绍
- 算法 1:字符串匹配问题,返回第一次匹配下标
- 算法 2:判断字符串组成是否一致
二面 50 min
- 自我介绍
- 项目
- url 输入之后,各层协议
- 快排思想
- 百度搜索框,从哪些角度测试
- Go 项目
- C++ 基础问题
三面 20 min
- 自我介绍
- 项目问题
- 对于测开的看法
- 测开和开发的对比
- 聊天
百度-提前批- CDN 开发
一面 60 min
- 自我介绍
- Go 项目,断点续传如何实现
- 网络编程了解多少
- 多态、虚函数、动态绑定、虚函数表、虚函数指针、虚表位置、构造函数能否是虚函数
- 模板编程
- 对 STL 的了解(容器、空间配置器、迭代器、适配器等)
- 代码:map 删除 key 为质数的迭代器如何实现
- hash table 中链表过长如何解决(RBTree或者扩容)
- RBTree
- BTree B+Tree
- 网络编程,select、poll、epoll(LT/ET)
- epoll 底层模型
- 进程通信方式
- esocket
- MQ 特点
- 共享内存
- 线程同步方式
- 进程和线程
- 虚拟内存
- 线程是否拥有资源,拥有哪些资源
- Url 输入之后
- DNS 查询的方式(迭代、递归)
- TCP 三次握手四次挥手,2MSL
- 客户端掉线服务端如何处理
- 算法 1:开根号
- 算法 2:洗牌算法
二面 50 min
- 自我介绍
- Redis 相关知识点(持久化、hash、超大hash表删除如何加速、hash底层如何扩容)
- STL(容器、空间配置器、迭代器、适配器等)
- RBTree AVL
- resize、reserve
- 代码:set 删除大于 100 的 key 如何操作
- 一致性哈希
- 智能指针
- new/malloc
- map 中 key 可以为 double 类型么
- LRU
- TCP UDP
- 有什么问题
百度-提前批-SRE开发
一面 60 min
- 自我介绍
- Redis MySQL 项目架构等项目相关问题
- 进程线程
- TCP 三次握手
- I/O复用
- 算法 1:手写堆排插入
搜狗-GeekDay- C++ 开发
一面 60 min
- 自我介绍
- Redis MySQL 一致性
- MySQL 索引
- Redis 持久化
- CMU 15-445 LAB
- std::mutex
- Go 项目中所有涉及的知识点
- 堆的删除和插入
- 代码:手写堆插入
- 聊天
HR面 20 min
- 自我介绍
- 工作、生活中扮演的角色
- offer 情况
- 能否来实习
- 对于搜狗的印象
猿辅导-正式批-服务端开发
一面 60 min
- 自我介绍
- 项目中数据库如何设计
- ACID、事务锁、索引
- go-micro
- MQ
- vector、list底层实现
- 宏
- TCP UDP
- 算法 1:合并 k 个有序链表
- 算法 2:严格递增数组,旋转后,查找 target 值
二面 40 min
- 自我介绍
- 线程调度
- 线程的状态
- rpc 的组成
- rpc 中 TCP 和 HTTP 对比
- 算法 1:多叉树层次遍历
- 算法 2:输入一个数组,输出所有子数组
终面 40 min
- 自我介绍
- 介绍所有项目
- 算法 1:实现 STL 中 next_permutation 方法
- 算法 2:多叉树层次遍历
阿里巴巴-提前批- C++ 开发
一面 50 min
- 自我介绍
- 能否接受转 JAVA
- 对于 JAVA 的了解
- 堆栈用什么数据结构实现比较好
- 对于树的了解(二叉树、查找二叉树、AVL、RBTree)
- 为什么 map 用 RBTree
- 指针和引用
- int func(int *a, int *b) 和 int func(int a, int b) 的区别
- C++ 虚函数
- UDP 实现可靠传输
- CMU 15-445 LAB
- MySQL 主从复制底层实现
- 一致性哈希
- 项目问题
- 反问环节
京东-正式批- C++ 开发
一面 30 min
- 自我介绍
- Redis MySQL 项目
- 读写队列高并发优化
- 进程线程
- C++ 虚函数
- CMU 15-445 LAB
- 算法 1:链表相邻节点值交换
- k8s
- Go 项目
- 反问环节
二面 30 min
- 一面面试体验如何
- 面试官介绍组里方向
- std::move、右值引用、lambda
- 英语怎么样
- 项目
- 开源社区、开源项目讨论
HR面 20 min
- 自我介绍
- 对于京东的看法
- 选择一个公司最看重哪些
- 项目情况和收获
- 对于加班的看法
- 毕业时间
- 反问环节
小米-提前批- MIUI系统优化
一面 60 min
- 自我介绍
- char *p = 100; p + 2 结果是什么
- malloc 和 new 的区别,手写一下如何用
- 进程线程通信方式区别等
- 项目中问题
- CMU 15-445 LAB
- std::mutex
- TCP IP
- ipv4 ipv6
- 算法 1:倒数第 k 个链表节点值
二面 30 min
- 算法 1:手写快排
- Go 项目中各种详细问题
- hash 碰撞如何解决
滴滴-正式批- C++ 开发
一面 40 min
- 自我介绍
- Redis MySQL 项目
- CMU 15-445 LAB
- 服务器数据库读多写少,但是 CPU 使用率很低,如何定位问题及如何解决
- Go 项目
- 算法 1:递归二叉树前序遍历
- 算法 2:非递归二叉树前序遍历
二面 50 min
- 自我介绍
- 介绍深度学习比赛
- C++ 多态、虚函数
- STL
- 算法 1:实现 vector push_back 函数
- git 了解多少
- 图算法了解多少
- TopK问题
三面 40 min
- 自我介绍
- Redis MySQL 项目
- 主从复制实现
- 图算法了解多少
- 算法 1: 二叉树层次遍历
- 反问环节
网易互娱-正式批-游戏研发
一面 50 min
- 自我介绍
- 聊项目
- std::mutex
- 线程通信
- 智能指针
- C++ 多态
- 虚函数实现
- 钻石型继承虚函数表内存分布
- 四次挥手
- 线程安全、可重入
- 算法 1: Rand(int M) 函数,随机返回 0 - M-1,利用函数实现从 M 个人等概率挑 N 个人(洗牌算法)
- 对于网易游戏的看法
- 对于编译原理、网络、数据库、OS、计算机图形学、图像处理的熟悉程度
二面 90 min
- 自我介绍
- Redis MySQL 项目展开
- 设计高并发低延迟的数据架构
- 算法 1:洗牌算法
- 数学证明洗牌算法等概率
- 图形学渲染问题
- 玩过什么游戏,介绍一下
- 如果让你设计实现一个这样的游戏 demo 要多久,怎么分配时间
- 反问环节
拼多多-寻梦批-服务端开发
当时没有太注意记录拼多多面试的面经,然后看了一圈其他同学发的面经,难度大致相同,然后算法难度的话大概是 leetcode medium 这样。
BIGO-正式批-C++
BIGO 面试的时间很尴尬,已经拿了互娱和拼多多的,所以就试探性的面了一面,感觉比较简单,也不想耽误面试官于是就拒绝了二面,所以面经也没来得及记录。
#京东##拼多多##映客##百度##虎牙直播##C++工程师##面经#