新足迹

 找回密码
 注册

精华好帖回顾

· 足迹的平均工资到底是什么水平?顺道自扒 (2016-1-22) Emwimlla · 租到了房子,可是租下的不是我!-我的租房历程! (2004-12-10) leeshine
· 我爱我家征文活动 我的第二故乡 (2010-9-4) lilierong · 果果成长~幼儿园经验分享讨论贴~(一)~ (2009-12-9) oscarmami
Advertisement
Advertisement
查看: 13978|回复: 91

[IT] 弱弱问一句,学习编程一定要精通数据结构和算法吗? [复制链接]

发表于 2018-8-10 16:34 |显示全部楼层
此文章由 APSTNDP 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 APSTNDP 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 APSTNDP 于 2018-8-15 11:02 编辑

弱弱问一句,学习编程一定要数据结构和算法吗?

看了很多IT大牛的文章,都说语言只是工具,背后的数据结构和算法才是精华。就想弱弱问一句,需要队数据结构和算法精通到什么程度才能找到开发类相关的工作呢?

-=======================================

学生时代学过一点编程的皮毛,没有学过数据结构和算法。

现在工作跟IT网络相关,但是用不到编程开发,因为最近想换个开发的工作,特来请教。
继续做梦不要醒
Advertisement
Advertisement

发表于 2018-8-10 17:30 |显示全部楼层
此文章由 fifapig 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fifapig 所有!转贴必须注明作者、出处和本声明,并保持内容完整
做 LOB 的不太需要, 做core product 需要。

发表于 2018-8-10 19:15 |显示全部楼层
此文章由 江流 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 江流 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看看之前国内前端圈对于快排的讨论就知道其实并不需要啥知识就能开发
但是不懂的话,可能也会让你止步于此吧{:14_853:}
头像被屏蔽

禁止发言

发表于 2018-8-10 19:35 |显示全部楼层
此文章由 矮司豹㯥剃呐 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 矮司豹㯥剃呐 所有!转贴必须注明作者、出处和本声明,并保持内容完整
必须的啊,你想要掌握核心技术,成为不可替代的人的话,就一定得在算法或者数据里面精通一个,基础地编程没什么门槛的,要不然为什么那么多人高数和计算鸡一起学

发表于 2018-8-10 19:49 来自手机 |显示全部楼层
此文章由 miproduct 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 miproduct 所有!转贴必须注明作者、出处和本声明,并保持内容完整
就一条,google 面试只面试算法和和设计。不懂算法和数据结构不可能写出来好程序的

发表于 2018-8-10 19:50 |显示全部楼层
此文章由 audreamer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 audreamer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
fifapig 发表于 2018-8-10 17:30
做 LOB 的不太需要, 做core product 需要。

请问什么是LOB?
Advertisement
Advertisement

发表于 2018-8-10 19:51 |显示全部楼层
此文章由 上班ing 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 上班ing 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果不打算去谷歌这类公司的话,不需要。有 点基本的概念就行了。

发表于 2018-8-10 19:52 |显示全部楼层
此文章由 kaixinkaixin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kaixinkaixin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你是想入门就开始搞算法还是指着算法找工作?

发表于 2018-8-10 20:07 |显示全部楼层
此文章由 fenghuo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fenghuo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看你做哪方面的编程, 如果是后端/实时的, 那一定要求对算法有了解的,

发表于 2018-8-10 20:20 |显示全部楼层
此文章由 pipiclj 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pipiclj 所有!转贴必须注明作者、出处和本声明,并保持内容完整
别听楼上的几位瞎吹,
我就想问问楼上的,如果你在写程序的时候,需要用到一格排序算法,你第一个反应是啥?自己写一个?还是现有的库拿来用?

需要一实现一个HashTable,你是用Python里的dict, Java里的HashMap,还是自己拿个数组写个算法自己拼起来?

你是去stackoverflow上抄别人好评如潮的Function,还是自己花半天时间写一个还不知道有没有漏洞的算法?

现在的商业开发,都是拿各种现有的东西过来,组合成一个可以商用的东西。能把这个做好,就已经非常不容易,就算你去了Google,让你去开发Google Map,你也很少会涉及到算法开发,都是拿现成的。毕竟那些千锤百炼的库文件,和你自己拍脑袋想半天的东西,哪个更成熟?

