专访雅虎刷题狂人曹鹏:10年理论与实践结合的程序员之路

2023-10-31

采访联络员:SophyJ        作者:ly行云流水        所属机构:CSDN高校俱乐部      高校发布地址:http://student.csdn.net/mcd/topic/163587/941331

 

摘要:

在曹鹏博士的采访过程中,他最长提起的便是感恩。感谢良师益友,感谢父母默默的支持,感谢关心、帮助过他的同学和朋友。在他的身上我们感受到了谦虚中的坚持,追求梦想的信念和行动力,理论结合实践的身体力行。今天恰逢一年一度的教师节。在这个感恩的日子里,CSDN高校俱乐部祝愿全国所有的老师,身体健康,万事如意,桃李满天下。感谢您们作为人类灵魂的工程师,十年树木,百年树人,为中国培养出一批又一批的人才。在此向您们表示深深的敬意。

曹鹏,2006年浙江大学计算机科学专业毕业,2013年中国科学院计算机技术研究所博士毕业。博士期间研究方向为社交网络与社会计算,曾经做过搜索、话题发现、社交网络方面、推荐算法等领域的相关研究。

曾为浙江大学、浙江省大学生程序设计竞赛的命题人,是hackerrank.com、hackerearth.com和csdn英雄会、CSDN高校编程挑战的命题人,也是PAT(Programming Ability Test, http://pat.zju.edu.cn/) 的命题人。是国内ZOJ(http://acm.zju.edu.cn) 第一,有“题霸”之称(http://www.zjol.com.cn/05edu/system/2007/11/19/008982046.shtml)

 

 


CSDN高校俱乐部:都说男人30而立,2014年对于您来说是一个新的开端吧。从浙江大学到中国科学院计算机技术研究所博士,从雅虎中国的高级工程师到即将奔赴美国深造的学者,10多年一路走来各种奖项名誉光环不断。您曾经做过搜索、话题发现、社交网络、推荐算法等领域的相关研究,与算法的结缘,是偶然还是必然呢?

曹鹏:我觉得必然当中有偶然。怎么说呢?算法是计算机科学的基础,所以作为一名计算机专业出身的学生以及IT工作者,学习算法是必然的。然而,如果只是把算法当作工具,还是缺乏对它的热爱的。我学习算法的初衷是热爱,毕竟兴趣是最好的老师。兴趣可以驱使我去研究、去探索、去发现。我认为浓厚的兴趣、良好的机遇、以及适当的指导三者缺一不可。没有良好的兴趣,我不可能跨入计算机专业的大门,没有良好的机遇,我不可能有条件去学习,而没有良师的耐心指导,我不可能取得现在的成绩。

CSDN高校俱乐部:很多人都认为学习编程要有好的环境,包括硬件环境,学习环境,您上大学时电脑还不够普及,互联网也不够发达,那时您是是如何学习编程和算法的?

曹鹏:其实,我学习编程是从小学三年级开始的(1993年)。那时我参加了学校的计算机兴趣小组,清楚地记得学习的是BASIC语言,那会儿用的是中华学习机,根本谈不上什么286、386什么的。现在想来学习的课程也比较简单——都是用计算机求简单一次不定方程的正整数解之类的,然而我的兴趣就是从那时培养起来的。

从开始学习到小学毕业,我拿了几个天津市以及河东区的一等奖。后来,天津市比较重视培养,把获奖的学生组织到一起继续“深造”培养,我在市科协接触到了算法课。那会儿讲算法的是比较好的高中生和大学生——也是在各种编程比赛中频频获奖的。初中和高中也是在学校的兴趣小组学习,总之是一群热爱编程的孩子在老师的带领下学习编程的。到了大学,浙大宣传“快乐竞赛”的理念,就是说把学习算法作为一种娱乐活动,没有那么功利,我主要是看书(如经典的《算法导论》、康奈尔大学的《算法设计》等)和刷题(在浙江大学online judge ZOJ上)学习的。请允许我在这里向一直默默支持我的父母表达最诚挚的谢意。也对关心我和帮助我的各位老师、同学、朋友表达感谢。

另外,在浙江大学集训队的经历也让我受益匪浅,大家互相讨论、研究——这就是所谓的训练。另外,除了参加浙江大学和浙江省的程序设计竞赛以外,我当时还参加了一些著名的网络编程比赛,例如百度举办的百度执行(astar)还有google举办的google code jam China等。现在,我偶尔会去hackerrank.com以及codility.com上面去练练手,也会去看一些coursera上面的算法课程。总之,我觉得我主要是理论联系实践。理论就是看书,书比较杂,不光看算法、数据结构相关的,还有数学相关。实践就是参加编程比赛和刷题。

CSDN高校俱乐部:一些同学喜欢“看”多过于“写”,认为理论学习好就可以了。您认为“刷题”是否能够帮助一个人成长为优秀的程序员?“刷题”对一个人编程思路的优化和代码质量的提高有本质的帮助吗?

曹鹏:我认为“刷题”肯定有用,但是光刷题是不够的。因为优秀程序员的标准非常多,他们应该有精深的理论基础、丰富的编程经验。程序员还需要有工程实践经验,在实际工作中,光靠刷题积累的经验可能是远远不够的。例如,我们可能需要迅速得掌握某种编程语言,如scala, go, haskell之类的。我们不仅要写出正确的代码,还要写出清晰、可读性强、鲁棒性好的代码。

例如,变量的名字要有意义,有一定的命名规则(如匈牙利命名法),如何检测并捕获异常等等。我们需要软件工程的指导——因为软件的功能有时和用户的需求差距极大,我们需要掌握一些设计理念和设计模式,我们需要使用一些编程框架,需要一些工具库。我们需要review别人的代码,我们需要做版本控制,我们需要考虑多线程访问,我们需要借鉴先进的设计理念和思想,我们需要做一些权限的管理与控制……所有这些刷题往往学不到。软件是巨大的工程——绝对不是我们看起来那么简单——这项工程的难度不亚于盖一栋大楼、架起一座桥梁。这些可能需要去公司实习或者在”真杀实砍“的工作中才能逐渐掌握、逐步熟练。然而,千里之行,始于足下,刷题可以认为是基础。

CSDN高校俱乐部:很多同学对您甚是崇拜,希望从您这里“取取算法真经”。作为一名雅虎RD高级工程师,您对正在学习计算机的同学,给些“学什么”、“怎么学”的建议吧。

曹鹏:我想是计算机和数学的基础课吧。我觉得光靠课堂的学习恐怕是不够的,可以学一些MOOC的课程,现在网络资源那么发达,电子书、教学视频有多。我的理解还是看书+做题吧。如果要做算法研究,显然是要阅读paper的。另外,我认为看一些开源的库,对某些算法的理解与运用也是有益的。至于学习方法,我想不同的人可能适用的方法不同。但我觉得还是要理论和实践并重吧。光看书是没太大用处的,“纸上得来终觉浅”、“尽信书不如无书”——实践还是非常有用的。当然实践可能是刷题,也可能是去公司实习,也可能是自己承担一些实验室的项目、甚至凭兴趣做一些开源的项目——实践的方式很多。总之,计算机科学的路很宽,只有自己努力才能越走越宽。

CSDN高校俱乐部:有些同学喜欢抱怨学校不好,老师不好,感叹各种条件差,把个人发展的现状归结于客观条件的限制。您怎么看待这个问题?

曹鹏:客观条件只是一个方面,尽管这个方面很重要。现在网络发达、资源丰富,想学习总是有渠道的。我从小学到高中毕业都没有自己的电脑,那会儿想自己写段代码并调试,需要去公共机房。为了节约上机时间我都是在纸上把代码写好,轮到上机时自己把写好的代码照着纸敲进电脑去调试。这也培养了我在纸上写代码的习惯——现在很多IT工作者没有电脑就无法思考,这是很可怕的。其实大学里的ACM竞赛就是三个人共用一台电脑的,如果没有“闭门造车”的招数,配合起来还是有些困难的。我想现在的学习环境比我当时好多了吧?网上有那么多的学习资料——电子书、文章、开源项目、名人博客、视频、bbs、社交网络、qq群,邮件列表,主观上想学习的话,是不应该有太多问题的。


曹鹏博士简介:

2006年浙江大学计算机科学专业毕业,2013年中国科学院计算机技术研究所博士毕业。博士期间研究方向为社交网络与社会计算,曾经做过搜索、话题发现、社交网络方面、推荐算法等领域的相关研究。

曾为浙江大学、浙江省大学生程序设计竞赛的命题人,是hackerrank.com、hackerearth.com和csdn英雄会的命题人,也是PAT(Programming Ability Test, http://pat.zju.edu.cn/) 的命题人。是国内ZOJ(http://acm.zju.edu.cn) 第一,有“题霸”之称(http://www.zjol.com.cn/05edu/system/2007/11/19/008982046.shtml)

本科期间获得过 浙江省程序设计竞赛一等奖,浙江大学计算机程序设计竞赛一等奖,浙江省高等数学竞赛三等奖。

2006年google code jam China编程挑战赛进入前50名,2007年百度之星编程竞赛前50名

2008-2011  中国科学院计算技术研究所研究生会学术部部长 中国科学院研究生院三好学生、优秀学生干部

2012年腾讯编程马拉松比赛组队第4名。

2013年英雄会第二届在线编程大冠军。  http://www.csdn.net/article/2014-01-03/2818011

博客;blog.sina.com/javamancaopeng     blog.csdn.net/caopengcs

微博: @曹鹏博士

LinkedIn: cn.linkedin.com/in/caopeng/


本文为CSDN原创文章,未经允许不得转载,如需转载或约稿请联系student@csdn.net

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

专访雅虎刷题狂人曹鹏:10年理论与实践结合的程序员之路 的相关文章

随机推荐

  • mybatis plus 报错 Invalid bound statement (not found)

    报错提示 Invalid bound statement not found 原因 使用mybatis plus时不能使用自带的SqlSessionFactory 要使用MybatisSqlSessionFactory MybatisSql
  • select下拉框option的样式修改

    select原样式 进行样式修改后的样式 附上修改代码 select外面必须包裹一个div 用来覆盖select原有的样式 div class option div
  • Qt Creator实用快捷键

    Qt Creator 实用快捷键 Qt Creator实用快捷键 快捷键 功能 在头文件函数声明处按Alt Enter 在对应的CPP文件中 生成函数的实现
  • jeeplus多商户商城,分销商城

    ZSCAT springcloud 多商户商城 下载 https gitee com catshen zscat sw pc h5 小程序 app uniapp集成 分销商城 积分商城 不用写xml配置 独特的日志记录方式 包含用户角色 权
  • 刷题日志

    1 两数之和 基于数组的散列 给定一个整数组nums和一个目标值target 请你在该数组中找出和目标之中那两个整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 示例 给定 nums 2 7
  • 【蓝桥杯历年真题合集】蓝桥杯2022初赛

    个人主页 程序猿追 系列专栏 算法合集 目前状态 创建Java学习之路 零基础到就业实战 系列 目前更新到JAVAWEB开发 作者简介 大家好 我是程序猿追 全栈领域新星创作者 算法爱好者 常在作者周榜排名前30 某不知名的 ACMer 推
  • TCP封装

    大家好呀 我是请假君 今天又来和大家一起学习数通了 今天要分享的知识是TCP的封装 TCP段的头格式如上图所示 其协议头最少20个字节 其中主要字段如下 1 源端口 Source Port 16位的源端口字段包含初始化通信的端口号 源端口和
  • 如何用Python欢度六一?

    今天是六一儿童节 虽然秃头程序员没有头发 但是童心还是一直都在的 给大家分享一个私藏的GitHub项目 free python games 一行代码就能进入使用Python开发的小游戏快乐玩耍 安装与使用 安装当然也很简单一行代码就可以 由
  • 剑指 Offer 14- I. 剪绳子&&剑指 Offer 14- II. 剪绳子 II(动态规划+贪心算法)

    剑指 Offer 14 I 剪绳子 题目描述 剑指Offer 66 剪绳子 给你一根长度为 n 的绳子 请把绳子剪成整数长度的 m 段 m n都是整数 n gt 1并且m gt 1 每段绳子的长度记为 k 0 k 1 k m 1 请问 k
  • 哈夫曼树(Huffman Tree)学习总结

    定义 将所要编码的字符作为叶子结点的树为哈夫曼树 作用 解决编码问题 模板 priority queue
  • UmiJS实战

    一 配置项 hash 配置是否让生成的文件包含 hash 后缀 通常用于增量发布和避免浏览器加载缓存 hash true base 设置路由前缀 通常用于部署到非根目录 base dengta publicPath 打包的时候 webpac
  • CVPR2023

    欢迎关注 CVHub 官方微信公众号 Title Efficient Semantic Segmentation by Altering Resolutions for Compressed Videos PDF https arxiv o
  • 字节十年工程师整理的RobotFramework自动化测试框架介绍及应用

    目录 一 概念 二 特性 三 RF环境安装 四 RF的使用 五 RF的常用类库 六 RF的常用关键字的使用 七 准备UI自动化测试的环境 八 浏览器操作的关键字 九 元素定位 十 项目的三层架构 十一 RF非GUI方式 命令行 运行与Jen
  • C++:让自己习惯C++(Effective C++)

    文章目录 写在前面 01 视C 为一个语言联邦 02 尽量用const enum inline替换 define 03 尽可能使用const 04 确认对象被使用前已先被初始化 写在前面 这是对Effective C 这本书中的部分内容进行
  • 音乐服务器制作教程,让NAS做音乐服务器

    最终的目的是让手机APP可以随时播放家里NAS上下载的音乐 经过以前的尝试和最近百度谷歌 有了一些成果 分享出来 一 NAS自带服务和手机APP 优点是布署简单 都是直接用 我只用过黑群的软件 只能说可以用 除了特简单再没有什么特点 需要有
  • 用Charles来模拟弱网测试环境

    在我们平时的测试过程中 需要模拟很多的测试场景 比如常见的弱网测试 你不可能说去地铁 停车场实地去测试 那么我们就需要模拟弱网环境 今天就讲一下如何通过charles来模拟弱网环境 1 首先打开Charles 点击Proxy 选择Throt
  • Latex插入参考文献的两种方法—自动与手动

    先忍不住吐槽一下 为啥都21世纪了还有期刊要求参考文献要放在 tex文件里面 使用 bib文件多简洁优美啊 现在我们就来看下latex中插入参考文献的两种方法 第一种 自动方法 使用 bib文件 在主文件 tex的同级目录下创建exampl
  • 6、服务数据的定义和使用

    一 服务数据模型 二 具体实现步骤 1 首先现在功能包中创建一个srv的文件夹 然后在改文件夹下新建一个以 srv为后缀的文件 所举例的该文件的具体内容如下 string name uint8 age uint8 sex uint8 unk
  • 2023最新版Anaconda下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

    1 前言 小编的电脑是win10系统的 这里以win10系统安装Anaconda为例 其他的系统安装过程类似 可以照猫画虎 下面请看具体的安装过程 2 下载软件 1 首先去官网上进行下载软件 下载地址 https docs anaconda
  • 专访雅虎刷题狂人曹鹏:10年理论与实践结合的程序员之路

    采访联络员 SophyJ 作者 ly行云流水 所属机构 CSDN高校俱乐部 高校发布地址 http student csdn net mcd topic 163587 941331 摘要 在曹鹏博士的采访过程中 他最长提起的便是感恩 感谢良