首页 > 成为一名基本合格的后端开发工程师 - 语言准备篇(C++)
头像
joyking7
编辑于 2020-09-20 15:24
+ 关注

成为一名基本合格的后端开发工程师 - 语言准备篇(C++)

如何在较短时间内(6个月+)成为一名基本合格的后端开发工程师 - 语言准备篇(C++)

秋招现在已经进行了一半,越来越多的小伙伴无论是通过牛客私信还是微信的方式都表示过,今年算法好难找,明明我的算法简历挺好的为什么就没有 offer, 算法怎么转开发等等问题。

针对这些问题,我写一下我准备的过程,这是一个系列,所以可能会比较多篇。

积极的自我审查

当你有了上述疑问的时候,一定是哪里出了问题,外部环境的变数我们无法操控,我们能做的就是积极的自我审查,从基础知识储备、项目、算法、心态等各个方面对于自己进行一个更为客观的评估。例如你以前的目标是算法工程师,那么是不是可以先审查一下自己是否已经达到了工程师的及格线,包括但不限于:

  • 基础知识储备

    • 对于开发语言的熟悉程度

      • 开发语言的基础语法

      • 开发语言的数据结构及底层实现

      • OOP

      • 多线程以及并发

      • (Java)JVM

    • 对于操作系统的熟悉程度

    • 对于数据库的熟悉程度

      • MySQL 使用、特性及底层实现

      • Redis 使用、特性及底层实现

      • (大数据方向)hbase 的了解

    • 对于计算机网络的熟悉程度

    • 对于分布式理论的了解情况

      • Google 大数据三大论文(Google File System、MapReuce 以及 Bigtable)

      • Google 去中心化分布式系统论文三件套(Percolato、Spanner 以及 F1)

      • 《分布式系统原理介绍》 刘杰

      • CAP

  • 项目

    • 对于项目背景的了解

    • 项目所涉及技术栈情况

    • 你所负责项目的部分

    • 遇到的问题

    • 最终达成的效果以及解决问题的方式

  • 算法

    • 数据结构

    • 算法基础

      • 枚举

      • 模拟

      • 递归 & 分治

      • 贪心

      • 排序

      • 前缀 & 差分

      • 二分

    • 算法进阶

      • 搜索

      • DP

      • 字符串

      • 数学

      • 图论

      • 计算几何

    • 题库

      • 剑指 offer

      • leetcode

      • acwing

  • 心态

    • 身边都是 offer 收割机的心态

    • 简历一直挂、笔试一直挂、面试一面就挂的心态

转开发的原因

对于我自己来讲,我算是比较早决定转开发的,大概是在 19 年 2 月份寒假的时候,扫尾了一下手里最后一个机器学习比赛,但是还是错过了 3 月份开始的实习投递,现在回忆一下微信实习面试的题目,真的很遗憾。

研究生之后,很自然的选择了很多机器学习、深度学习相关的课程进行学习,也不断的参加着 kaggle、天池、科赛等各种大大小小平台的比赛项目,从单纯的数据挖掘比赛到 CV 比赛基本都参加过,最好的名次是第四名,也算是摸到了奖金,cover 了一张 1080 ti 的投入,再参加完那场比赛之后就开始思考来年的秋招要准备什么方向,因为自己的理论准备还是不太充足的,而且当时手里也没有 paper,对于 19 年来说,算法已经足够内卷了,或者说整个互联网行业都在疯狂的卷,更别提你们现在面对的 20 年招聘。

考虑到自己本科和研究生在做项目的时候一直都没有丢下 C++,最后是决定以 C++ 为中心进行复习,以后端开发为目标。

大家也可以自己衡量一下利弊以及准备的难易情况,自已选择自己的方向,我这边后面的内容只会以 C++ 进行展开,因为入职之后也是刚刚转 Java,因此对于 Java 的部分会在后面的分享中写出。

官方文档 - 你最好的助手

是的,我没有像其他人一样推荐大家一上来就去看书或者参加一些课程,虽然后面也会推荐一些关键书籍,但是毕竟看书索引的效率是远低于查阅官方文档的效率。

我这里的意思就是,希望大家无论是在准备招聘过程中,还是实际工作中,以官方文档为中心展开,尤其是对于一些关键函数的参数列表,官方文档都会解释的很清楚。

同时如果涉及以及版本变更、升级的任务,官方文档是你唯一能参考的地方。

额外的一点,官方文档大部分为纯英文,也能够有效地锻炼基础的英文阅读能力。

附上 C++ 文档连接

各种博客 - 学会过滤

最开始,准备面试所需要的知识,我也是搜索引擎一通乱搜,这时候你会发现一个问题,一个问题的解答,你能够在各种博客看到各种转载,因此这里只是一个小小的提示,对于 CSDN、简书等博客的博文,一定要做好过滤工作,不要学习错误的知识,要及时做到知识更新。

爱上读源码

如果让我选择去年能收获一些 offer 的主要原因,我会归因于三个原因,其中一个原因就是读源码。

因为我选择的是 C++ 语言,首先是比较快速的对于 C++ 的基础语法进行了一个复习、学习的过程,使用的书籍是 《C++ Primer》(注意呀,不是 plus,是 primer),primer 这本书就像一本参考书,你在第一遍学习 C++ 的时候可以看,你在工作查文档的时候也可以看,它能够帮你解决 C++ 表层的问题,例如一些基础语法的使用、类的使用等,但是它的缺点又足够明显,就是不够深,如果你想查看 unordered_map 底层怎么实现、C++ 里面怎么用到红黑树等问题,那么这本书暂时不能帮到你。

这时候就有一本贯穿秋招的一本书,十分推荐大家不断阅读 《STL 源码剖析》这本书,这本书我在准备秋招以及面试过程中,认真读了 2 遍,翻找复习知识应该是很多次了。

下面给大家画一下我当时看的重点:

  • 前期准备

    • template
  • 第2章 空间配置器(allocator)

    • new 实现

    • 空间配置器

    • 第一级配置器

    • 第二级配置器

    • 内存池

  • 第3章 迭代器(iterators)

    • 迭代器

    • traits

    • __type_traits

  • 第4章 序列式容器(sequence containers)

    • vector

    • list

    • deque

    • stack

    • queue

    • priority_queue

    • slist

  • 第5章 关联式容器(associattive containers)

    • rb-tree

    • set

    • pair

    • map

    • multiset

    • multimap

    • hashtable

    • hash_set

    • hash_multiset

    • hash_map

    • hash_multimap

  • 第6章 算法(algorithms)

    • copy

    • next_permutation

  • 第7章 仿函数(functors)

    • 看的较少,了解
  • 第8章 配接器(adapters)

    • 看的较少,了解

另外还有两本书推荐,分别是 《深度探索 C++ 对象模型》《Effective Modern C++》,前者的阅读要求比较高,我是只读完了前三章节,这本书有利于帮助大家理解 C++ 对象模型以及各种支持的底层实现机制,更好的理解抽象和实际之间的平衡。后者的话学习要求不算很高,简单理解就是便于大家理解 C++11,无论是面试、工作还是和朋友吹水都用的上(逃)。

还有一些 C++ 的书单,因为自己没有读过,就不在这里推荐了,不用想你们肯定也知道是哪几本。

今天先到这里,以上是语言准备篇(C++)的内容。

下期是数据库篇。

love & peace

算法转开发的渣渣秋招之路

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期精华帖

热门推荐