至于Google面试为啥考算法?那时因为他想知道你是不是聪明,会玩算法的人,一般都比较聪明,仅此而已。

评分

参与人数 7积分 +24 收起 理由
thinker_oz + 3 我很赞同
tyler_kwok + 6 我很赞同
APSTNDP + 3 你太有才了

查看全部评分

发表于 2018-8-10 20:37 来自手机 |显示全部楼层
此文章由 miproduct 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 miproduct 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 miproduct 于 2018-8-10 20:39 编辑
pipiclj 发表于 2018-8-10 20:20
别听楼上的几位瞎吹,
我就想问问楼上的,如果你在写程序的时候,需要用到一格排序算法,你第一个反应是啥 ...


你不懂还在这里误导人就不对了,不懂算法和数据结构很难选择正确的的数据结构,你说的那些太基本,比如你让写一个自动完成的功能,如果你不懂Trie,你都不知道怎么去查。好的算法比强大的计算机还厉害。如果你不懂dynamic programming, 我很难相信你会写出来什么好的code。数据结构和算法是基础,如果基础不好不可能写出来好的code。

评分

参与人数 1积分 +4 收起 理由
audreamer + 4 我很赞同

查看全部评分

Advertisement
Advertisement

发表于 2018-8-10 20:44 |显示全部楼层
此文章由 上班ing 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 上班ing 所有!转贴必须注明作者、出处和本声明,并保持内容完整
miproduct 发表于 2018-8-10 20:37
你不懂还在这里误导人就不对了,不懂算法和数据结构很难选择正确的的数据结构,你说的那些太基本,比如你 ...

dynamic programming是什么?

发表于 2018-8-10 22:19 |显示全部楼层
此文章由 weeded 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 weeded 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 weeded 于 2018-8-10 22:40 编辑
miproduct 发表于 2018-8-10 20:37
你不懂还在这里误导人就不对了,不懂算法和数据结构很难选择正确的的数据结构,你说的那些太基本,比如你 ...


百分之99%的编程都不需要像你描述的这样去完成。就算googler设计一个产品,也是把产品发布到borg上,让borg去执行让产品更高效的运行,而不是googler自己去研究算法。因为做一个产品可能只需要一个月,至于从算法上来说怎么让这个产品运行的更有效率,这个时间成本是个无底洞,从商业运行角度根本不会让你去过多的思考深层次的算法。底层算法都是打包好给程序员使用。至于这个算法要怎么去设计,那就交给1%的数学家去研究了。

我不是说算法不重要,只是对于算法这个东西,交给1%的人去研究,另一部分人可以更加有针对性的对产品进行思考,分工合作让整个生态链运行的更加有效率。重要的事情说三遍,99%的人专注于语言与产品及业务逻辑,而1%去关心算法,大家职责不同。

很多人一直在强调算法,的确重要,但是这不是绝大多数人需要去关心的。那些一直喊“算法”的人一类肯定是专注于算法的数学家,另一部分人恐怕是还没有接触到商业生态链的在校学生吧。如果都不是,那就是本身没在做科学,但又对科学这个未知领域充满了敬畏感,然后在网上搜一些专业名词来装X的吧。


其实谷歌面试的那些“逻辑”问题,目的是在考验一个人是否聪明,而不是算法知识是否扎实,理论可以学习,但一个人不聪明就没得办法了,最后说一句,谷歌面试官fail一个人,不是因为这个人对于算法或者理论知识不熟悉,是因为这个人可能太执着于某个东西而无法thinking out of the box

评分

参与人数 1积分 +3 收起 理由
APSTNDP + 3 感谢分享

查看全部评分

头像被屏蔽

禁止发言

发表于 2018-8-10 22:33 |显示全部楼层
此文章由 hotornot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hotornot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
扯淡
扎克伯格就会写个网友,不照样搞出了Facebook

发表于 2018-8-10 23:12 来自手机 |显示全部楼层
此文章由 夜鸣猪 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 夜鸣猪 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 夜鸣猪 于 2018-8-10 23:14 编辑

码农要分software engineer,application developer,还有更偏业务的analyst programmer,等等各种农。界限有点模糊,不过还是不太一样的。

