0%

算法简介

  • 在职业发展上,算法是衡量程序员能力的重要标准之一,对于求职特别是在大型科技公司中占有重要的位置。算法不仅仅是解决问题的方法,它还是程序员逻辑思维和编程能力的体现。

解决问题的能力

  • 算法作为解决问题的一种方法和工具,对提升程序员解决复杂问题的能力有着至关重要的作用。
  • 掌握算法可以帮助程序员更有效的分析问题,设计解决方案,并能在实现过程中选择最优的方法。
  • 没有算法基础的程序员,在面对数据处理,性能优化等问题时可能会感到无从下手,这不仅会降低开发效率,还可能导致项目难以达到预期的性能要求

算法的学习路径

  • 对于程序员来说,学习算法是一个连续且长期的过程。一个合理的学习路径是从基础的数据结构开始,例如数组,链表,树,图等,逐步深入到排序,搜索,图算法,动态规划等更高级的内容。
  • 实践是检验学习成果的唯一标准,通过参与实际项目,解决真实问题,参加算法竞赛等方式,可以不断提升自己的算法能力。

如何提高自己的代码/工程能力

  • 代码能力是计算机学生必须具备的能力,但是简单的说 代码能力 是不够的。项目需求,程序设计语言,开发框架多种多样,能力必须有针对性的培养。
  • 代码能力粗略的分为两类:
    • 写出(高效)解决单个问题的代码的能力,即算法能力,
    • 写出整体高性能可维护 优雅 的代码的能力,即工程能力
  • 这两者都可以继续分类。

基础工具和能力

算法题

  • 关于是否大量刷算法题历来颇有争议。有人说数据结构很实用,说算法能够锻炼思维和在压力环境下解决问题的能力。但是也有人说算法题需要大量重复训练单个知识点,学到的很多算法和实际应用不符。

  • 不管是申请实验室还是找工作,算法题是笔试中的常客,一定程度上是选拔人才的标准。

  • 一般需要掌握一下内容

    • 基础: 程序控制语句,数组,指针,函数
    • 基础算法:排序,穷举,贪心
    • 数据结构:链表,二叉树,图
    • 图论:搜索,最短路,连通性,连通分量
    • 询问:区间最值,单点修改,区间维护,区间修改,区间维护,
    • 动态规划和记忆化搜索
    • 数论(密码学)
    • 数值计算
    • 计算几何

学习开源代码

  • 优秀开源代码是很好的学习资源,在代码里可以学到从设计到每个部分的具体实现,如果能够读完一套相关领域优秀框架的源码,作一份笔记,将对自己的能力有很大的帮助。

培养读官方文档和源码的能力

  • 不论是什么项目,在深入学习一段时间之后,就会发现:百度一下能找到的东西太有限了。很多知识都存在于官方文档中,甚至为了明白到到底发生着什么需要直接进入所引用模块的源码。
  • 通过阅读文档/源码,可以学习如何严谨的设计程序的结构,以提高程序的各项性能。
感谢老板支持!敬礼(^^ゞ