精华内容
下载资源
问答
  • 如果题主认为的「精通」是上述所的第二层次,那么我估计一年全职时间也未足够「精通」。首先,阅读这些书籍本身也需要不少时间,而且对于一般人来说(除了一些学习记忆能力超强的人),很可能需要阅读几遍才能...

    首先引一下2010年8月号《程序员》刊登的拙文《C++强大背后》最后一段:

    C++学习建议

    C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:

    由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。


    如果题主认为的「精通」是指上述所指的第二层次,那么我估计一年全职时间也未足够「精通」。首先,阅读这些书籍本身也需要不少时间,而且对于一般人来说(指除了一些学习记忆能力超强的人),很可能需要阅读几遍才能记住一些细节。另外,阅读后必须要练习。除了入门的习题外,还需要做一些工程向的项目,才能了解各种语法、编程范式的使用方法及时机,理想地建议参与一些开源项目。然而,学习是需要不断思考并把结果沉淀,方法包括与朋友讨论、写博客、写知乎答案等,这些都需要时间。

    如引文末段所指出,我建议不要把「精通C++」作为一个一年目标,应该要把学习语言作为一个持续的过程,同时要把语言运用在具体的应用场合中。

    ---------------------------------------------------
    再讨论C++与游戏开发。

    看到有不少答案讨论到有关C++是否游戏开发者所必须的技术。我认为,这并不是完全必须的,但许多游戏开发项目需要到C++。以下列举一些过往曾流行的游戏平台/类型:

    1. PC单机游戏(Windows)
    2. PC网络游戏(Windows、Linux)
    3. 移动平台游戏(J2ME、Symbian、Palm……)
    4. 家用游戏机游戏(PS1/2/3/4、XBox、Wii……)
    5. 掌上游戏机游戏(GB、GBA、NDS、PSP……)
    6. 网页游戏(HTML、Flash)
    7. 智能移动设备游戏(iOS、Android)

    我们会发现,除了J2ME和网页游戏外,大多数的平台都支持(或只支持)原生编程。而原生编程最常用的就是C/C++和汇编。这种现象并不难解译,再次引用拙文:
     

    应否选择C++
    哪些程序适宜使用C++?

     

    C++并非万能丹,我按经验举出一些C++的适用时机。

    • C++适合构造程序中需求较稳定的部分,需求变化较大的部分可使用脚本语言;
    • 程序须尽量发挥硬件的最高性能,且性能瓶颈在于CPU和内存;
    • 程序须频繁地与操作系统或硬件沟通;
    • 程序必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新;
    • 项目中某个目标平台只提供C++编译器的支持。

    按应用领域来说,C++适用于开发服务器软件、桌面应用、游戏、实时系统、高性能计算、嵌入式系统等。


    很大程度上,游戏──或说游戏引擎,都是C++非常适合的应用时机。

    一些人认为,游戏开发者使用现成的引擎,就不需要使用C++了。过往,业界有一个普遍常识,就是用C++开发游戏引擎,而游戏引擎提供脚本引擎供编写游戏逻辑代码。但这个观点被Unreal Engine 4的决策改变,UE4放弃了维护多年且被大量使用的UnrealScript脚本语言,而改用原生C++作为游戏逻辑编程的语言。此决策背后有多个原因,但这里只想举出这例子展示C++在游戏开发中的用途及潮流,具体原因分析就不详细展开了。

    除了自行研发游戏引擎需要使用C++,我们可以看到,大部分游戏引擎都提供了其C++原代码(Unity算是例外),这让我们可以

    1. 方便调试游戏
    2. 深度剖析、优化游戏的性能
    3. 为引擎扩展新功能
    4. 修改现有引擎以适应项目所需

    在专业的游戏开发中,这些都是很常见的工作任务。所以,即使并非自研引擎,并使用脚本语言开发游戏逻辑,也有很多机会需要使用C++。

    展开全文
  • 春夏秋冬又一年

    千次阅读 多人点赞 2016-12-25 21:34:26
    春夏秋冬又一年春夏秋冬,一年又一年。可总有那些岁月,可能是几个月,几天甚至一瞬间,让人刻骨铭心难以忘怀的。2016就是我生命中最难忘的一年,不是几个月、几天或者一瞬间,而是满满的一年。到国外求学,学到自己...

    春夏秋冬又一年

    春夏秋冬,一年又一年。可总有那些岁月,可能是几个月,几天甚至一瞬间,让人刻骨铭心难以忘怀的。2016就是我生命中最难忘的一年,不是几个月、几天或者一瞬间,而是满满的一年。到国外求学,学到自己想要的东西,还度过了三十岁的生日,辛苦忙碌却又非常充实而欣慰的一年。


    1.春:飘洋过海去求学

    2016最重要的一件事就是:工作了六七年后,又重新回到了校园。本科学习时的种种遗憾,终于有了机会弥补。一整年都在学习拼搏,想要紧紧抓住这弥足珍贵的机会。因为这应该是最后一次在校园学习了。

    第一学期是非常艰苦的一学期,初来乍到,生活上一切都要重新适应。而学习上又要与各国同学竞争。每天上课,去图书馆找资料打印论文,回家吃饭写作业,周而复始,有时真想快点过去。每次从图书馆出来,吹吹冷风,呼吸下新鲜空气,放松下心情。回到家,又继续开工。

    这样辛苦到底值不值呢?做热爱的事就值。想象中的热爱,就像灌篮高手里,一群热血少年,在最好的年华里为了一个目标而拼搏,这是多么令人向往的一段经历。关于热爱,是一件很私人的事,不是别人来告诉你的。有时做什么事都会有附带的你不喜欢的部分,比如工作有出差、加班、领导开会以及其他编程不相关的事,学习又有竞争和成绩的压力。如果能苦中作乐,我想这就是热爱吧。


    2.夏:人到三十古来稀

    在这炎炎夏日的悠长假期里,鄙人度过了三十岁的生日。很简单普通的一天,没有什么特别的事情。但心理上还是有了些微妙的变化,虽然不算年龄很大,但在周围同学里还是非常稀少的。想起刚毕业那会,组里的老大哥们总会跟别人这么说:我们组新来了个小伙子。当时青涩的我看着他们,的确就像在看前辈一样,但他们当时也不过二十七八,最大的也就三十。没想到当年的小伙子现在都比当时年龄最大的老大哥还老了,这样想想,感觉周围同学看我可能也是当年我的那种心情。而我看着他们,也回忆起那时的自己。这种感觉很奇妙!

    因为不能合法实习,所以整个假期都只能在家做题了。不做不知道,一做吓一跳,差距还是挺大的。周围不少同学的基础都很扎实,也接触过ACM等算法比赛。相比之下,我的基础就太薄弱了,于是就埋头苦练。虽然到现在也不一定能比过谁,但跟最初的自己相比,看到了进步就非常开心。从一开始只会基础的数据结构,到终于了解了一些一直想学的Dynamic Programming,到后来第二学期的巩固又从侧面让我加深了理解,对State Machine、Graph、Logic、Recursion都有了新的认识。不知不觉,回头一望,发现自己已经走了很远~

    周围人很多背景都不错,有的能力也非常强,让我相形见绌。但其实这种压力是非常好的,周围的强人牛人就是你的催化剂,如果你能摆好自己的位置,这种环境就能使你破茧重生。毕竟这个年纪来学习,其实已经是种成就,前方参照物很少,唯一要对比的就是自己。杨绛先生的这段百年感言说的非常好:

    一个人经过不同程度的锻炼,就获得不同程度的修养、不同程度的效益。好比香料,捣得愈碎,磨得愈细,香得愈浓烈。
    我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……
    我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。

    看似很普通的一段话,但细思极恐的触动我的是最后一句:世界是自己的,与他人毫无关系。想象一下在你最后临终闭眼之后,这个世界就不存在了,其实一切都是你想象的或谁制造的幻象,这样想再看这一句话是不是很震撼。即便这个世界很可能还在,只是你不存在了,但你已经不存在了,这个世界又有什么意义。所以对你来说,不管唯物唯心,这世界的的确确只是你自己的,与别人无关。


    3.秋:五年弹指一挥间

    2016也是笔者开博的第五年。从2011年初开始考虑开始写Blog,最开始用过Google的App Engine(GAE),可以在上面免费建站。于是就学着部署了一套Wordpress,从此就走上了博客之路。渐渐GAE变得不太好用,于是在2011年秋天开始整理迁移,11月就迁移到了CSDN平台。一开始也没当回事,就是整理整理自己备用。没想到这之后,一写就写了五年,期间基本每月都坚持发原创文章。从乱七八糟到用Markdown做漂亮的排版,从浅尝辄止到严谨求证,自己在一点点进步。做一件事养成习惯后就有惯性推着你走,好习惯受益终生!

    关于习惯,也思考了一下研究生阶段的收获,在此列举个人觉得最重要的几点,推荐每一位读者进行尝试,尤其是刚开启职业生涯的或遇到了瓶颈的,希望有帮助:

    • 读“书”:读书太普通不过了,网上买回来就看呗。但这里要说的是最前沿的书——论文。想要不断获得最好的知识,有这么一个过程:先是国产书,再外文翻译,再影印版。之前笔者就停留在了影印版+国产精品原创书这一阶段。现在则是原版+论文,收获颇多,要想学到最新的知识、把握这一领域的风向,这是一条途径。
    • 理论能力:工业与学术的差异很大,但学术中的一些研究方法如果能习得一二那绝对会让你功力大增。具体方法就是:抽象思考建模、像读代码一样读公式、像调试代码一样证明你的理论(从Lemma到Theorem到Collorary)。有句话说的很多:为什么数学公式比代码难度那么多?因为它太精炼了,就像是最高级编程语言写成的一样。读代码以行、段、页甚至文件为单位,但读公式时要以厘米为单位。

    还有个重要的老习惯了,就是整理和写作。只有用自己的语言整理了写出来了,才算是真正的理解了。格式排版都是次要的,甚至整理出的文章也是次要的,就像设计时画UML图一样,其实最重要的是通过这个过程帮助你思考,相比之下最终产物有时都可以丢掉了。回首这五年来写过的文章,感觉时间花的很值,一直在坚持着自己制定的路线,由浅入深的学习计算机科学的方方面面。


    4.冬:朝闻道,夕死可矣

    转眼一年的学习生活就快结束了,真的好快!窗口那棵不知什么树,从枯枝到郁郁葱葱到色彩分明又到枯枝,就这样看着它过了一年。研究生的生活挺艰苦的,学习压力很大,但最快乐的就是悟到了一些东西、甚至醍醐灌顶的感觉,那种畅快难以言喻!收获最大的就是学习到了一些真正的内功:

    • 操作系统内核是如何运转的
    • 算法的前沿热门知识——随机算法、外存算法和并发算法等
    • 图灵机是什么样子,P和NP是怎么回事
    • 代码背后的逻辑基础是什么

    于是现在看到像CLRS、《Algorithm》里写到XXX with (very) high probability(.whp)、NP和NP-complete时,终于知道是怎么回事了。就从这一点上来说,难道还不够满足吗?

    有天偶然看到了一个帖子,说少活几十年让你一下子得到全宇宙背后的知识和奥秘你是否愿意?最好的回答当然就是这句话:朝闻道,夕死可矣。真的太精辟了,人活一世能够学到点东西,明白点道理,如果每天都能这样,随时结束终止都不会可惜。出此言者让人敬佩得五体投地!


    5.结束语:一切皆空又如何

    最后也来谈谈人生观、世界观。表面上,作为程序员,坐在电脑前,敲敲打打。可你不想知道你在编码时究竟是在做什么吗?活着就是要探究世界背后的“真相”。可能许多人并不认同这种人生观,细想一下,这种差异背后的可能有两个大观念在影响着:人生如梦,到头来都是一场空;还有下面这段话说的太对了。


    pain

    这很正常,每个人都有自己的选择。谁都会有累的那一天,梦碎的那一天,放弃的那一天。而且是非成败转头空。那尽力而为的意义何在?今年暑假时读完了《三体》和《上帝掷色子吗》两本书,非常震撼。当人类想要留下一些东西时却发现:在永恒的时间面前,一切方法都显得苍白无力。硬盘?CD?书籍?在几乎永无尽头的时间面前,可能刻在石头上这种最原始的方法却成了最长久的。如此想来,不免悲观。我想,尽力而为的意义就是体验活着的快感,哪怕多少年后无人知晓,哪怕其实整个宇宙只是高等文明的培养皿,哪怕我们只是骇客帝国里那样的人体电池。但感受到了做成一件事的满足感,一切皆空又如何!

    忘记在哪看到的一段话,以此来勉励自己,认识你自己,然后继续努力

    世上绝大部分人都是平庸的,都承载不了年少时疯狂壮阔的梦想,都在世界面前渺小而无助。很多人能认清,但很少有人认清之后,以正确的方式,继续追逐。

    展开全文
  • 一、准备面试其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,...

    一、准备面试

    其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,写了准备一年,踏踏实实干事。



    都是比较不错的书单

    以下是我去年给自己订的学习计划:

    一月:

    大数据入门

    整个一月份都在刷入门视频和《Hadoop权威指南》,又临近期末,每天5点半起床,看两个小时的视频然后上课或者复习期末考。

    二月:

    1. 剑指offer刷一遍、数据结构、JavaSE、JVM、多线程
    2. 剑指offer有些搞不懂的直接跳过,等下个月第二遍再刷;
    3. 数据结构重点是各种树、二叉树、红黑树的一些特性以及链表的特性;
    4. JavaSE主要是类对象接口的区别,能不能继承,Static的特点,各种Hashmap,ArrayList等集合框架的原理源码;
    5. JVM是根据网上整合的高频面试题进行学习的,刷了一遍面试题之后才去看周志华的《深入理解Java虚拟机》,JVM难的不是JVM布局,垃圾回收算法等这些理论,而是结合代码和项目场景。比如说一段代码,有很多个类、方法,其中又有静态类和全局变量,这时候项目跑起来的时候哪些先加载,哪些变量存放在哪个区,不止要懂理论,还要结合代码懂理论。还有就是项目中的OOM,栈溢出,JVM的参数调优等等。
    6. 多线程也是刷网上面试题和博客的,几本多线程的书都是一坨一坨的,理解不来。先动手把几个多线程实现方法实现了一遍,然后分析优缺点,再由此切进去线程不安全和各种锁。多线程学习不同JVM,自己多动手,多调试一下,控制台都会告诉你答案。

    三月:

    剑指offer二刷,数据库、操作系统、网络、准备面试

    1. 剑指offer第二遍重点刷第一遍时思路懂代码不懂的。
    2. 数据库刷了牛客网SQL实战100多题的,其他都是索引原理,悲观乐观锁等理论。
    3. 操作系统刷高频面试题。死锁的产生条件、解决方法等等,资源调度算法,并发和并行等。
    4. 网络也是刷面试题。三次握手四次挥手以及为什么要这样做、TCP和UDP、网页请求过程、DNS解析过程、网络模型、响应码的意思等。
    5. 我每刷一道算法或者理解了一道面试题都会进行整理,所以到面试之前看看整理的文档和博客就行,异常轻松。这个月也继续投递简历进行面试,从三月份开始都是边投边准备,不存在全部准备好再去投。

    三月份收了京东、瓜子二手车等二线大厂的offer。

    四月:

    大数据项目、手写剑指offer、继续面试

    1. 三月份被阿里菜鸟部门的三面面试官怼了一发,说简历没有大数据项目面大数据岗,理论会再多有什么用,于是打算在四月份补一下项目。
    2. 在补项目的同时,不忘算法,练习白板写代码。

    四月份收了腾讯、去哪儿一些offer,腾讯和去哪儿终面都得现场面,所以一天飞北京,一天飞深圳。拿到腾讯offer的时候跟HR商量能不能去上海或者北京的base,HR说不行,于是就没去了。选工作和生活城市有一个硬性标准:离家远!那些在北方读书的同学毕业之后一直要往家里跑,而我则是一直往外跳,或许是因为在厦门待了四年吧,家乡也是「围城」啊。

    5-12月:

    实习,看框架源码,面试,整理面经

    最后选择了去Kyligence实习了,刚好趁这个机会学习了Kylin源码,看了Hadoop和Spark的部分源码。后面的面试也是为了倒逼自己学习,在面试中找不足,也顺便整理了一些面试资料。

    总结:

    一定要列好自己的学习计划,也要学会根据自己的学习情况调整计划。项目是面试的敲门砖,也是面试的大头,我是从大二出去实习的,所以在项目这边可以花较少的时间,不用从零开始学。底层理论一定要会,不然大厂无望。算法一定要硬刚,总共就那几种题型,我刚开始也很抵触的,觉得太难了,后面迎难而上也就那么回事。第一遍不行就第二遍,不然就第三遍,直到现在剑指offer里面也有一些我不懂的题目,但我也不会去深究,大局为重,不抠细节。



    别的同学放寒假的时候,自己一个人在学校旁边租了个小房子学到过年前夕;为了巩固实习的项目更好地面试,跑了几次之前实习的公司请同事吃饭问项目细节;为了阿里面试用肝硬刚,连夜复习;简历投的太多,信息都被卖了,而且一听到手机响就以为是面试电话;去腾讯终面,在深大的通宵自习室连夜复习。

    以上是我过去一年的准备,说说我从投递简历到收offer这一个月的准备。

    1.复习算法。把以前刷过的算法题分类整理了一下,因为之前有整理过,所以复习起来没用多少时间,还特意去理解了长长的KMP算法,LRU算法。

    2.复习理论基础。除了复习整理的面经和资料之外,还特意去了解了一下Golang,因为头条用的go语言。

    3.特意准备了几个项目技术难点,能在面试的时候炫一下。


    二、头条一面(Java+项目)

    1. 倒排索引
    2. 讲讲redis里面的哈希表?
    3. happen-before的规则?
    4. volatile修饰符,synchronize锁
    5. java单例模式的实现,懒汉、饿汉?
    6. 进程与线程的区别,多进程和多线程的区别?
    7. HashMap原理,为什么用红黑树,红黑树的特点?
    8. 快排时间空间复杂度,最好最坏的情况,优化方案?
    9. TCP的拥塞控制,具体过程是怎么样的?UDP有拥塞控制吗?如何解决?
    10. 讲讲了解的垃圾回收算法和回收器,什么时候执行STOP THE WORLD?
    11. 了解Go语言吗?

    三、头条二面(大数据+项目)

    1. Kylin的项目架构
    2. Paxos和ZAB协议
    3. CAP理论,分区容错性的意义
    4. 大表Join小表优化,如何处理数据倾斜?
    5. 讲一下最大堆和最小堆
    6. HDFS的读取、写入,容错处理。(源码)
    7. MapReduce的过程(第一版和第二版的)
    8. MR shuffle,Spark shuffle。
    9. namenode HA,脑裂,Yarn的调度机制。
    10. Hive的内部表和外部表区别、数仓建模模型、数仓分层、雪花模型和星型模型。
    11. 了解ClickHouse吗?它与Kylin的区别?

    四、头条三面(算法+场景题)

    1. LRU算法实现(伪代码)
    2. 链表倒数第K个数(讲思路)
    3. 一堆螺丝和螺母用最短时间匹配(代码实现)
    4. 求每天浏览页面的新用户(Hive QL实现)
    5. 求抖音小视频每日点击量最高的10个(Hash + 最大堆)


    五、如何通过头条笔试?

    这次的笔试里总共有5道,我AC了2.5题,第一题90%,第二题90%,第三题70%,不算好,但勉强通过了。去年的这个时候我可是连题目都看不懂的,看得懂的只知道用嘴怎么说,不会用代码实现。通过这段时间的算法训练,总结了如下几点算法笔试经验:

    1.平时刷题一定要总结归纳,最好分类。比如关于树的题型,链表的,数组等等,观察它们的解题思路,总结出解题套路。

    2.积累工具类算法。什么叫工具类算法?就是你解一道算法题需要用到另一种算法,这个被调用的算法就是解决这道算法题的工具。比如常见的「深度优先遍历」、「广度优先遍历」、「01背包」、「KMP算法」以及常见的选择和排序算法都是经常使用的工具类算法。

    3.学会抽象题目。笔试算法题不同于面试算法,不会直白跟你说要使用哪种算法去解答,更多的要自己学会抽象,抛开题目本身,要明白内部讲的是什么,别被题目的糖衣炮弹迷惑了。只有把题目抽象成最原始的算法你才能更好地使用工具类算法进行解答。

    六、如何准备头条面试?

    头条面试和其他大厂可能大同小异,但就是这个小异才是关键地方,能异于其他人的地方。可以从如下几个方面去做准备:

    1.特意准备几个面试题源码。像我在回答一些中规中矩面试题的时候,都会从源码角度出发。比如常见的HashMap等集合类,多线程的各种锁以及大数据框架的部分源码。

    2.特意准备项目难点。面一些大厂的时候避免不了被问到项目难点,不可能用普通Bug含糊过去啊。这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。

    3.针对性去了解公司的技术栈使用情况。比如头条使用Go,众人皆知,那为什么我不突击学习一下呢?比如从业内人士得知头条最早使用的是Kylin框架,后面慢慢转为ClickHouse,那我必须了解一下两者的不同啊,而且可以结合头条的业务场景。

    七、一个关于如何进大厂的小建议

    我一直崇尚「曲线救国」的做法,也一直在向别人传播这种做法。现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。因为我自己二本出身,但我意识的早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「offer自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。

    读者福利

    同时我自己也总结出了互联网公司java程序员面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。


    加群:1017599436领取面试资料(助你面试无忧)

    合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!


    转载于:https://juejin.im/post/5d02337f51882571521112fa

    展开全文
  • 在网易游戏这一年

    千次阅读 多人点赞 2020-02-04 16:51:20
    不知不觉我在网易已经工作一年多了,也从零到一地经历了一个完整游戏项目的开发过程,结识了许多大佬,学到了许多技术,当然也踩了不少坑。这篇文章就是和大家唠一唠我这一年的的经历和成长,收获与感悟。 ...

    各位读者朋友们,大家好!春节即将到来,我在这里先祝大家鼠年大吉,想要的一切都“鼠”于你!

    回想去年的除夕夜,我还在桌前勤勤恳恳地撰写2018年终总结(详见:一名普通游戏开发者的年终总结),一切仿佛发生在昨天。不知不觉我在网易已经工作一年多了,也从零到一地经历了一个完整游戏项目的开发过程,结识了许多大佬,学到了许多技术,当然也踩了不少坑。这篇文章就是和大家唠一唠我这一年的的经历和成长,收获与感悟。

    一.项目经验

    谈到收获,最明显的其实并非技术上的提升,而是工作经验的积累。如果你关注了一些参与过3A级制作的开发者或制作人,他们在对比国内外游戏项目的时候,经常会提到国内游戏团队的一个劣势——工具链。随着整个项目从无到有的开展,以及对身边参与过3A级项目大佬的观察,我深深地体会到了“工具链”在项目开发进程中的重要性。

    所谓“工具链”,就是指整个项目配套的工作流水线。和工厂生产产品一样,我们制作游戏也是一种“产品”的输出,不过这个产品是虚拟的,流水线上的操作就是我们对软件的每一次提交和修改。软件产品的优势之一是可以回炉再造,我们在遇到问题或有需求变更的时候可以根据实际情况对它进行修改和调整。但这个过程也存在着许多安全隐患,因为软件是一个整体,一旦按照前期的设计完成开发,后续的更迭就只能在原来的基础上进行修补,期间如果操作不当甚至会导致前功尽弃。而完善的工具链就可以帮助我们避免由于开发者操作失误、操作流程不规范等造成的项目中断、项目搁置等问题,提高协作开发效率。曾经我参与的一些项目在这方面就没有做的很好,比如每次出包都需要人工打包,效率低下;再比如由于个人的疏忽导致项目崩溃,开发进度不得不停滞等。
    在这里插入图片描述

    我这里对项目中必要的工具链做一个简单的阐述,

    首先,不同工种的工作流是不同的。

    • 程序需要本地修改文件——merge——提交—— 更新资源(这个是简化版的流程,实际上要比这个复杂,我们一般会先rebase)。
    • 策划美术需要更新编辑器—— 使用Perforce/SVN更新资源——本地修改资源——Perforce/SVN提交资源。

    由于程序可以拿到源码,所以能随时在本地生成与修改。但是对于策划美术来说就不是这样了。他们随时随地随心情地更新资源,如果更新到的资源包含错误,可能会造成崩溃甚至打不开的问题。而且想要他们快速找到能够解决这个问题的程序也并不是一件容易的事情。因此,我们需要一个工具来管理项目版本,每次编译editor或打包项目都需要通过测试验证,验证后的版本再放给策划与美术使用。如果可以的话,类似的问题从源头解决要更可靠一些,比如在开发者提交资源或代码时就进行一些基础的验证,确保不规范的内容(比如命名)不会进入到主干分支当中。

    其次,程序也会经常遇到本地测试没问题,到主分支就报错、因为本地资源环境与远端不同,主分支编译不过等问题。所以更加理想的解决方案是有一个自动化的build工具,可以方便我们在远端测试,从而避免类似悲剧的发生。

    当然,我只是举了两个比较典型的例子。具体到每一个项目,都需要根据实际情况定制配套的“工具”以及“工具链”,这样才能让我们的项目流水线安全平稳地运行。对于开发团队来说,项目启动前最好先咨询一下经验比较丰富的团队的建议,工作流是否正常且高效?有没有现成的开发工具可以使用?不要闷头干活,闭门造车。有时间的话,我之后还会专门写一篇关于“项目流水线”的文章,大家可以持续关注我的公众号——“游戏开发那些事”

    二、个人成长

    虽说工作经验的积累是最大的收获,但技术实力的提升也是一定的。毕竟在项目中获得的成长是最快也是最直接的。去年刚加入网易的时候,我自认为对虚幻引擎“比较熟悉”,期待能在工作中大展身手。但后来才发现,其实只是对部分模块比较熟悉罢了。随着项目的推进,我发现我需要深入学习的不仅仅是虚幻引擎,还要熟悉整个项目的Build打包流程、重新理解网络同步架构、从零构建一个功能模块、接触之前从未了解过的回放系统、学习并深入一门新的语言、完成渲染服务器对接功能等等。经此一役,我对自身的能力有了更清晰的认识,并重新审视了自己的知识架构与水平。
    在这里插入图片描述

    总的来说,有一些方面成长还是比较明显的,我大致概括为以下三点:

    1.知识的应用与实践能力

    很多朋友可能和我一样,都会面临这样的问题:看过一些书,也写过一些代码,但是实践能力不佳,产出不够,最直接的体现就是从零构建一个模块的能力不足。之前这方面确实是我比较明显的短板,不过经过一年的磨练和学习,现在的我面对一个新的功能已经可以比较从容地梳理并完成了。

    2.研究解决问题的能力

    我向来不避讳去正视自己知识方面的欠缺,毕竟学无止境,任何人都无法做到全能全知。一个知识点不会没有关系,重要的是遇到问题要有解决的能力。想要锻炼这项能力,我们就要敢于试错,勤于动手,同时能够主动积极的学习新的知识。对于现在的我,即使面对一个全新的挑战,也可以静下心来去研究并尝试解决。

    3.对项目技术的认识

    在开发各种独立模块和与其他同事的协作过程中,我对项目的整体以及细节有了更深入的认识和了解,包括项目技术的研究与拓展、程序模块如何分工、哪些内容(比如3C、AI等)比较复杂需要多投入精力、哪些工具对提升工作效率是非常必要的等等。在项目测试前,我还经历了一波比较艰难的性能优化与Bug修复阶段,这让我对资源加载、网络同步、内存管理等方面也有了更为深刻的理解。总的来说,这些都是非常宝贵的经验,真的是只有经历过一个有一定规模的项目才能获得的。

    三、业余时间的成长

    当然,工作之余,我也花了一些时间进行自学和总结。首先,开了一个只输出干货的公众号(虽然想靠他恰饭还遥遥无期),梳理了一些面试相关的基础知识。

    Jerish:史上最全的C++/游戏开发面试问题总结(一)——C++基础

    期间还因为知识水平有限以及总结不太到位被知乎大佬怼过。当然这也让我更加注重内容的准确性和深刻性,不断修补自身的知识体系,力求为大家提供更优质的文章。

    Jerish:被知乎大佬嘲讽后的一个月,我重新研究了一下内联函数

    毕竟要吃游戏开发这碗饭,懈怠是万万不可的。这一年除了买了几本技术相关的书籍(虽然还有好多没看),有时间还会读一读引擎源码,分析其中的技术细节,没事也会去知乎逛一逛,与身边的大佬交流交流。不得不说,身边有大佬可以随时提问的感觉真的好!
    在这里插入图片描述

    另外,年底的时候本科导员还请我做了一期校招求职经验分享的视频,逼的我把废弃多年的AE重新捡了起来,由此开启了新世界的大门。关于这个“面试经验分享”的视频,我确实花了相当大的功夫才把近几年的求职经验以及网上的面经全部汇总起来,看完了绝对让你受益匪浅。这里先放个小彩蛋吧,年后我会挑个时间把完整视频放到公众号和B站上面,到时候希望各位可以帮忙转发,毕竟如果大家给力的话,说不定明年我还能成为一个知名Up主呢?
    在这里插入图片描述
    在这里插入图片描述
    这一年要说有什么遗憾的话,就是年初定下的计划并没有完成,很多想看的书也没时间看完。不过花了很多时间在健身和打球上,也不算荒废了吧。对于所有参加工作的朋友们,我发自内心地建议大家多运动、少熬夜、重养生(虽然并做不到)。毕竟2019也不算太平,想在裁员大潮中保有持久竞争力,身体才是革命的本钱啊。

    总的来说,2019是非常充实且收获满满的。新的一年,我会继续在工作中成长进步,继续在我的公众号、知乎以及博客上为大家输出高质量的文章。2020会是非常美好的一年,也祝福看到这篇文章的各位工作顺利,好运连连!

    再次祝大家新年快乐!奥利给!

    展开全文
  • 其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,写了准备一年...
  • 其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,写了准备一年...
  • 毕业后一年

    千次阅读 2007-07-01 19:41:00
    流火的七月,一个令人伤心的季节,因为这个月是所有学校毕业的日子, 一年前的这个时候我也离开生活了四年的学校,告别了朝夕相处的室友, 告别了“创新”。。。 。。。 今天,正好有时间去复旦转了一圈, 看到了...
  • 回顾这一年

    2013-01-09 16:05:55
    随着工作的时间越久,了解的越多,才感觉自己越来越菜,要学的东西还要很多,工作一年多了,每天晚上坚持学习,周末也不怎么出去。最近也发现了个问题,网上下载的相关电子书太多了,哪个都看,而且有些东西类似,...
  • 工作一年开发总结

    千次阅读 2011-05-10 08:55:00
    转眼间一年过去了,一年里学到了很多也明白了很多事情。写个总结,就当是在自己的程序人生里下个assert。在这里小小的暂停下,弹出自己现在是一个什么境界。这既是对这一年来的总结,同时也可以对自己将来做个打算。...
  • 前言 各位学弟学妹们大家好,我是一名出生于千禧年的00后程序员,因为个人极特殊原因,现已毕业并在职场中摸爬滚打一年。在社会近一年的不断探索中,让我明白了很多人生哲理,看透了很多人间现实。借助这次分享,我...
  • 2018,这一年的腾讯优图,我们总结一下!

    千次阅读 热门讨论 2019-01-04 14:55:39
    2018,巨头持续布局AI,可谓“落地生花”的一年。 毋庸置疑,腾讯也“玩”AI,最具代表性的,就是“玩出”了三大实验室,被业界称为优图实验室、腾讯 AI Lab和微信AI团队与港科大组建的人工智能联合实验室。 ...
  • 马上就要到农历新年了,相信各位小伙伴们有的已经准备启程返回家乡,有的还『情愿或不...我相信,但凡加入圣思园的各位朋友,过去的一年皆是成长的一年,是技术提升的一年,更是认知升级的一年。我们在过去的时光...
  • 一年二年面试java可能问到的问题

    千次阅读 2018-09-28 15:48:07
    对于一年经验 会问到什么问题呢 根据在qq群里大神聊天 所记录一下 ! 数据库问题 --连接SELECT Students.ID,Students.Name,Majors.Name AS MajorNameFROM Students INNER JOIN Majors ON Students.MajorID ...
  • 由于有很多学弟都向我咨询这一年来的经验,因此决定记录下来供大家参考,祝愿大家最后都能拿到自己想要的offer ! 下面分几个阶段作下介绍。 文章目录一、决定转行二、基础学习三、尝试做项目四、巩固基础五、实习 一...
  • mac 我用Mac的这一年

    千次阅读 2015-09-11 02:09:50
    前言距离去年4月份正式开始使用Mac,到现在已有一年时间,在这一年中,从小白的角度确实对电脑的理解产生了一定的变化,遂打算写一篇总结,只是谈谈个人的感受。当然,使用是建立在良好的软件体验基础上,所以肯定...
  • 过去的一年,我在读研

    千次阅读 多人点赞 2013-08-02 13:57:40
    2012.09.01,从这一天起,我开始了新的学习生活,这是一个新的开端,这也是我大学毕业的一年,我开始了研究生生活,到现在,2013.08.01,恰好两个学期,研一的生活结束了,这一年里,颇多感受,不敢忘却,故执笔于此...
  • 1. 引言  标题说是一周年,其实是不是正好是一周年,我也忘记了,光从github的提交记录看也不准确。...今天来总结一下这一年的wangEditor的成长过程,以及我自己在这一年时间,对于技术、产品等各方面的思考。
  • 智能仓操作是在仓使用智能机器人AGV,基于一些智能化的操作来提升拣货效率。仓储往往会面临着货品摆放、拣选路径、自动化、人效提升等挑战,而机器人本身可以自我学习从而不断优化,此次双11的实践效果也表明...
  • 一年成为Emacs高手(像神一样使用编辑器)

    万次阅读 多人点赞 2012-01-31 16:35:12
    更新时间: 2014-03-29 Sat 原创时间: 2012-01-31 Tue 版权:本文采用以下协议进行授权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明作者及出处. 1 注意 1.1 我的某些...
  • 一年半经验的前端面经总结

    千次阅读 2021-05-13 00:54:53
    要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!! 第一次跳槽十分忐忑不安,和没毕业的时候...
  • 因为从你开始准备校招的那一刻开始,到你正式拿到offer的,并且确定去哪一家公司时,时间差不多一年左右,这个时间其实比考研、公务员等都要长,你可能会问为什么需要这么长的时间,当然,这也跟个人的具体情况相关...
  • 把react和基础知识用四象限区分: react:紧急而且重要 基础知识:重要但不紧急 重要但不紧急的事情没有做好,终有一天会变成 紧急而且重要的事情 工作时间内,主要学习react,因为这种是属于 有所学,有所用的范畴...
  • 一年,这些书:2020年读书笔记

    万次阅读 2021-01-29 08:06:08
    Note: 以下 markdown 格式文本由 json2md 自动转换生成,可参考JSON转Markdown:我把阅读数据从MongoDB中导出转换为.md了了解具体的转换过程。 面纱 作者:毛姆[英] ISBN:9787210082835 出版社:江西人民出版社 ...
  • 到现在2018年7月2号也过了一年半的时间了。期间做过很多应用程序(PS:大多数都是做着玩的),比如做一个GUI聊天室(JAVA)、Android应用、Unity3D游戏(C#)、SSH整合开发一个WEB系统(完整版)等…虽然我这些都做过,但是…...
  • 阿里云1核2G云服务器99一年

    千次阅读 2018-04-09 17:34:03
    具体赠送规则如下:  成功推荐第1人,送3个月云服务器;成功推荐2至10人,送4至12个月云服务器;成功推荐11至21人,送1年云服务器;成功推荐22至33人,送2年云服务器;成功推荐34至45人,送3年云服务器;成功推荐46...
  • 一年前, 我在博客上陆续写了好几篇”完全用命令行工作“的文章. 这些文章介绍了一些我平时用的的基于命令行或纯键盘的工具和命令. 而之所以强调纯键盘(不用鼠标), 是因为我发现拔掉鼠标纯用键盘, 能大幅度的提高工作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,982
精华内容 17,592
关键字:

一年内的时间具体指