发表于 2018-8-10 23:14 |显示全部楼层
此文章由 wangwalter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wangwalter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
no
Advertisement
Advertisement

发表于 2018-8-11 00:25 来自手机 |显示全部楼层
此文章由 miproduct 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 miproduct 所有!转贴必须注明作者、出处和本声明,并保持内容完整
weeded 发表于 2018-8-10 22:19
百分之99%的编程都不需要像你描述的这样去完成。就算googler设计一个产品,也是把产品发布到borg上,让bo ...

说一个简单的问题,从一个int array 中取出k个最大的数,这是一个很常见的问题。你说一下不了解算法和数据结构怎么做出来?现在有些程序烂就是不重视最基本的东西,以为知道一些流行的framework就可以写出来好代码。

发表于 2018-8-11 01:10 |显示全部楼层
此文章由 happysee 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 happysee 所有!转贴必须注明作者、出处和本声明,并保持内容完整
程序=算法+数据结构
不懂算法和数据结构的话写出来的不是程序啊

发表于 2018-8-11 07:14 来自手机 |显示全部楼层
此文章由 weeded 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 weeded 所有!转贴必须注明作者、出处和本声明,并保持内容完整
miproduct 发表于 2018-8-11 00:25
说一个简单的问题,从一个int array 中取出k个最大的数,这是一个很常见的问题。你说一下不了解算法和数 ...

已经说了,术业有专攻,你非要举个例子,然后别人再讲个答案来抬杠大家也看的不知所云。你这么纠结算法问题我觉得你应该去学术论坛,找一些志同道合的朋友一起研究底层算法,对各种instance进行优化,造福于人民。而不是在这里搞得感觉大家都要失业。再强调下,算法与数据结构很重要,是程序的fundation,但只需要少部分人关注在这个领域就行了。面试中问的逻辑问题不是在考验你对算法理论的掌握程度,除非这个岗位是算法工程师,需要智商与理论知识相结合,但这种岗位已经偏向数学领域了

发表于 2018-8-11 07:38 |显示全部楼层
此文章由 righttang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 righttang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 righttang 于 2018-8-11 07:43 编辑
miproduct 发表于 2018-8-11 00:25
说一个简单的问题,从一个int array 中取出k个最大的数,这是一个很常见的问题。你说一下不了解算法和数 ...


做你这个问题需要懂算法嘛?

把这个问题翻译成英文,find k largest numbers in the array,然后加上你的变成语言,以这个为关键字放狗一艘

各大论坛的帖子马上就跳上主页,然后看看别人的帖子,挑一个评分高的,直接复制黏贴抄过来就好。我整个程序写完了都不会去关心这个算法具体怎么算的,我有那闲工夫,我会更多的关心测试是否全面,需求是否都涵盖了。

以我的经验,现在的程序,只要数据进内存了,你随便怎么整,都很快。
所有的Performance 瓶颈,都在外部数据交互上,比如说数据库,各种HTTP服务等等。
把这些External的东西都理清楚,里面你就随便搞把,很多时候我就懒得想,直接三个循环嵌套,做On2遍历。一共也就几千个数据,能慢多少?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2积分 +3 金币 +2 收起 理由
guyb2011 + 3 我很赞同
rayki + 2 感谢分享

查看全部评分

发表于 2018-8-11 08:15 来自手机 |显示全部楼层
此文章由 applenice1982 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 applenice1982 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这么说吧,如果你Data structure and algorithms 或者design patterns 很好 对你工作上还是有很大的帮助,特别是你想做架构 给整个项目设计 framework.如果只是为了找个工作。不是那么重要。艺不压身么!很多印度人狗屁不懂,还在那里瞎嚷嚷
Advertisement
Advertisement

发表于 2018-8-11 09:17 |显示全部楼层
此文章由 沧海一帆 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 沧海一帆 所有!转贴必须注明作者、出处和本声明,并保持内容完整
简单的回答:
初学者没必要,在土澳做一般产品开发不需要
要想做大牛,或者进硅谷大公司就需要

