专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
苹果黑科技  ·  iOS ... ·  19 小时前  
苹果黑科技  ·  iOS ... ·  19 小时前  
51好读  ›  专栏  ›  Cocoa开发者社区

闲话算法

Cocoa开发者社区  · 公众号  · ios  · 2016-08-09 08:02

正文

请到「今天看啥」查看全文



因着读到这句话,虽然可能自己不能完全做到免俗,却尽量每次下笔前一再提醒自己:老老实实写就好,不要为了美化自己而增增减减。


最近各种公众号,各种社群,搞的风风火火,谈系统设计和架构的偏多。却没有太多分享算法的。是因为算法不重要么?恰恰相反,而是因为算法太重要太基础,以至于你会算法,这事都没啥好说好分享的了。除非你是搞出了什么新的特别牛的算法(更多是学术界),否则你去给谁分享?抓个合格的程序员别的不会,算法总是会的。何况这门技术已经成了经典,不用看什么公众号文章,就看《算法导论》就行了。


我不知道大家怎么开始一步步精通算法和数据结构的。老实说,大二还是大三第一次接触《数据结构》这门课,因为是从来没有过的思维训练,其实当时也是学的比较费力的。那时候编程接触的还比较少,所以并没有很多实际的体验去让我欣赏和体味一个好的数据结构或算法设计的 “美” 在哪里。甚至有点死记硬背的感觉,并不知道为什么 “如果不这样设计” 会在实际中出哪些问题。各种大O小o的时间空间复杂度当时对我而言也仅仅是一些不能融入到实际问题的一些数学游戏。你就说各种排序,每种最坏情况和平均情况的时间空间复杂度,为什么那么重要?可能因为考试要考吧。


然而我算幸运的。算法这门课我大学上一遍,读博士上一遍,后来 Rice 因为每个研究生要无偿当五个学期的助教(可能是因为 Rice 奖学金给太高了吧),而我又好巧不巧的被算法老师两次挑中当助教。所以一本《算法导论》前前后后这样被逼着细学了不下四次。不是开玩笑,全本书的习题可能大部分都做过,有些还不止做了一遍。所以要说我学习算法的过程,几乎不能推荐给任何人用。


那么学习算法到底有些什么用处呢?


首先就是面试


国内我不太清楚,硅谷的 IT 公司除了电话面试是偏算法的,onsite 面试至少有两轮都是考算法和编程的。大一些老一些的公司,像 Google,Facebook,LinkedIn,Dropbox 等,都是白板写程序。而新一些的小一些的公司,如 Square,Airbnb 等,都是需要现场上机写出可运行的程序的。,Twitter,Uber 等则是白板上机兼备,看情况。虽然说还有其它考系统设计等的部分,但是如果算法没有打好基础,这关就很难过。而且算法要熟悉到能够现场短时间内写出正解,其实很多人准备面试前都是需要刷题的(也有特例)。


记得我一年多前,有一次当面试官,电话面试另外一个人,当时是用 codepad 共享需要对方写出可运行的一个 regular expression 的 parser(职业操守,其实并没有这道题,只是类似举例)。45 分钟过去了,对方并没有写出来。我就例行公事地问:“你还有什么问题想问或者想了解么?” 然后对方估计因为写不出来程序很有挫败感,就说:“ 你们平时工作难道就是天天写 regular expression 的 parser?么?” 我竟然无言以对。想了想,我回复说:“ 不用天天写。那我再给你 15 分钟,你证明给我看你还会什么,或者什么理由我应该给你进一步面试的机会?” 对方想了一会,默默挂掉了电话。







请到「今天看啥」查看全文


推荐文章
设计之旅  ·  灵感一刻 · 50个北欧风客厅设计
8 年前
禅语心苑  ·  羊的朋友!
7 年前