肚子好饿,早知道当初多刷点 LeetCode 了
写在前面
前文我,离职了提到会出一篇面经,于是抽空整理了下之前的面试经历。
简单科普一下:程序员面试一般都至少 2-3 轮技术面,后面还有 HR 面等。技术面分为计算机基础 + 项目经历 + 算法,一般都需要现场写代码。社招的话,按照常理,比起计算机基础,应该更看重项目经历。但是我面试了很多家,其中也有问计算机基础的,只能说都要准备吧。其实我一直不太喜欢背书,计算机基础(也叫八股文)又是同行面试必问的共识,这就导致我准备面试期间,还是挺痛苦的。虽然经常背,但是有些知识因为没有实际项目经历的支撑,很难找到共鸣,所以理解也就很浅。
至于算法,虽然我本科阶段就一直对这方面感兴趣,也参加了一些算法竞赛,虽然成绩一般,但好在兴趣还在。春招的时候,也刷了不少题,但发现性价比并不高。于是这次我换了种思路,这次就只刷剑指Offer。因为 三百道题刷一遍的效果远没有一百道题刷三遍的效果好。
我差不多是五一假期结束后,正式开始投简历的。李安说过:“人生不能像做菜,把所有的料都准备好了才下锅。”我选择的方式是通过面试来激励自己准备面试。刚开始面的几家成绩惨不忍睹,信心一度被打击,算法、项目经历、计算机基础都不合格。好在自己查缺补漏,每面一家就及时做面经整理。
因为涉及到一些隐私,所以我隐去了公司的名字与面试轮次,暂且以 A、B、C 等公司称呼,且一二三轮面试等问题会记录在一起,不单独写了。另外,自己在前司做过的相关项目也已经做了模糊处理,不会涉及到泄密。
A 公司
- 自我介绍 + 项目
- XXX 项目是前后端分离的吗?
- TCP 和 UDP 区别
- TCP 怎么保证传输可靠?
- HTTP 和 HTTPS 区别
- HTTPS 的 SSL/TLS 机制
- GET 和 POST 区别,有了解其他 RESTful 比如 PUT 吗?
- MySQL 索引 B+ 树
- B 树和 B+ 树区别
- MySQL 最大索引长度
- MySQL 引擎 InnoDB
- 缓存有了解吗?
- Django 请求链路流程
- Django 的 setting 里的中间件 middleware
- Git 版本控制
- Docker 有使用过吗?
- 自我评价九个月工作经验,以及未来规划
B 公司
- 自我介绍
- 详细说说在前司参与 XXX 项目开发做了哪些工作?
- XXX 算法有了解实现原理吗?
- Django 和 Flask 区别
- Django 请求生命周期
- CSRF 机制
- 有了解其他数据库吗?
- redis 缓存数据库
- 算法题:求最大子序列和
C 公司
- 自我介绍 + 项目
- 使用过 Linux 吗?
- 算法题一:匹配括号
- 算法题二:两两交换链表元素
- 为什么要离职?
- 在这家公司学到了什么?
- 平时业余时间如何提升技术?
D 公司
- 自我介绍 + 项目
- 询问前司项目相关
- XXX 算法知道原理吗?
- Python 数据类型
- Python 多进程、多线程
- Python 内置函数
- Python 深拷贝和浅拷贝
- 设计模式有了解吗?单例模式、装饰器模式和迭代器模式
- 算法题:实现深拷贝函数,int 型和 dictionary 型
- 写博客最大收获是什么?
E 公司
- Prometheus 怎么实现监控指标的,可以举一个例子吗?比如每秒吞吐量
- 怎么理解每秒吞吐量,讲讲自己的理解
- 如何保证吞吐量数据一致性?加锁
- 还有什么用到了加锁?
- Git 项目流程
- 详细讲讲前司的 XXX 项目
- XXX 算法了解原理吗?
- XXX 算法里提到的 bytes 类型是 Django 的,对应到 MySQL 数据库是什么类型?
- 非关系型数据库有了解吗?
- 为什么要替换 Pandas 库?
- XXX 项目里讲一个自己印象比较深的模块
- 如何保证不同表的数量一致:事务一致性
- 为什么写博客?有什么收获?
- 讲讲印象最深的一个技术点
- 查询 5K 条数据,如何保证使用 filter() 进行查询?
- 设计题:查询数据,如何设计 API,前端传什么参数,后端如何实现分页?
- 算法题:作家信息去国籍,匹配括号(使用栈,不用额外空间)
F 公司
- 为什么要替换 Pandas 库?
- 对称加密算法和非对称加密算法有哪些?
- RSA 应用场景:SSH 公私钥
- SSH 有了解吗?
- 内存管理有了解吗?
- Python 有 GIL 机制,为什么还要多线程?
- 线程和协程区别
- 项目为什么选择 Django 框架,不用 Flask 这些?
- 在 Linux 环境下执行一个进程,需要用到 C 语言的什么库?
- 有研究过什么技术吗?
- 看过 Django 源码吗?
- 算法题:IPv4 字符串转 32 bit 无符号整数(位运算)
G 公司
- 介绍一下 XXX 项目
- XXX 项目分工
- Django 如何操作数据库的?
- 怎么查询数据库:filter() 会如何调用?
- 算法题:硬币找零,n 元纸币,有若干 a0 - am 硬币,有多少种组合?
- DFS 和 BFS 讲讲,还有时间复杂度?
- 二分查找的时间复杂度:log2n
- 归并排序的时间复杂度:nlogn
- 最快的排序算法的时间复杂度:nlogn
H 公司
- Python 基础(具体忘了)
- 算法题一:最大连续子数组(动态规划)
- 算法题二:数组前 k 小的数(快排)
写在后面
前前后后参加了八个公司的面试,有小厂有大厂,当然还有很多公司连简历都没过(比如找了小米的朋友内推,说社招不招一年工作经验的)。
面试基本都是约的线上,唯一一家去线下参加面试的公司是爱奇艺。这场也是我至今面试体验非常差的一场。很大程度上是因为自己准备不够充分,但是同时我也感觉到了面试官的不专业性(手撕代码遇到卡壳,面试官并没有引导完善代码,而且全程感受到了面试官对面试者的轻蔑,上一家有这种体验的还是字节跳动,因此我对这两家公司印象很不好)。
下面的照片是我面完爱奇艺走出爱奇艺大厦随手拍了一张,算是纪念吧。中关村,我还会再来的,下次就不允许再失败了。
当然面试的过程远不止简单的这几句话,就不详细展开了,反正整个五月和六月上旬我都过得非常焦虑。焦虑的原因更多是自己菜,因为技术菜,才更加想换个平台努力提升自己。
准备期间,有时面试安排在中午和晚上,我得赶公交车回去视频面试,饭来不及吃挺正常的。回头再想,也算是一种回忆了。
好在最后也有了满意的 offer,现在新公司都很满意,算是还不错的结果吧。