crazyhadoop 发表于 2014-03-05 10:47

学习算法的那点事儿(获奖名单已公布-2014-4-21)

获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4135835-1-1.html

现在去面试会不会被问到算法和数据结构?不论是要找工作的应届生,还是征战职场不久的新人,
平时你们是如何准备学习算法的?想必工作中能天天使用各种算法的人也不多吧?
面试官偏偏就喜欢问算法,但算法的学习不是一蹴而就的,这该如何破?

今日话题
今天我们聊聊算法的学习吧!

[*]1. 平常是如何学习(夯实)算法和数据结构基础知识的?
[*]2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
[*]3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧。


活动时间:2014.3.5-2014.4.5

活动奖励:我们将会选择几位热心参与的朋友赠送一本《算法谜题》

图书简介:
《算法谜题》    购买链接: 京东Amazon当当网
http://images.china-pub.com/ebook3765001-3770000/3769485/zcover.jpg
作者: (美)Anany Levitin    Maria Levitin   
译者: 赵勇 徐章宁 高博
出版社:人民邮电出版社
ISBN:9787115338440
上架时间:2014-2-21
出版日期:2014 年3月
开本:16开
页码:246
本书是一本经典算法谜题的合集。本书包括了一些古已有之的谜题,数学和计算机科学有一部分知识就发源于此。
本书中还有一些较新的谜题,其中有一部分谜题被用作知名IT企业的面试题。全书可分为4个部分,分别是概览、谜题、提示和答案。
概览介绍了算法设计的通用策略和算法分析的技术,并附带实例。

样章阅读:
http://wenku.it168.com/d_001409520.shtml



肥头大呆脑 发表于 2014-03-05 12:52

•1. 平常是如何学习(夯实)算法和数据结构基础知识的?
    买了一本算法导论,正准备开始学,才看了几页。又买了一本具体数学,也只看了第一章。平时没有时间看,基础差,不容易看懂。
    感觉学好算法,需要多做练习,多用数学的思想来思考问题吧。
•2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
    目前的工作,用的都是最基础的数据结构和常规算法。如果学好了,就要考虑换一个有技术含量的工作了。
•3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧
    算法也算是基础吧,一般好点的公司在面试的时候都会问算法问题。以前去腾讯面试的时候,问到过扑克牌以及大数相乘的问题,具体的已经记不清了。

shangjieok 发表于 2014-03-05 14:46

不错,学习了。。扫描我头像每天都有 Linux相关的技术支持推送给大家。

2009532140 发表于 2014-03-05 15:06

本帖最后由 2009532140 于 2014-03-06 08:35 编辑

=================================================
1. 平常是如何学习(夯实)算法和数据结构基础知识的?
要说数据结构的基础知识,基本都是在大学的时候掌握的。当时感觉学的还不错。
对于书中的每一个算法都算是比较了解,之后又看了一下与之配套的1500题,是对教材的拓展。
相信,考过研究生的对1500提都不陌生,都拿着本书来涨姿势...
要是现在,主要工作是数据库相关的。进而,热衷于用SQL 语句来解决算法疑难问题。
主要混迹于itpub。上面的数据库开发大板不少版主也会经常出类似的问题,另外pub 每年也会有相关的竞赛。
大家都可以关注一下。
=================================================
2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
数据结构,对于计算机编程来说肯定是影响深远。
特别是其中的链表,堆栈之类的在各种编程语言中都有所使用。
要说算法,一般不会用到复杂的算法。
实际上,基本是一些FIFO ,LIFO 之类的简单算法。
虽然好的算法会使得编程变得简洁,但是读起来可能会很费时间。
给大家举个类似:
严蔚敏的数据结构的字符串一章中,有个模式匹配算法。
如何从一个找某个串在另一个中是否存在给了两个算法,其中KMP很是简洁,第一次看这个的人应该会感觉吃力..
但是从各种复杂度角度来说确实要少了很多..
现实也一样,算法只是编程的一个方面:可读性也不可忽视。。
=================================================
3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧。
如果考了,这就能说明在他们的工作中会经常遇到涉及算法的项目。
在我面试过的公司中,百度问的比较多。并且:算法中涉及到字符串处理的相当多...
举个例子:
①:在一个巨型文本文件中,每行只占有一个需要排序的字符串,如何做到让这个文本文件中的字符串按照一定次序排列。
        需要考虑时间与空间复杂度。
=================================================

kkddkkdd11 发表于 2014-03-05 15:13

1. 平常是如何学习(夯实)算法和数据结构基础知识的?
以前学过一些时间,后来用的少,都忘了...
在实际工作中,不如学设计模式来得实在

2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
常用的数据结构和算法会了,读代码能容易的点

3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧。
人家面试官的自由,找啥样人问啥都正常 呵呵
n年不面试了...
估计遇到这种问题,肯定被pass了

humjb_1983 发表于 2014-03-05 16:26

平时工作中能用到高级算法的场景非常少,对个人而言,感觉确实用处不大,很多算法看了不用,在脑海中停留的时间非常短,很快就忘了,还是要有实践场景才行。

chszs 发表于 2014-03-05 17:01

占个位置的

seesea2517 发表于 2014-03-05 17:25

