我的offer之路(一)

目录

1.职业规划。

2.刷题。

3.看书。

《剑指offer》

《数据结构算法与应用:C++语言描述 》

《Effective C++》

《C与指针》

4.异步刷题。

5.未来。

C/C++

TCP/IP 和网络编程

Linux服务器开发

其它

 


这也是一个总结2018年7月的博文。

 

1.职业规划。

在各公司的招聘网站看岗位需求具备的条件。我确定了求职大方向。c++工程师和算法工程师(图像处理;视觉开发)。

我的offer之路(一)_第1张图片

可见这两个岗位的核心都是具备 精通C/C++ 的技能。

我决定先从c++开发开始学。

作为一个c++开发者,必须具备的技能如下。 

我的offer之路(一)_第2张图片

我求助了本科学长狗哥关于刷题的方法。

开始刷题。 

 

2.刷题。

我刚开始刷题是刷基础小题,没有经验。大概就是把所有面试会考的题库都包括,然后从零开始刷,边刷边做错题记录。后来我发现这种效率很低,没有专项训练,也没有系统地去学每个分支体系,顶多是应试罢了。

然后我放弃了题海战术。

开始看书。

 

3.看书。

《剑指offer》

第一本书是《剑指offer》,里面有66个题目。书的结构如下。

基础知识

  1. 编程语言
  2. 数据结构
  3. 算法

高质量代码

  1. 规范性
  2. 完整性
  3. 鲁棒性

解决问题的思路

  1. 画图
  2. 抽象问题具体化
  3. 复杂问题简单化

优化效率

  1. 时间效率
  2. 空间和时间效率平衡

其它能力

  1. 沟通和学习
  2. 知识迁移
  3. 抽象建模
  4. 发散思维

两个面试案例

开始每天下班回来看一个题目。因为很久没编程。所有最开始的几道题我做得非常艰难,阅读解决思路,然后复制答案,就修改了几处就在在线编程中运行测试。实际上还是无法自己写出这样的代码。然后我做到了第七题的时候,我就开始认认真真地分析思路,并在草稿纸上默写出自己的代码,画图分析数据结构。这种方法大大加深了我的印象。我开始自己在在线编程上写代码调试了,测试结果也accept了,当时是非常喜悦的。我开始每天这样,一天做一个题,就很满足了。

知道我看到了算法部分。第11题。已经开始有点看不懂了,因为C++基础并不牢固,我看答案的时候,对于&的含义都模糊不清。而书中并没有详细的说明。可能这些都是基本常识。这时我意识到我该回去好好补补算法基础了。


我求助了本科同学,武大cs专业。他现在已经拿到了offer。

他推荐了两本书,《算法导论》。《深入理解计算机系统》。

我买了 《数据结构算法与应用:C++语言描述》。《深入理解计算机系统》。

第二本真的太难了,我不打算看完,准备作为参考书,工具书。

开始看第一本。


《数据结构算法与应用:C++语言描述 》

这是一本讲算法的书。都是每天下班后晚上看的,所以花了几天才看完了第一章 (c++回顾)。

函数与参数

  1. 传值参数
  2. 模板函数
  3. 引用参数
  4. 常量引用参数
  5. 返回值
  6. 重载函数

异常

  1. 抛出异常
  2. 处理异常

动态存储空间分配

  1. 操作符new
  2. 一维数组
  3. 异常处理
  4. 操作符delete
  5. 二维数组

自有数据类型

  1. 类currency
  2. 类的封装
  3. 操作符重载
  4. 友元和保护性类成员
  5. 条件编译语句

异常类

递归函数

  1. 递归的数学函数(阶乘,斐波那契数列)
  2. 归纳证明法
  3. c++递归函数(阶乘,求和,排列)

标准模板库STL

测试与调试 

主要讨论了C++的特性。很粗略。但是给我了一个非常不错的学习C++的框架视图。我认为我有必要更深入去研读C++的原理。尤其是标注成红色的内容。当我终于看懂递归方法的全排列的时候,豁然开朗,算法真的很有趣,数学也很美,尤其是完全理解了解决问题的思路后。当我看到STL时,我依然弄不清楚底层的算法,意识到光是STL就可以让我好好学习很久了。

这个时候我有点不想继续看这本书后面的知识了。因为我觉得我的C++基础知识真的很薄弱。然而我又不想从头开始看那本厚厚的primer,我这时候翻出来我很久之前买的一本《Effective C++》,我的计划是从框架体系入手,也就是从高级开发的角度入手,再去追求细节的完美。过分讲究细节会拖延我的进度。因为我还有很多东西要学。tcpIp网络编程,还有tmp,Linux之类的。这是条不归路哈哈。

开始看《Effective C++》。


《Effective C++》

这是一本超级酷的书。尤其是翻译者。翻译的太好了!

学一个语言的最终目的就是去学会去应用它,而这本书告诉你如何更优质地去使用这门语言。对于一个没有写过自己独立程序的人来说,这本书可以帮助我从一开始就养成好的编程习惯。

对于其中的C的细节,我都会在《C与指针》里面找到解释。

开始看《C与指针》。作为参考。


《C与指针》

这本书既基础又深刻,关键还是97的老书,C99版本之前的。所以有的细节我读的都很费力。

同时这也是这本书的优点,这本书真的太细了!我看了二维数组,讲解的非常细致,好好看,就会理解的很深刻。

但是弄懂细节需要大量的时间。

这是一个时间分配的问题。也许我看多了自然就知道怎么处理了。

 

4.异步刷题。

后来我无聊的时候,就开始刷C++专项训练的题。只不过现在的刷题不是为了刷题,而是无聊刷题,所以我叫它异步刷题。

比如出去胡吃海喝的时候,我就刷个五题。

拉屎的时候,也来个五题。

刷牙的时候,来个五题。

睡前,再来个五题。

有次做得太兴奋了,搞得失眠了,所以不建议睡前刷。睡就好好睡。

也有段时间,因为想搞懂题目,花了很多精力去查资料。导致进程卡死。但是刷题的目的是为了查漏补缺,不是学习。

 

5.未来。

C/C++

  1. 试图寻找些开源项目自己看。现在的水平不够。
  2. 读读STL源码。

TCP/IP 和网络编程

Linux服务器开发

其它

  1. 把简历做得更好。
  2. 还要花时间去做个PPT,告诉老板我在想什么,为什么不在公司实习了。

 

总之未来会很忙很忙。

 

 

 

 

 

转载于:https://www.cnblogs.com/lightmare/p/10398826.html

你可能感兴趣的:(数据结构与算法,c/c++,面试)