<p align="center">
<a href="https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ" target="_blank">
  <img src="https://code-thinking-1253855093.file.myqcloud.com/pics/20210924105952.png" width="1000"/>
</a>

# 无竞赛，无实习，如何秋招？

今年秋招已经结束了，今天给大家介绍一位知识星球里的录友，我也是见证了他一步一步准备，从绝望到看到希望再绝望到最后拿到offer的全部过程。

我记得给他改简历的时候，就说过他冲客户端的话，可能更稳一些。

时间总是过得很快，但曾经焦虑的小伙，现在也拿到几个offer了，不一定人人都要冲大厂，卷算法，卷后端，合适自己就好，要不然会把自己搞的很累。

以下是他的秋招总结，**写的很用心，说了很多面试中使用的方法，发在[知识星球](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)里，立刻就引来星球小伙伴们的围观**，算是给星球里明年要秋招的录友做了一个参考。

![](https://code-thinking-1253855093.file.myqcloud.com/pics/20211109231150.png)

我也征求了他本人的同意，将其分享在公众号上，希望对大家有所启发。

以下原文：


## 个人背景

* 学校：末流985
* 学历：本科
* 所学专业：网络空间安全
* 意向岗位：后端开发
* 校内学习情况：**无竞赛，无实习经历，自己平时也没有捣鼓过任何项目，只是跟着学校的课程学习**😅。

## 秋招时间线

（**加粗内容为时间节点**，中间还穿插着各种笔试，这里就不列举了）

* 二月初-二月中旬：开始刷leetcode
* 三月初-四月初：背八股文，刷题，同时投递实习岗，但由于个人实力不足以及投递时间太晚，一面均未通过
* 四月-七月：完成学校内的课程，准备专业课考试，同时背八股文，不断地重复刷算法题
* **七月二十六日**：收到字节跳动**客户端软件安全工程师**岗位的面试邀请
* 八月初：面试**腾讯**后台开发岗，一面挂
* **八月十五日**：通过字节的三轮专业面试和一轮hr面拿到**意向书**
* 八月下旬：连续面试美团，蚂蚁；美团一面挂，蚂蚁一面通过
* **九月三日**：蚂蚁二面通过
* **九月十三日**:成为字节跳动实习生，提前感受工作内容
* 九月下旬：**通过五轮面试**：蚂蚁三面和hr面；华为两轮技术面和主管面
* **十月二十九日**：收到字节正式offer
* **十一月五日**：收到华为意向书

小结：

- 面试的企业：华为，字节，蚂蚁，腾讯，美团
- 通过的企业：华为，字节（蚂蚁泡池子）
- 字节客户端安全-深圳
- 华为软开-深圳(东莞)：14a
- offer选择：大概率华为，中概率字节，小概率春招再战



## 技能准备

### 算法和数据结构

掌握程度：

- 代码随想录 上的题目：programmercarl.com， 除了单调栈以外的所有题目都做过，且大部分题目**3-7**刷。
- leetcode总共题数：219题。
- (https://www.nowcoder.com/ta/huawei )做了68道。
- 二叉树，红黑树，B+树，数组，链表，堆栈等基础知识均掌握。

取得的效果：
- 95%的面试题都能做出来，能讲出时间，空间复杂度和实现思路，但没见过的题目不一定能想出最优解。
- 华为笔试：200分 (100分通过) ，蚂蚁笔试通过率：70%，网易笔试通过率：80%。

### 学习建议

按照卡哥**出题的顺序**刷，且要**重复刷**，**不能只是背代码**。还记得春招的时候，面试官问我**两数之和**，我能把代码写出来，但当问到实现思路，为什么这么实现，我答不上来；相类似的还有**二叉树迭代法的统一写法**，当面试官问我为什么这么写的时候，我说不知道:sob:

把卡哥的题刷得差不多的时候，建议再刷两个专题：

* 二分法 ：https://leetcode-cn.com/problems/search-insert-position/solution/te-bie-hao-yong-de-er-fen-cha-fa-fa-mo-ban-python-/)
* 滑动窗口：https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chuang-kou-by-powcai 。


笔试题刷题要点：

- **多刷**，**多刷**，**多刷**，**熟悉ACM格式**
- 面试题刷题要点：
  - **时间，空间复杂度**
  - **优化方案**
  - **解题思路**

以下是本人对各个知识块的掌握情况：

### 计算机网络

掌握程度：应用层到数据链路层常考题都背得很熟悉，但细节没记到位，美团曾经问过我**tcp报文的可选字段**，没答上来。

### 操作系统

掌握程度：熟悉常见面试题，但当问到特别具体的问题时难以回答，比如：给一个具体的虚拟地址，请求出它映射到的物理地址。

### 数据库

掌握程度：这部分掌握得最少，仅限于面经里MySQL的面试题:cold_sweat:。

### C++

掌握程度：基础面试题，stl，面向对象等面试题滚瓜烂熟，但面试的时候语言考察得很少，我遇到过的只有：**malloc**底层实现，**stl**相关底层原理。

### 项目

提前准备好以下问题的答案：
- 为什么要做这个项目？
- 是**为了解决什么问题**？
- 项目的性质是什么？
- 多少个人完成？
- 你负责了什么工作？
- 有什么亮点？难点？
- 运用了哪些技术?
- 有什么收获？

## 经验技巧

### 模拟问答

把**一切**在面试中可能被问到问题的**答案背下来**，假设你的对面有一个面试官，把问题的答案说给他听，这样有几个好处：

1. **锻炼表达能力**。有过面试经验的同学应该可以感受到，明明自己对一些问题很了解，但面试时讲得磕磕巴巴，逻辑不清晰。

提前模拟面试场景，可以帮助你提前发现**语言表述上的问题**，以达到在面试过程中**清晰表述内容**的效果。

2. **查漏补缺**。在回答问题时，自己很有可能产生一些**疑问**，而这些疑问也是面试官**特别喜欢**考察的地方。

举例：

- 面试官问：进程和线程的区别？
- 回答：
- 进程切换比线程切换开销小
- .......
- 面试官追问：进程切换开销**小在哪**?你能详细描述出进程切换的具体过程吗？

如果你能在面试前自己发现这个问题，查漏补缺，面试的时候也会更游刃有余。

### 转移话题

转移话题，即改变话题方向。

举例：

面试官问：为什么使用DH对称加密算法而不使用其他其他对称加密算法？

两种回答：

* 这个我没想过:sob:
* 我在完善项目时**不侧重于**将其与其他算法比较，而是把**精力更多地放在**DH算法的改进和优化上。

针对第二个回答，面试官会追问，那有哪些优化呢？而这个恰恰是我背得滚瓜烂熟的地方😍。

### 关于实习

实习重要吗？很重要，我去提前实习后，更清楚了企业看中实习经历的原因：**节省培养成本**，更快上手业务。

没有实习经历可以吗？可以，如果时间紧迫，秋招/春招前没有实习机会，那就花时间**把实习期需要学习的事情去做一做**，例如：学习GIT,搭建博客，学习开源项目，学习linux等（当然这些我实习前都没做，是实习的时候才知道的:joy:），这些放在简历上也是加分项。


## 与代码随想录的故事

### **算法**

今年二月初，刷题的时，看到carl哥的题解，觉得讲得很不错，关注了微信公众号：代码随想录。于是我就按照刷题攻略的顺序进行刷题，题解讲得很详细。在秋招前我几乎把当时所有题都刷完，而且刷了好几遍。面试时的出题命中率**真的很高(字节，蚂蚁的出的所有算法题都被包含在内)**，即使不是原题，实现的算法也是类似的。



### **公众号文章**

公众号里的文章我也非常喜欢，比如各城市互联网公司的总结，之前一直没太注意这个事情，觉得头部不就是那几个大厂吗？冲就完了。秋招过后觉得这篇文章还是挺有用的，因为眼光**不能只局限于互联网大厂**，并不是任何时候都应该向大厂冲，适合自己才是最重要的。



### **知识星球**

后来卡哥开了知识星球，我马上就申请进来了，这段时间一直在打卡，督促自己学习。星球上主要分为两大块内容：打卡系列和问答系列。

- 打卡系列，记录着各位同学的每日学习情况，其中有不少文章都总结得用心。

- **问答系列(对我帮助很大)**，主要包括**offer选择**，**学习路线**，**学习建议**；每天都会有同学提出自己的问题(当然我也问了不少)，carl哥的回答很真诚，**也很有参考价值。**



## 小结

秋招已告一段落， 这段时间真的经历了很多事情，虽然现在对结果没有很满意，但也积累了一些经验，走一步看一步吧。

大家可以结合着我的经历思考这么一个问题：**知识掌握到什么程度可以拿到一个什么水平的offer**？最后，祝大家都能拿到自己满意的offer~