不占楼,要占就直接写正文~

1. 平常是如何学习(夯实)算法和数据结构基础知识的?
算法和数据结构这真的是很基础的东西,都在学校里学的。工作以后偏向于应用,以解决现实问题为目的,于是越来越少**了。
对于计算机这类实践性比较强的内容,我觉得还是需要多做实验学的比较扎实。反正算法和数据结构的示例代码很少,学完教程后盖上书用自己掌握的内容亲自上机把例子实现一遍,实现过程可能会有问题,那就加深了理解,没有问题则有一种成就感奖励自己,给自己更多学习的信心和动力。好了再把教程后面的练习拿来做,算是巩固了。
然后喜欢的话可以去找一些别的题目来做算是应用了,我觉得一些ACM系统就很好,有人出题,还可以有人讨论,TopCoder算是推荐的一个吧,顺便锻炼英语了。这些竞赛系统里有算法题,并且是以实际应用的面目展示,还分阶段有浅入深地出题,所以特别适合用来辅助学习。其中的挑战阶段(找别人程序中的bug)还让锻炼学习者分析别人的算法和数据结构,更深入理解已学知识了。

2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
即使平时直接用不上算法和数据结构,但是算法和数据结构属于一种解决问题的方法,在不经意的时候就会给我们提供帮助的。比如系统的目录结构、TreeView控件、菜单什么的树结构等,知道树的性质后更能有效地使用和操作它们;虽然STL提供了算法库,但知道了链表和顺序表的差别后,在STL选择算法和结构的时候就可以根据实际编程中的不同操作多少来决定用哪一个结构以提高效率;倒是游戏程序里遇到比较多应用到数据结构和算法的,比如游戏内各物件管理,攻击范围的计算,NPC的AI等。另外就是**到一些嵌入式编程算是比较底层,没那么多现成的框架使用,在这一方面要求编程人员对算法和数据结构能比较熟练的应用了。

3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧。
算法题目我觉得面试应该是需要的,看看基础牢不牢嘛,当然这个算法题目应该只是面试题目中的一部分,视不同的公司不同的岗位来确定所占比重。另外建议不是直接问实现一下某某算法,写写某某结构这么平淡,而是给出一个应用场景,由应试者做分析后自己选择出适合的算法和数据结构来解决问题。
面试的少,也忘记的差不多了,就记得有过求素数、五子棋的题目。其实万变不离其宗,掌握基础知识后在练习中学会灵活应用就好了。

seesea2517 发表于 2014-03-05 17:26

seesea2517 发表于 2014-03-05 17:25 static/image/common/back.gif
不占楼,要占就直接写正文~

1. 平常是如何学习(夯实)算法和数据结构基础知识的?

哦?上文的**是“接”“触”,居然敏感啊。。

JackNorton 发表于 2014-03-05 21:46

1. 平常是如何学习(夯实)算法和数据结构基础知识的?
      学习算法和数据结构的方法有很多方法,通过看书,上机实践检验效果。不过个人认为学习巩固算法与学习数据结构的最好的方法莫过去参加ACM或做ACM习题,ACM做好的网站有杭电ACM(hdu),北大ACM(pku),网站上有许多的类型的题,包括数据结构、动态规划等等。另外做ACM题必须充分考虑思维的严密性,不能遗漏任何可能性,同时要考虑时间与空间复杂度,不断的优化算法方能通过,要求较高,坚持一直做ACM,一段时间后对编程能力的提升是不可估量的。

2. 熟练掌握算法和数据结构对你工作有什么帮助?谈谈经验?
   算法与数据结构的掌握对于一个入门的软件工程师来讲有重要影响,它会使你的代码看起来简洁,高效。另外,对于在校学生如果想进好的公司,学好算法与数据结构是必须的,在我BAT三大巨头笔试、面试过程中,算法方面比重较大,面试过程中往往会让现场写代码,面试官会看你的思维严密性、代码风格、时间与空间复杂度来分析你的水平,漂亮的代码无疑会得到面试官的赏识,当然效果就不一般了。

3. 如何看待面试官面试你算法题目?你在面试中碰到过什么样的算法题目,分享一下吧。
   算法确实很重要,尤其现在是数据海量时代,大量的数据需要处理,效果高的代码与效率低的代码可能存在几十倍甚至上百倍的差异,所以追求好的算法更是当前的一大趋势。从BAT笔试过程中就可以看出,算法题屡见不鲜,在面试过程中,面试官会明确问及是否参加过ACM比赛,或者Top Coder比赛之类的,可见大公司对此的**。
   在笔试百度的时候曾经有一道是:给一个字符串,将字符串序(简单吧)。不过要求是:时间复杂度为O(n),空间复杂度为O(1)。
   当时看前面还很有信息,看到要求就傻眼了。另外参加面试时,面试官让现玚写代码,题目是:给你一颗二叉树,让你交换所有的左右子树。这个就是数据结构方面的内容,大公司十分**这些,希望对大家有帮助。个人也是算法爱好者,也真心想得到这本书,好好学习。
页: [1] 2 3 4 5
查看完整版本: 学习算法的那点事儿(获奖名单已公布-2014-4-21)