2022年秋天的面试经历
今年的秋招来的格外的早,7月中旬一些大厂的提前批已经开放了。从实习春招开始,就感觉到了今年的就业形势将会非常严峻。尽管实习春招的时候,拿到了微软的暑假实习offer。但是保险起见,还是需要投一投其他公司。一方面没有成功转正,也不至于毕业即失业;另外一方面也看看有没有更好的机会。
2022.07.18 字节跳动(后端-技术中台)一面
秋天的第一场面试,比往常寄的格外早一些
面试的细节已经忘记了,回忆几个当时没回答出来的问题
- 智能指针
- 写一个shell脚本,分割IP地址
- Redis
- MySQL
2022.07.20 比心(PC客户端)一面
最短面试,15分钟
比心的面试过程比较简短,双方都没有开摄像头,就像电话面试一样,一直在聊C++方面的一些东西。比较有印象的几个问题:
- 虚函数带来的一些问题
- C++模板定义为什么不能和实现分开放
2022.07.22 佳期投资(后端)一面
大概面了80分钟的样子
-
首先是自我介绍
-
然后面试官在
- C++
- C++14/17/20的新特性
- 智能指针
- 操作系统
- 缺页中断
- L1/L2/L3 cache的访问时间和容量
- CPU线程上下文切换
- 计算机网络
- TCP和UDP
- 拥塞控制
- TCP版本兼容
- 编译原理
- 程序编译过程
- 静态链接库和动态链接库
- Redis
- Redis数据结构
等方面,各问了几个问题。刚开始提的问题比较简单,但是面试官在每个问题之后,几乎都追问了一下。
- C++
-
最后,来一道算法题,这道题是Codeforces上面的原题Game on Tree,面试官一开始没有说数据范围,我就问了一下,他说:有个小数据
n=10
,还有个n=1e5
的数据,你可以先花10分钟想想n=1e5
的数据怎么写,没想出来再写个n=10
的。然后我并没有想出这个题的结论,最后写了个n=10
的思路。
写完算法题之后,我感觉应该后面没有其他问题了,就问了一下算法题n=1e5
数据的解法。
2022.07.22 小结
秋招面试开始一周之后,面了三场,三场全凉。秋招的面试过程中的计算机基础相关的问题问的广度和深度都大幅超过春招。接下来会好好准备八股文:
- Level 1: C++,操作系统,计算机网络
- Level 2: Redis,计算机组成原理,软件设计模式
- Level 3: 数据库原理(不涉及具体数据库,如:MySQL,PostgreSQL),编译原理
2022.07.25 字节跳动(后端-基础架构)一面
面试时间大概50分钟,面试了10分钟的时候,面试官才知道面的是秋招而不是实习。。。(也不知道字节内部是怎么沟通的
- 虚函数用途,实现,缺陷
- 程序内存分布空间
- 进程、线程和协程
- 数据库事物隔离级别(寄
- InnoDB MyISAM区别(寄
- 算法题:给你一个字符串,让你插入若干个字符到字符串的左侧,使得字符串变成回文字符串,求插入的字符的最少数目。
- “aabbcc” 返回
5
- “aaaaaa” 返回
0
- “aabaaaa” 返回
2
- “aabbcc” 返回
2022.08.11 趋势科技 一面
面试时间大概40分钟
- 问了下本科和研究生之间的gap
- 写了个tail,遗憾的是我对系统API不了解,没有写出来
- 漫谈技术
2022.08.31 欢乐互娱 一面
面试时间大概40分钟
- 自我介绍
- 介绍一下项目
- 算法题1:寻找树上两个节点的最近公共祖先
- 算法题2:一个数组中连续子段和为k的子段数目
- 算法题3:求两个链表的相交节点
- 算法题4:判断平面上两个平行坐标轴的矩形是否相交
- unodered_map 和 map
- 智能指针
- 覆盖和重载
- 虚函数
- 三次握手和四次挥手
- 心跳包
- TCP和UDP
- 虚拟内存
- 指针的空间占用
- long int的长度
- linux
- sort函数的实现
2022.09.07 安贤量化 一面
面试时间大概50分钟
- 自我介绍
- 操作系统相关
- 进程、线程和协程
- 缺页中断
- 页面置换算法
- 写一个LRU,可以用任何标准库,参考相关文档
- 如何优化磁盘IO
- 计算机网络相关
- HTTPS与HTTP的区别
- ssl/tls 握手流程
- 如何实现中间人攻击
- C++相关
- 智能指针
unique_ptr
的实现
- 模板元编程
- 多态实现
- 右值引用
- C++异常处理,基于系统调用的处理方式
- 智能指针
- 数据结构相关
- 跳表,B树和Hash
- B树和红黑树
- 杂项
- 最近在看什么书
- 平时通过什么途径学习新的技术
- 有哪些反爬虫策略,如何突破这些反爬虫策略
2022.09.20 安贤量化 二面
面试时间大概50分钟
面试官刚开始说了一下面试流程,他说:这次面试大概有45分钟,首先我们聊一下项目,然后问一点基础问题,再写一点代码,最后留一点时间,看看你那边有没有什么问题。
所以第一部分就是我介绍我自己的项目。这次介绍,我把重点放在暑假实习的内容上面,虽然暑假实习的内容工作内容并不是一个单独的项目。但是我在暑假实习的时候,做了一些富有个人特色的内容,于是拿出来讲了大概10分钟的样子。然后面试官在这部分问了几个小问题,一个是问C++和C#我使用的时候的区别,另外一个是问了一下异步相关的内容。
第二部分主要是两方面。第一方面他问了一下我的研究方向和相关的工作,我主要是讲了一下FPGA加速Transformer的相关的内容。第二方面他问了一下数据结构,主要问了一下堆怎么实现,还有哪些操作。这个也是一个蛮基础的问题。
第三部分Coding。题目是这样,给定一个数组,数组中有一些浮点数,比如:[2.0, 3.2, 4.0, 3.0, 2.0, 3.5, 5.0, 4.0, 4.0],然后定义这个数组中一个指标 ,这个数组中最大的 称为最大回撤。然后第二大回撤 是和最大回撤不重叠的最大回撤,以此类推。现在要求你写一个函数,输入一个数组,输出这个数组中的第三大回撤。这部分我写了一个还看得过去的解法,在和面试官讲解的时候,我还说了自己做的不足和可以优化的地方。
第四部分反问环节,这部分我就问了一个问题,就是面试总共有几轮,面试官回答了一下面试的流程,总共三轮技术面,一轮行为面试。
2022.09.23 深信服 一面
面试时间大概25分钟
- 自我介绍
- 项目介绍
- 写个题吧:最长递增子序列
- 再写个题把:二叉树的直径
- 问了下实验室里面研究方向,然后发现我的研究方向并不熟悉,于是就没再问了。
- 问了下平时刷题的平台和cf的分数
- 问个题:在 区间内,有多少个数与 互质()。
- 介绍下AC自动机吧
To be continued…