• 学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘


    大家好,我是吴师兄,不知不觉的从 16 年接触算法开始到现在已经过去四年了,今天分享一下我学算法的经历,希望对学算法的你有

    一、为什么学算法

    首先,我们得承认,算法在工作中不是必须的!

    那为什么还要学算法呢?

    这个问题真的是仁者见仁智者见智,有的人想提高技术水平,研究源码时发现得掌握相应的数据结构与算法才行,比如  Redis 里面的跳表、 Linux 内核文件系统里面的红黑树;有的人认为学好算法能改善思考问题的方式,有意的训练编程的思想。

    而我的想法很简单粗暴:为了跳槽涨工资!

    我是非科班出身的程序员,误打误撞的进入了互联网行业,而作为一名初级程序员,只要掌握了 Ctrl + C 和 Ctrl + V 就能处理 90% 的工作,数据结构与算法在工作中基本上没用到,即使平时看源码的时候也不会去深究为什么会这样设计。

    日子就这样简单枯燥的过去了,直到一年半后我决定跳槽。。。

    16 年的时候视频方向比较火,所以投了 Bigo 的简历,没想到一去面试就给我三道算法题,依稀记得是把字符串转换为整数、合并有序数组、动态规划题,现在想来一点都不难,当时却是一脸懵逼,相当尴尬。

    那个时候我才知道,哦,程序员原来还要学算法。

    二、怎么准备算法面试

    简单起来就三句话:边看书(视频),边敲代码,边做题练习。

    这三个过程中都需要去思考,多问为什么,这样在面试过程中才能表现的更好。

    比如面试官问你如何对一组数据进行排序,那他可能希望你对这组数据有着更全面的思考:是否包含大量重复元素?取值范围是否有限?是否近乎有序?

    正如前往所言,数据的不同特点对应着不同的算法。

    大量重复元素意味着可以使用三路快排。

    取值范围有限可以考虑使用计数排序。

    插入排序在近乎有序的情况下性能最佳。

    推荐阅读:

    https://coding.imooc.com/class/82.html

    三、我用过的那些算法网站

    1、LeetCode

    英文网址:https://leetcode.com/
    中文网址:https://leetcode-cn.com/

    难度从 Easy、Medium 至 Hard 都有,目前来看挺多大厂面试官喜欢从中挑选题目。

    2、牛客网

    https://ac.nowcoder.com/acm/home

    讨论区:

    https://www.nowcoder.com/discuss

    牛客网提供了众多的企业校招真题供大家练习,另外还有很多很好的题库供大家在线编程使用,特别推荐《剑指offer》题库,额外推荐他们的讨论区,包含了各大互联网大厂的面试经验,值得你提前学习参考。

    3、Data Structure Visualization

    https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

    一个数据可视化和算法可视化的网站,用它可以生成各种各样的数据结构,模拟它们添加和删除的过程,而且还可以用它来演示算法的执行过程。

    4、VisuAlgo

    https://visualgo.net/zh

    一个动态可视化网站!

    学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘

    堆的学习过程有时候挺难理解的,在这个网站上演示一下元素的各种操作过程,会带来一些更直观的印象。

    学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘

    四、书籍 & 视频  & 专栏

    市面上有许许多多的书籍、视频、专栏,很多人都在纠结:我应该选择书籍、视频还是专栏进行学习呢?哪本算法书籍比较好呢?哪些视频最符合我的情况呢?那些专栏是不是割韭菜?

    事实上,无论书籍、视频还是专栏,里面的内容基本上都是这些。

    • 复杂度分析

    • 基本算法思想

    • 排序算法

    • 搜索

    • 查找

    • 字符串匹配

    • 线性表

    • 散列表

    不用纠结,你只要踏踏实实的把任何一本书籍或者一套视频或者一个专栏看完,你的算法基本上就入门了,剩下的无非就是查缺补漏和练习。

    如果你还是纠结,那我可以给出几个小参考给你。

    如果你通勤时间比较久(在一个小时左右),那可以考虑使用 2 倍速 看视频或者听音频,一方面可以 ”自我感动“:我今天在努力学习,另一方面也可以更好进入工作的状态。

    注意:我在这里使用「自我感动」一词并非贬义,而是褒义;一般情况下,我们在等地铁或者公交的时候,无非在刷朋友圈、微博,或者看视频、抖音,想到自己平时在做这些事情,现在却在学习,怎能不感到一番。换句话说觉得自己在努力学习有什么不好?

    如果你每天有完整的一大段时间,那可以挑选一本薄一点的算法书籍,仔细看看,将课后的练习题做一做。

    《算法导论》不推荐初学者看。这本书是本神书,但是这本书的门槛比较高,需要有一定数学基础和算法基础的人去研究,如果你没有一定的基础或者对算法狂热的学习兴趣,你很难啃下去,最终丧失学算法的动力。

    Ps:给需要买书的同学提供一个当当优惠码,可以花160买400的书

    优惠码:B8HVHA

    如果你上班有划水时间,那可以挑选一个专栏去学习,编译代码期间、调试环境过程划一划专栏的章节,那也挺好的。

    目前极客、拉勾、掘金、GitChat 都有相应的专栏。

    五、软件

    软件的话推荐两个,一个叫 算法动画图解 ,一个叫 LeetCode 。

    学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘

    LeetCode 的评论区,人才辈出,骚话不断,题解区更是藏龙卧虎,值得一看。

    学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘学算法的那些年,吴师兄接触的网站、软件、视频、书籍大揭秘

    好啦,以上就是我的分享,感谢你的阅读:)

    最后,小编想说:我是一名python开发工程师,整理了一套最新的python系统学习教程,想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助.

    本文由 程序员小吴 创作  原文始发于微信公众号(五分钟学算法)
  • 相关阅读:
    c语言 数组名是常量指针
    c语言 动态数组
    c语言 指针的值
    c语言 &取地址运算符的理解
    c语言 指针与地址的区别
    c语言 指针与数组
    linux cheese摄像机工具在window电脑上显示
    C#实现简单的 Ping 的功能,用于测试网络是否已经联通
    c# 扫描局域网IP列表的几种方法
    c# 遍历局域网计算机(电脑)获取IP和计算机名称
  • 原文地址:https://www.cnblogs.com/12345ai/p/13691291.html
Copyright © 2020-2023  润新知