Beginners to explore the learning algorithm

This article transferred from my personal micro-channel public number, time although in the past has been more than four months, but I personally believe it is instructive to bring to you, so take this time to share with you, to share micro-channel public number is limited, and timeliness It is relatively poor, and blog timeliness is better, but also brainstorming, welcome friends comments in the comments area, the saying goes, many hands make light.

It reads as follows:

Chinese New Year holiday at home for 10 days. Back to Beijing tomorrow.

Micro-channel public number article also stopped for two weeks more. Thanks to new friends every day concerns, but also to thank all the attention and support of friends. 2019 output for more technical dry dry goods or other non-technical (but I for my definition of public micro-channel number is mainly oriented to technology-based, non-technology may be less).

 

Algorithms for me, with a poem, the "Quiet Night, extremely difficult."

Originally a year before thinking about time to overcome, it seems unlikely.

Living in my case, not only we need to learn in first-tier cities through leisure time algorithm, but I still have to learn the latest technology, but also often have to replenish computer-related basis (the year do not work hard, too much of yourself to relax consequences).

 

Chinese New Year holiday, just relaxing and playing, such as run fast, king, watching movies and a few good friends and party, also known under the brush almost, in the Middle East know almost look west to see, read several articles in article I for now more interested in how to learn arithmetic.

 

I am currently in terms of algorithms and does not bring real benefit to me, at least no other software engineering techniques that brought me directly benefits (such as using shiro I can easily complete the interface access control, using Nginx to do load balancing, use examples of such numerous Redis cache data).

 

It can be inferred algorithm for me real interest is not large, but why should I insist to learn it?

 

To pull hook, boss direct hire recruitment sites, some large listed companies and the majority of small and medium companies are mainly required to develop a common technique to master and highly skilled, experienced certain areas of extensive project experience, such as banking , medical, office, etc., for the ability of the algorithm is not very valued aspects (of course, if it is in the school participated acm contest winners, brush off questions or algorithm is also an advantage over open-source project on github).

Such as the following figure:

Figure 1:

Figure II:

 

 Figure 3:

如果要说给出的理由的话,我觉得能够说服我自己的最大的理由是我不想成为一名码农(我对码农的定义的是将脑力劳动变成的体力劳动,经过这一年多的开发,我发现在工作中,有一半是体力,有一半是脑力,其实那一半体力是可以靠脑力解决的)。

 

另外研究算法的也是为了更好的读懂Java源代码和Spring源码相关的,作为一名Java后端开发,不深入了解源代码的实现思路是很难混的好的(主要指靠技术吃饭)。我觉得一个算法能力强的人读Java源代码和Spring源码及其其它相关的软件源码要比算法能力弱的人效率高的多。尽管两者之间不一定是正比。

 

关于算法学习(我作为初学者就不多说太多了,参考前辈们的经验)

 

当然了,虽说不说太多,但是还是要说的。

 

我对我目前的要求,只有一条。

一道算法题目,将思路想清楚想明白了将其攻克,再继续下一道题目和尽可能不借鉴其它已知的解决方案(参考不少知友的回答加上以自己1月份的做题经验来说,没有经过深度思考尝试多次解题直接去参考现成答案,收获太小,效率不高,感觉太浪费时间了)。

 

知友们给出的观点(如何学好算法),如下图所示:

图一:

图二:

图三:

看了这篇知友的回答,我点击该链接:

https://visualgo.net/en

这个链接的效果图,如下所示:

点击其中的一个,以排序为例(它会以动画的形式展现,有助于更形象的感受,可以作为算法学习的辅助工具):

图四(为什么要学算法):

图五(有没有学不会算法的人):

 

这让我想起曾经看过的一篇文章,说的是一位十几岁就出来打工,快三十岁或者三十岁以上年龄咬紧牙关学软件开发,最终还是学成对的。由此看,人必须要有决心,想当初新中国建立也才十来年,自力更生造出了原子弹、氢弹等核武器,使我们不再受制于他国的核威胁。

 

关于刷算法题网站有很多,比如目前我常用的就是力扣,

力扣题库(也就是现在比较出名的leetcode,记得前段时间我们经理招人时,特别强调这么几点,有leetcode刷题经验的、有个人github的、有个人博客的优先):

https://leetcode-cn.com/problemset/all/

 

还有一个国内挺出名的牛客网:

https://www.nowcoder.com/

 

图六:

 

 

想到我当初看书,一周一本书,然而并没有什么用处。

有句话叫做,欲速则不达。

慢就是快,快就是慢。

举例说明:

以我为例,经理要求某个功能时,我在完成该功能之前,事先画个草图,仔细分析,功能拆分(通常要求的功能是一个大的功能,大的功能一般包含好几个小功能),再度确认(将列举画好的草图跟经理确认一遍,这样的好处是,确定需求无误,减少盲目开干浪费时间)。事实上证明是非常有必要的,前期我没有这样做,盲目埋头干导致的需求没有理解透,做出的功能也不对,以至于重做(重做是一件非常痛苦的事情),很多程序员都有过这样的经历,新增功能是一件很容易的事情,但是要重构原有的功能代码是一件很不容易的事情(特别是时间过了很长,如果编码规范不是特别好的话,会导致许多问题,比如代码可读性、代码耦合性等,我觉得这两个是维护代码最痛苦的事情)。

由此推论出如下:

给定需求->分析思考需求(确定需求的合理性,功能多少,时间周期,能不能做)->跟领导确定需求->需求确定,撸起键盘开敲->完成后的效果,找产品经理或者领导确认。

这一个流程下来时间虽然花不少,但是想想如果没有听清需求正确分析需求直接开敲那样的后果,你会发现这样做其实是很节约时间的,所以正好验证,慢就是快。

 

 

今天就说到这吧,回到北京后,一切都将回到正轨。

继续我的工程师成长之路。

 

另祝2019年,大家都能实现自己的目标,也许实现目标的过程中是一件比较痛苦的事情,但是想想度过这段痛苦的过程后,你将会获得无比强大的力量。

 

我的微信公众号,如图:

 

Guess you like

Origin www.cnblogs.com/youcong/p/10961056.html