发表于 2018-8-11 10:28 |显示全部楼层
此文章由 miproduct 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 miproduct 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有些人真是无知无畏,哪来的自信?同一个问题,受过算法训练的程序员可以在很短的时间解决问题,没有这样训练的人只会用google,即使依赖google和stackoverflow,多个答案中,你知道如何选择正确的吗?另外你可以google一下程序员需要不需要了解数据结构和算法。有人说现在计算机很快不需要考虑这些,其实现在很多程序是在手机上运行的,烂的代码只会加快电池的消耗和增加内存的使用,让手机越来越慢。数据结构和算法用在任何地方,无论内部计算还是外部资源的调用。想成为一个好的程序员,先要把基础打好,写代码的时候多考虑一下数据结构和算法。

发表于 2018-8-11 15:04 |显示全部楼层
此文章由 yangwulong1978 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yangwulong1978 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实 说的俗气点你如果找工作 你算法 数据结构好的面试也有优势

发表于 2018-8-12 06:48 |显示全部楼层
此文章由 xxmplus 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xxmplus 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这么说吧,一个行业里也分三六九等,最初级的入门职位确实已经不需要什么算法了,因为在中高级那一档的人都已经把最基础的东西帮你包装成你不懂原理也可以用的东西。如果你立志要在这一行混下去,你的目标是 停留在入门职位呢?还是想要往更高层次攀登呢?

IT的本质释放生产力,用机器代替人去做重复劳动,整个行业的趋势就是不断向上,把低层次的工作简化(成外行也可以干),然后用机器代替外行,中层次的工作于是就变成新的低层次,然后再重复这个循环,把低层次的工作丢给机器去完成。你的目标是做那些在可见的未来会被机器替代的工作吗?

想明白了就知道到底要不要学了

评分

参与人数 2积分 +5 收起 理由
klgwee + 2 有共鸣
APSTNDP + 3 感谢分享

查看全部评分

发表于 2018-8-12 07:18 |显示全部楼层
此文章由 maudlin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 maudlin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
入门工作不需要,你的精力是有限的,先集中精力学习入门工作需要的语言,然后找到入门工作之后可以业余学算法提升自己。
Advertisement
Advertisement

发表于 2018-8-12 08:23 来自手机 |显示全部楼层
此文章由 zhaozli 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zhaozli 所有!转贴必须注明作者、出处和本声明,并保持内容完整
会算法和数据结构的,大多数写代码会去思考,会去优化自己的代码。不会算法和数据结构的,大概率写代码不过脑子,给好的framework也能搞得一团浆糊。没多少逻辑的一个页面,莫名其妙的慢,这就是现实。

发表于 2018-8-12 10:25 |显示全部楼层
此文章由 hjw1905 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hjw1905 所有!转贴必须注明作者、出处和本声明,并保持内容完整
miproduct 发表于 2018-8-10 20:37
你不懂还在这里误导人就不对了,不懂算法和数据结构很难选择正确的的数据结构,你说的那些太基本,比如你 ...

澳洲senior developer不超过5%的人还知道trie怎么写, dp是什么,说不定连最基本的数据结构,linked list也都不会了。面试也只有低于5%的雇主回去问算法和数据结构

发表于 2018-8-12 10:29 |显示全部楼层
此文章由 hjw1905 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hjw1905 所有!转贴必须注明作者、出处和本声明,并保持内容完整
miproduct 发表于 2018-8-11 00:25
说一个简单的问题,从一个int array 中取出k个最大的数,这是一个很常见的问题。你说一下不了解算法和数 ...

一个quick select或者heap解决的问题,为啥需要自己去想着办法去学会quick select, heap怎么写, google下什么都有了,现有成熟算法抄过来

发表于 2018-8-12 10:37 |显示全部楼层
此文章由 hjw1905 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hjw1905 所有!转贴必须注明作者、出处和本声明,并保持内容完整
miproduct 发表于 2018-8-11 10:28
有些人真是无知无畏,哪来的自信?同一个问题,受过算法训练的程序员可以在很短的时间解决问题,没有这样训 ...

手机上优化不好,比如100个data model, array或者set, o(n)的复杂度和o(1)的复杂度对电池的影响几乎是微乎其微的,加上现有大量的语言的API都把这些封装的很好了,根本也不需要自己去写这些东西。写一堆复杂算法,维护起来都难,bug说不定还满天飞。我更倾向于牺牲一点performance (几乎都是<1ms),而有个更好维护,容易扩展的代码

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部