最怕一生碌碌无为,还说平凡难能可贵。

0%

我的 2021 社招 9 个月工作经验面经

肚子好饿,早知道当初多刷点 LeetCode 了

243A4A5F-E98A-4458-8AE5-337B067AB524_1_105_c

写在前面

前文我,离职了提到会出一篇面经,于是抽空整理了下之前的面试经历。

简单科普一下:程序员面试一般都至少 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 小的数(快排)

写在后面

前前后后参加了八个公司的面试,有小厂有大厂,当然还有很多公司连简历都没过(比如找了小米的朋友内推,说社招不招一年工作经验的)。

面试基本都是约的线上,唯一一家去线下参加面试的公司是爱奇艺。这场也是我至今面试体验非常差的一场。很大程度上是因为自己准备不够充分,但是同时我也感觉到了面试官的不专业性(手撕代码遇到卡壳,面试官并没有引导完善代码,而且全程感受到了面试官对面试者的轻蔑,上一家有这种体验的还是字节跳动,因此我对这两家公司印象很不好)。

下面的照片是我面完爱奇艺走出爱奇艺大厦随手拍了一张,算是纪念吧。中关村,我还会再来的,下次就不允许再失败了。

3665CD95-ED0A-4903-811C-F4943B68E8BD_1_105_c

当然面试的过程远不止简单的这几句话,就不详细展开了,反正整个五月和六月上旬我都过得非常焦虑。焦虑的原因更多是自己菜,因为技术菜,才更加想换个平台努力提升自己。

准备期间,有时面试安排在中午和晚上,我得赶公交车回去视频面试,饭来不及吃挺正常的。回头再想,也算是一种回忆了。

好在最后也有了满意的 offer,现在新公司都很满意,算是还不错的结果吧。