大概需要10分钟。
原谅下,又标题党了,不过这篇会提到我应届面试腾讯的经历。
前两天在朋友圈发了一条动态:要做读者朋友的指路小火苗,很多人在状态下留言:为啥不是指路明灯?为啥不是小油灯?
原因很简单,洋哥目前还没有足够的自信能持续发光发热,不断输出对大家有用的价值,不过我会努力。
这几天好几个读者都在问我这10多年是怎么发展起来,虽然我依然在路上,并没有取得什么大的成绩,但其中的一些得失还是可以给大家分享下的。
最近我将用系列文章,回顾十年程序生涯,一方面是对职场生涯的阶段性总结,另一方面希望这些经历,对大家往后职场生涯有所启发。
我很庆幸一路走来都是自己的选择,虽然也走了不少弯路,但那是我选择的生活。
一只站在树上的鸟儿,从来不会害怕树枝断裂,因为它相信的不是树枝,而是它自己的翅膀。
1.大学时光
一般大家回顾都要说说都大学生活,我的大学生涯特别特别无趣,大一大二在网吧中度过,挂科无数、四六级也没过。
我们的大学坐落在山上,放一张当时大学的图片,当然现在的变化已经非常大了:
大学期间一直默默无闻,唯一一次出名,是被辅导员从网吧抓回来,全年级通报批评,一下大家都知道我居然在网吧住了17天。
一晃到了大三,挂科无数,甚至要被学校开除,深刻反思后奋起直追拼命了半年,考上了研究生。
这期间因为考研的目标是华科计算机,除了笔试还需要上机考试,淘汰率爆高。没办法开始疯狂敲代码,谭浩强那本《C语言程序设计》上的每一个案例,基本都实现了一遍。
当然,最近不少朋友问现在还要不要看谭浩强,很肯定的说:千万别看,毕竟我看的时候还是2005年,彼时几乎没有什么好的学习资料。
谭浩强的书是属于把简单问题复杂化了,而真正的高手善于把复杂问题简单化。现在要系统学习C语言,首推两本书:《C primer plus》和《C与指针》。
攻克完C语言之后,听师兄师姐说数据结构也是自学编程需要攻克的重难点。从数组到链表再到堆栈、二叉树、平衡二叉树、红黑树、B+/B-树,简直就像看天书。还记得二叉树的先序,中序,后序遍历就把我弄晕乎了。更别提后面的AVL树的删除以及B-树。
我应付看不懂的方式也很粗暴:做笔记,勾选出没看懂的部分,反复看。一遍不行看两遍三遍四遍,直到所有内容看懂为止,看懂后就上机,上到天昏地暗上到头晕脑胀。数据结构这本书,记得来来回回看了10多遍,上机100小时以上。
这之后开始系统的学习网络、C++、VC,还记得有一本非常厚的书:《C++ Primer》,可以说上面的每一个例子,都上机造过轮子。
随后开始啃《Effective C++》、《More Effective C++》、《C++程序设计原理》、《深度探索C++对象模型》、《STL源码剖析》、《计算机网络系统方法》、《TCP/IP详解》。
除了疯狂自学,毕业的压力也很重,但掌握的东西越多,你对未来就越笃定。
疯狂学习的过程是枯燥且伴随痛苦的,编译报各种不通过的时候让人无比抓狂,知识点学不会的时候会让你怀疑自己的智商。
学着学着发现不过瘾,正好有几个成绩很好的同学组队要参加ACM,了解了下,发现这个比赛不错,可以锻炼编程能力。
这时候,很尴尬的事情发生了,我要求加入他们的队伍,被无情鄙视拒绝了。
队长给我指了条路:你先去PKU ACM上面刷几百道题吧。大白话是:你这个编码弱鸡,还是先练练吧!
无奈之下,只好自己玩了,于是开启了我的刷题生涯。那时候很狂妄,账号名是这样的:
我很快就被现实教育了,PKU ACM的题目真的难!经常是几天才能完成一个。
很多时候搞不定代码,就在那一边拔胡子一边继续敲,1个月之后,我发现胡子全让我拔光了....
但收获是巨大的,大学期间所有专业课基本没学,基础特别差,为了刷题我把最重要的几门课的教科书反复读,反复练习,基础很快赶上来了。
短短几个月我学会了各种算法,诸如贪心、动态规划、背包等等。
等到研究生毕业找工作,才发现,刷题对进大厂帮助太大了。给在读计算机专业的朋友们一个建议,一定要多刷题!毕业的时候要想进BAT这样的大厂,算法一定是必考的。
当年这个ACM队长,毕业后先是在北京亚马逊工作多年,现在在美国谷歌工作,不得不说这也是算法给他的赋能。
2.一次实习经历
大四弄完毕设之后,除了刷题没有其他事情干了。于是我开始找实习的地方,想着去公司积累点经验。我所在的那个城市,IT公司非常少。
找了挺久,找到一个小公司,工资是一个月1500。那会还算不少钱,很多同学找的工作一个月也就3000出头。
有了实习机会,很开心,公司给网吧做小软件,大概10来个人挤在一个民房里。
老板交给我的任务是写Windows C++界面,正好大三学了VC,工作很快就上手了。没几天,老板说软件要赶着上线,全员一周工作六天。
今天大家热议的万恶996,洋哥10多年前就体验了。
想着多学点东西,每天干到12点,学校也不回了,直接打地铺住公司。很快就工作一个月了,该发工资了。那天我非常开心:人生第一次要领工资了嘛。
没想到老板说,银行那边出了点问题,所有人的工资下个月一起发。看着其他正式员工也没什么反应,我也没说什么。
第二个月依旧是996,这期间给网吧做的软件上线了。这个过程了解到了软件开发-测试-上线的全流程。
老板还跟我说:小伙子,你挺幸运啊,没毕业做的东西就有人用了,继续好好干,一起改变世界!
听了这话,我也挺激动,开始给社会创造价值了。
突然有一天,去上班发现大家都在收拾电脑和桌椅。我赶忙问:什么情况,大家要去哪?一个员工告诉我:老板欠钱跑路了。
卧槽,一下懵逼了,老板不是几天前还说要改变世界吗?怎么突然就跑路了。
那我这两个月的工钱不是没了?遍体鳞伤之后,我回到了学校。因为这段经历实在太惨了,也没敢跟同学们说。也算提前体验了社会的残酷吧。
3.找工作
读研正好赶上学制改革,三年缩水成两年。研一除了学专业课就是帮老师做项目,其他时间全部拿来刷题备战面试。
时间很短暂,一晃来到研二开始找工作。
面试过的公司:网易游戏、腾讯游戏、盛大、畅游、北电、诺基亚、Autodesk、微软、百度、国开行。
那个年代,外企非常受欢迎,面试北电的时候,在光谷的一家五星级酒店。
北电的面试官的水平也非常高,面试过程一直在探讨C++反射的底层实现。
诺基亚的面试地点更绝,包了武汉的一个高档别墅区,极尽风头。
没曾想,没几年时间这两家公司都已日落西山,外企在中国的辉煌时代也一去不复返。
最后我拿了三个OFFER:腾讯游戏、AutoDesk、国开行。
薪资上来说,AutoDesk和国开行都比腾讯高,且一个能解决北京户口,一个能解决上海户口。
但读书期间,我一直在思考互联网的发展前景,也有一个未来在互联网干出一番天地的梦想。
最终我选择了当时看起来最差的腾讯。
4.第一份工作
2008年南下深圳,看着南山繁华的夜景,我给自己立下了誓言,一定要在10年内混出一番人模鬼样。
然并卵,梦想并没有实现,今天还在前行中:
刚加入腾讯,年薪10万,看着深圳的房价,做了下计算,这得工作50年才能买一套房啊。
腾讯的领导王先生给我们说:刚工作的前几年不要在乎收入,扎扎实实的成长,有一天你会发现突然就质变了。
当时半信半疑,今天回过头再来看,的确是非常有道理的。
我们小组负责研发QQGAME游戏大厅,本以为是研发游戏,工作才发现是在做Windows客户端。
心里不免有点小失落,但这点失落很快就被繁忙的工作冲散了。入职两周开始接线上需求,我们的客户端代码是基于MFC和COM的思想构建的自有架构。
整个代码库有几十万行,上百个dll模块,编译一次就需要10来分钟。
那段时间,压力山大,担心不能按期交付,只好每天12点下班、每个周六都去加班。
王先生对人要求非常严格,刚工作遇见严格要求的老板,其实是一种幸运。
每天我们都会有代码Review,王先生对代码风格、类的结构、工程结构甚至是注释的规范性都有极高要求。
这也让我产生了「代码洁癖」,对之后的工作帮助巨大。
在腾讯工作期间,虽然非常累,但能力成长飞快,QQ游戏大厅的用户量是千万级的,每天的用户反馈无数。
程序员的能力成长,需要来自真实用户的反馈和检验。一做出来功能就有几百万人会用,自然能快速成长。
唠叨几句:
程序员是一个很苦很累的职业,但也充满了成就感。每一段闷头编码挑战极限的时光,都值得回味。
这是我的10年程序员生涯系列的第一篇,这个序列要写好几篇。
我特别喜欢一句话在这里分享给大家:
我的代码曾运行在几千万用户的机器上,作为一个程序员,还有什么比这更让人满足的呢?如果有,那就是让这个用户数量再扩大 10 倍。
扫码加好友,加入海归Python编程和人工智能群