因为是野路子走出来的码农,一直觉得自己算法这方面特别烂。

2016-12-02 10:21:21 +08:00
 liyu4
话说那一年,我还在杭州做其他行业的时候,学了个把月的 go ,投了几封简历,然后上海有一家公司电话和我面试,对方公司可能也并不需要找很高级的工程师,就问了我知道排序算法有几种,诚然我是知道一些的,就比如大学时候大家都耳熟能详的冒泡排序,然而我也只知道这些,毕竟大学不是学这个专业的也不是能搪塞如此尴尬的借口,自 2016 年初来到上海,掐指一算也有春夏秋冬了,但是之前没有弄明白的至今依旧是一片空白。不知道各位亲爱的同学是否也有跟我一样情况的。所以我在 github 上给自己开了一个 repository ,有需要的同学我们可以一起讨论和学习,水平实在有限,路过的大神愿意的指点一二,在下也是感恩涕零。

address: https://github.com/liyu4/learn-algorithm-365

ps:为什么楼主现在不会用到算法,其实也会,但是一般都是使用别人写好的,或者说是 golang 自带的 sort ,就比如说你想要一个安全的 set ,别人已经帮你写好了,安全的 map 没问题, github 也有人写好了,这种情况不再赘述。另外就是本人的工作比较杂,有时候是写 api ,或者是做一些简单的前端开发(公司没人),有时候还会去写一些其他的东西,还有就是和数据库的一些交集。
10207 次点击
所在节点    程序员
94 条回复
liyu4
2016-12-02 14:18:26 +08:00
@jyf007 我的感觉跟你一样。
liyu4
2016-12-02 14:20:59 +08:00
@skydiver 那还是冬天,确实回答的拙劣,让此时的自己想起来也是尴尬万分。确实是说明 for 是如何使用的,慧眼识珠呢。
liyu4
2016-12-02 14:22:23 +08:00
@nsxuan 恩。
skydiver
2016-12-02 14:28:25 +08:00
@liyu4 慧眼识珠是什么鬼……怎么忽然出现这个成语……
liyu4
2016-12-02 14:28:54 +08:00
@flymemory 已经更正过来了,向你学习!
liyu4
2016-12-02 14:29:26 +08:00
@skydiver 就是能发现事情本质的能力啊 😄😄
liyu4
2016-12-02 14:30:03 +08:00
@skydiver 当然这是夸你的
lxgeek
2016-12-02 14:31:13 +08:00
leetcode 写写。
lixile
2016-12-02 14:56:45 +08:00
@liyu4 再快 也要年后了 现在的水平 完全没信心找到工作 看了楼上 我这个英语渣感觉无路可活 英语是全校倒数 无论是高中还是大学
wcj
2016-12-02 14:59:12 +08:00
表 栈 队列 树(二叉树为主,包含二叉平衡树)散列 堆(二叉堆为主) 图(包含 Dijkstra 等经典算法)
简单排序算法 希尔排序 堆排序 归并排序 快速排序 桶排序
复杂性分析 分治 动态规划 贪心算法 回溯法 分支限界法
以上大致是本科计算机学的数据结构和算法
tyrealgray
2016-12-02 15:09:13 +08:00
当初自学 C ++的时候,学完并没有急着开始找工作,又去买了本本科的计算机算法教程,从表学到二叉堆,二叉平衡树,直到红黑树看不明白才停下的。
otakustay
2016-12-02 15:27:51 +08:00
我是正规路子出来的,算法也特别烂
liyu4
2016-12-02 15:38:37 +08:00
@tyrealgray 佩服你的毅力和坚持,这个世界就是因为有你们这样可爱的人,才会变的好一点。
liyu4
2016-12-02 15:39:09 +08:00
@otakustay 正规军,不要混到野战部队里来。
liyu4
2016-12-02 15:39:42 +08:00
@wcj 总结的很像 算法导论, 看来你学的很扎实,本科的东西还记得呢。
jyf
2016-12-02 15:39:50 +08:00
我是自学的 也确实想跟你一样把所有常用的过一遍 一起努力吧
liyu4
2016-12-02 15:40:45 +08:00
@lxgeek 可以考虑,不过我们这些半路的孩子,还是先吧各位同学提到的基础,学好了,再去刷题吧。
liyu4
2016-12-02 15:42:40 +08:00
@jyf Follow me 今晚一起学习堆排, 或者你也可以关注我的 github , 我会在上面留下我的联系方式。
sgissb1
2016-12-02 16:28:16 +08:00
不知道是大家学的时候被误导,还是被部分书籍误导了。下面是关于“算法”一名词的解释:

https://en.wikipedia.org/wiki/Algorithm
http://baike.baidu.com/link?url=VNoc5pXiMd4x6tZNYc4oZcitXLKJCwbrPpfnpBHR2sQW8EkCdNr-GvTlgkjciCQn9pk6j4ck5mu7s7adKq6OZUxkrL-H5gZq15JuVg_ndze

事实上,关于比较常见的几种排序、树、时间复杂度的衡量方式,以及常见的集中排序、查找的时间复杂度我已经忘的差不多了。最近有两次面试还被人问道,起初还觉得比较惭愧;不过发现后来对方带着有色眼镜在看问题时,我就只能呵呵了。

“算法”大概可能还是分为两类:
1. 解决实际工程问题的一种方法或者步骤
2. 在已有的解决方法或步骤中,寻找一种更有效(性能更好)的方法和步骤

第一类是解决问题的思路和方法,第二类除了包括解决问题的思路和方法以外,还有一些数学的背景知识,或者一些额外的知识面。


首先我也不是科班出生,但数据结构也学过,不过当时在校期间也一笔带过(老实带着过,学生自己也不不知道为啥学,所以更加带过。)
但这不影响解决问题的实际情况,问题就是分两类:工程问题和科学问题。

工程问题更多强调的是如何寻求解决方案,并一点一点改造成符合实际场景的方案。
科学问题更多的强调理论知识储备和支撑。

哥们还是应该客观一点看,就像我一个老师说的一样:“考研这件事其实就是在考大家的英语,对于理工科学生来说,大家其他科目水平一般都差不多”,面试问‘算法’一样,谁能保证答得出来的人招进来后就一定能干活(可能是我身边例子太多了)?

说这么多,“算法”这玩意要看,我也正在一点点的抽时间去看,但也要注意一些工程问题的解决思路和方法。面试有时就是纸老虎,不必太过纠结。
JFM0530
2016-12-02 16:34:42 +08:00
现在用 golang 的人好少呀。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324743

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX