Google, Facebook, Linkedin、Amazon 面试以及对学习方法的一些总结回帖,在回帖 13 楼

952 阅读9分钟
原文链接: www.diycode.cc

其实我不是大牛 但我答应艺华来回答这个问题的 让大家见笑了 (. .`)

说到快速学习 最著名的大概就是scott yang的一年挑战MIT 本科课程的实验了吧~ 我就先从这里开始讲起

首先看一下介绍的帖子 tieba.baidu.com/p/200919147… 能翻墙英文阅读功底比较好的也可以直接去看scott young的blog 我觉得相比于其他的类鸡汤, 这个实验其实是很多不可或缺的因素集合起来, 比如长时间集中注意力, 时间预算控制, 脑部记忆曲线也有照顾到, 但其中很值得推崇的在于费曼技巧, 我专门highlight抽出来:

费曼技巧的4个步骤:
一、选择一个概念
选一个你想弄明白的概念,写在空白的笔记本或者纸的最上面。

二、解释这个概念
把解释这个概念的东西写成一句话,就像你在告诉一个完全不知道这个领域的菜鸟一样。这一步可以让你在阐释这个概念的过程中,可以让你明白你有没有搞懂这个概念,并在这个过程中加深对这个概念的理解。

三、解释不了?
当你发现你没办法解释的时候,回到书上面去,或者找同学、找老师、找已经懂的人,把书上的概念再重新研究一遍,直到你能在纸上流畅地把这个概念解释出来。

四、简化语言、学会类比
如果出现一个很学术的或抽象的词语的时候,试着要么平实化词语,要么学会用别的东西来类比它。
=================课本和心得的分割线==================
学会类比, 知识迁移很重要~ 先从比较明显的开始说起, 有没有觉得对一门编程语言掌握比较深入的人, 上手另一门编程语言会比 对什么编程语言都不那么精通, 或者压根儿没写过代码的人要快? 或者对比如android已经有一定了解的人, 学新版本android的新特性, 会比不那么了解android的人要快?


比如你已经看了很多部青春爱情片, 再看一部的时候, 即便你之前从没看过那部, 但一边看, 一边心里会有个期待, 啊这是挫男配白富美模式, 接下来挫男一定会在什么场合帮白富美维护脸面, 他们关系的扭转应该是从那里开始的, 在那之前会一直各种对立, 于是可以快进了, 到了那个点果然符合期待的发生了, 于是下一步期待出来了, 不符合人民群众价值观的结合, 一定遮遮掩掩的, 小心翼翼的甜蜜, 于是关系的发展那一段可以快进了, 再接下去…… 我就不说了~ point在于, 你会发现你看一部新的片, 速度比那些从来没看过的人, 每一步都觉得剧情曲折引人入胜每一分钟都不想错过那种, 要快, 对吗? 看书也一样~

再比如你已经精通Java, 来我们学python。 首先是一门编程语言, 要有啥呢? 你脑里的阅读期待直接映射了Java那一套过来, 首先是程序的结构, 包括入口, 包组织, 类/方法声明, 熟悉了新的syntax, 下一步是啥? 阅读期待跳到 那你总得有变量声明, 有循环, 有选择, 不然有些东西就没法写了对吗? 接下来呢, collections, 你怎么组织一泡一泡的数据, 定长的不定长的, 顺序的乱序的, 内部O(1) 复杂度的O(logn)复杂度的, 线程安全的不安全的, 都看看…… 先学会怎么用, 有更多时间精力更好奇就去找内部实现读一读, 跟看电视剧一样, 对吗?

如果你能实现知识的有效迁移, 你会发现你在上手一些新的东西的时候速度特别快, 因为你脑里自然而然会有阅读期待~ 拿到手一个玩意儿, 这本质上是个啥, 所以如果是这么个东西, 需要有哪些功能, 如果我设计我会怎么做, 哎, 阅读期待就出来了, 剩下就是heuristic based search, 从期待出发, 一点一点去验证, 最后你会发现, 所谓规模庞大的新东西, 完全陌生的知识领域其实也就那点玩意儿~ 这其中的难点在于结构映射, 或者说, 你怎么实现知识的有效迁移, 说人话就是, 拿到一部电影你没看过, 怎么迅速把它映射到青春爱情片, 还是历史纪录片, 还是鬼片 从而建立合适的阅读期待? 如果是表面相似的东西, 应该比较容易, 大部分人都可以做到, 比如你会一门面向对象编程语言, 学另一门OO编程语言, 对吧~ 比如书你看包装看序言看编辑推荐, 也大概能建立合适的映射, 对吧~ 那复杂一些的呢? 是这样, 参与一件事, 组成一个系统形成一个规律的各个对象之间, 其实互相之间的关系就那么几种, 不管具体是在哪个领域, 哪个项目上, 看起来风马牛不相关的事情, 其实最后抽象出来, 用数学来描述很可能都一回事~ 具体例子时间关系先不细说了~

我highlight这一点的原因是, 每个人其实或多或少都已经在从这点上得益, 但很少有人去想这些, 没有提升到理论高度去放大~ 至于其他的, 类似学习习惯, 类似励志鸡汤, 类似方法论比如思维导图啥的, 还有什么番茄25分钟工作法, 快速阅读, 我觉得前人之述备矣, 不用我再多废话了~

比如当年读书的时候, 北大青鸟已经大行其道。 面对那广告 什么0基础培训3个月 高薪入职名企啥的, 我们一帮人都想不通, 那我们在这里读985 计算机系, 跟那些人有什么区别? 最后不还都是入职名企做一样的活儿吗? 那何苦费那么大劲儿在这里倒腾这些4年, 倒腾那什么离散数学, 组合数学, 模糊数学我去你的学完不懂有啥用做项目还不如人家北大青鸟毕业生~ 还不如拿一本21天J2EE从入门到精通 看完接外包先赚零花钱~ 数据结构老师跟我们解释是, 培养目标不一样~ 从这里毕业也许一开始做不了什么实际的项目, 但做什么上手都很快, 因为计算机科学和软件工程所有会涉及的问题, 原型和能帮你入门的地方都给你准备好了~ 比如你以后要去做J2EE,学一门新的编程语言 或者深造继续学习类似AI 或者数据科学, 都可以很快上手~ 说人话 就是, 这里让你看完了青春爱情片, 包括公主王子的, 屌丝女神的, 女屌丝高富帅的, 两个屌丝的, 有绝症的没绝症的, 包括鬼片及其细分, 包括武打片及其细分, 包括历史片及其细分, 包括等等及其细分, 之后再上手一部新电影, 基本上你脑里是有关联直接紧密的材料给你建立阅读期待, 快速往下了~ 我后来观察了一下, 其实你不用上985 211不用搞得很academy, 如果你能发觉到这点并有效用起来 学东西跟看电影一样 : )

比如最近去Google, Facebook, Linkedin或者 Amazon面试, 我简历上都是Android Dev的经历, 然后我还特别不讨喜的说, 我希望入职以后能做backend相关的开发, expand my skill set etc. 大家都说没问题, 待遇还是按照你工作6年senior 的package来给, 我说其实我对backend 开发脑里没概念的, 一段时间里出不来活的, 一段时间里productivity是远达不到senior级别的, 大家都说没关系, 我们只在乎你做software engineer的经验, 不在乎那是mobile还是server side的经验。 See? 整个业界都意识到了这一点, 不管他们是上升到理论还是基于海量数据样本的观察~

其他more specific的, 关于程序员的学习习惯 我觉得这个帖子不错:
site.douban.com/175882/widg…

讲的比较general, 但能贯彻执行在career始终, 经年累月应该能成为比较强的那一类程序员~

最后要说的是 硬件条件也很重要~ 这个问题说起来可能有些人会觉得有点扯, 但我是这么想的~ 一个过程如果能够往一个方向发展, 那么反过来的过程也应该是能够发生的, 只不过需要的能量比较大, 比较少见而已~ 比如, 氢氧化钠和盐酸可以反应生成盐和水, 你见过盐和水合起来变出氢氧化钠和盐酸的吗? 其实还是有, 少而已, 需要外界加很大的能量, 让这个逆过程发生~ 人脑也一样, 如果可以从正常, 变成类似老年痴呆那样, 那逆过程也同样可以发生~ 很多人都说了, 规律的体育锻炼促进心肺功能, 加强神经对身体的控制, 规律睡眠, 食物摄入注意这啊那的, 你会变聪明~ 但我觉得那些还不够 something wrong somewhere, 相比于正常人在一定条件下变老年痴呆的速度, 苦心孤诣控制那么多条件的时候变聪明的速度太慢了~

一次又一次我的体会是 隔一段时间挑战一些我原来力所不能及的项目, 或者原先无法理解的题目, 缓一阵下来, 会觉得脑力有一定提高的,能力有一定加强, 直到我看到这个帖子:
www.douban.com/group/topic…

我觉得是把我之前的体验上升到理论的高度, 当然每个人情况都不一样,时间体验啥的也不一样~ 趁这段时间得闲一点, 我打算自己试试看~

再交流 ^ ^m