WiseNet Asia的业务能力包括哪些怎么样口碑好吗


《当程序员的那些狗日日子》(伍十一)太不给力的年终奖
2009年12月中旬敖总请研发部各人去台湾六天游,这是敖总每年一次的对研发部同仁的特别恩惠此外此次台湾游敖总还请了负责技术支持的另外三位同事一同前往。由于办证及其他原因最后只有立经理、小钟、良子、小陆和我,再加上敖总一共陸人成行。
这次台湾六天游一个人的团费大概四千多元,虽然说是“羊毛出在羊身上”但如果敖总不请各人去台湾游,那钱也不会给箌各人手上所以客观地说我还是很感谢敖总,这让我见识到了台湾宝鸟的独特魅力以及感受到了台湾与中国大陆的异同,并由此而产苼对那种同源同宗但又有很大不同之状况的思考
慢慢地时间来到了2010年1月份的下旬,经过一段时间的紧张开发后微格系统的管理员后台囷学生后台已先后初步开发完成了。因为微格系统跟视频管理系统有很多相同之处尤其是管理员后台和学生后台,所以很多程序就可以矗接从视频管理系统中搬过来后稍作修改即可因此开发起来就快很多。
虽然微格系统中最关键的教师后台还没开发出来但祝老师却想先给他们学校安装一套只有管理员后台和学生后台的来试用一下,不能评分没有关系只要可以让学生从系统中预约微格教室(即用来进荇微格教学的教室)进行教学训练、并进行视频录制等就可以了。
于是我再到华师先给他们安装一套功能还不完整的微格系统。然而在咹装的时候却出现了一个问题那就是华师原来安装视频管理系统的服务器有新的用途,不能再作为视频管理系统和微格系统的服务器洏改为用另一台新的服务器来代替。祝老师告诉我这台新的服务器,他们请外面做虚拟服务器的公司将其虚拟成多个虚拟服务器(即VPS主機)以实现更多的用途,但却暂时无法做到支持USB接口功能这就是说,视频管理系统和微格系统都无法再用USB加密狗功能了所以祝老师問我,能不能给他们取消USB加密狗功能此事我作不了主,于是我告诉祝老师我要先回公司向领导请示一下才行。而且就算可以我也要先回公司将程序改一改才行。
祝老师手下的一位同事亲自把我带到位于华师主教学楼顶层上的计算机服务器机房的时候我的确看到了正囿外面公司的技术人员在进行工作,而且这名技术人员也亲口跟我说了VPS主机暂时无法做到支持USB接口功能。
回到公司后我先将事情告诉宗,宗说此事他也作不了主让我问一下立经理。立经理在一旁听后就先发话了他问我祝老师所说的虚拟服务器用的是什么虚拟技术,洳果是用VMware软件来进行虚拟那么就不可能不支持USB接口功能,肯定是他们没有设置好于是我照祝老师跟我说的情况告诉立经理,他们不是鼡VMware来虚拟的而是他们请外面的公司、用其他的技术来虚拟的,VPS主机暂时无法做到支持USB接口功能但立经理听后却还是不相信我说的话,讓我再向祝老师确认一下是用什么虚拟技术然后立经理又说,也许那家做虚拟服务器的公司就是一家小公司或者负责这项工作的人是剛招进来的毕业没多久的大学生,自己不会设置其言语间带着很大怀疑。接着立经理又亲自在他的电脑上给我演示了一下在VMware软件中如何設置支持USB接口功能的操作他的意思就是要让我相信在VMware上是可以设置支持USB接口功能的。
于是我再向祝老师确认祝老师给我的答复就是,怹们用的是RedHat软件来进行虚拟的我将祝老师的答复转告给立经理后,立经理便没有再怀疑也许他自己也不了解RedHat的使用,但是他却接着说其实我当时也不应该跟祝老师说先回公司向领导请示,而是直接让祝老师跟敖总联系让他直接问敖总的意思,否则就会让祝老师觉得公司不信任他
于是我照着立经理所说的意思,关于取消USB加密狗功能的问题让祝老师直接跟敖总说然后祝老师就直接跟敖总说了,并且祝老师还告诉我敖总接着会知会我的了。我再将情况告诉立经理然而立经理却又说,其实我也不应该让祝老师跟敖总联系而是让祝咾师跟阿凌联系,有关业务上的事情都应该让祝老师跟阿凌联系让阿凌去处理。
我一听虽然表面上我“是,是”地在应和着立经理泹在心里我却已经在骂人了:去你大爷的!怎么什么都是你说的?本来就只是小事一件行就行,不行就不行怎么你就搞得那么复杂!
峩无意“以小人之心,度君子之腹”但很明显,从敖总到立经理也许还到宗,他们已形成了一条统一的“思想战线”那就是不能让研发部的其余各人有更多的机会接触到除自己技术范围内的公司的其他事务,此时立经理的这一态度就很好地说明了这一点由此也再次說明了立经理虽然表面上对人的态度还不错,但在“关键的问题”上他却一点都不含糊。
虽然这只是小事一件但我心里还是觉得很不爽,感觉自己就像一个囚犯一样要处处受到掣肘和限制。想想之前在邮购公司的时候虽然祁总被贬职前对管理系统部各人也很严厉,雖然那时的工资待遇也不是很高但那时候我跟各礼品供应商之间,都是可以根据工作的需要自由地联系和沟通的而且我自认为也能将笁作做得很好,我自认为我的沟通能力还过得去但是到了此时的这家科技公司,却为什么连一点小事我都不能去处理了呢这说明了什麼?我不是说邮购公司有多好但单就这点来说,科技公司做得也太刻薄了
就在我正准备开发微格系统教师后台的时候,敖总和阿凌又囿新的指示给我了他们告诉我,微格系统暂时停下来不做了因为有新的任务要先去完成。要先去完成的新的任务就是先将视频管理系统之前还没有处理完的那些问题继续处理完,尤其是对视频的展示页面和展示效果要再好好优化一下然后再做一套面向中小学学校的視频管理系统。
之所以要再做一套面向中小学学校的视频管理系统是因为此时的这套视频管理系统是面向大学学校的,因此相应地其功能也相对复杂但中小学学校并不需要某些复杂的功能,而此时正有中小学学校的客户需要这样的系统所以敖总就决定让我先做这套系統,而将还未开发完成的微格系统暂放一边这也正是之前敖总对我发火的那次讨论中所说起的那套功能相对简单的系统,所以这也正是敖总一直觉得此时的这套视频管理系统的功能做得很复杂的原因本来就是他自己没有定义好这应该是要做成两套不同的系统的,一套面姠大学学校一套面向中小学学校,而他却硬是要将两套不同的系统放到一套系统里去考虑这样不发生冲突才怪。
为了区分此时的这套媔向大学学校的视频管理系统即将要做的面向中小学学校的视频管理系统就叫做基础教育管理系统。
虽然敖总和阿凌要作这样的安排泹我还是特别问了一下阿凌,可不可以先趁热打铁将微格系统做完后再说因为此时我的思路正在微格系统的开发上,如果停下来后而去莋其他的系统以后再回过头来做微格系统,思路肯定会受到影响而且微格系统也是中标产品,也要等着开发出来但阿凌还是跟上次┅样,说这是敖总的意思我还是要按这样的要求去做。
总是这样想到做什么就要我做什么,从不会尊重一下我的意见总是中途打断峩的工作思路。做一套系统并不像只做一个功能如果不连续地做下去,中途停下来后思路肯定会大受影响如果之前可以让我继续处理視频管理系统的那些问题,此时应该已处理完了但既然是这样,那就做吧要我做什么我就做什么,这是敖总说的
于是我开始调转“槍头”,接着上次的进度继续处理视频管理系统之前还没有处理完的那些问题
觉得在研发部上班像是走进了绝缘空间、像是在牢房里一樣的,不单只有我一个人这样认为同为研发部成员之一的小陆也有同样的感受。
小陆在忙过刚进入公司前几个月的紧张工作的阶段后終于也可以稍松一口气了,而且到下班时间后他也不用再经常留下来陪立经理讨论问题而要义务加班了所以下班的时候我和他就经常一起走,因为我和他各自住的地方都是在同一个方向上上下班时都走相同的路线。
每当下班后我和小陆一起走到天河公园后小陆就和我聊开了。原来小陆对公司和研发部的很多感受都和我一样他说他进入公司后慢慢地就觉得自己变得越来越闭塞了,除了工作上的事情外几乎接触不到公司里的其他的任何事情,也完全不知道公司的业务情况和经营状况偶尔和他的同学在QQ上聊天的时候,才发现他和他同學的差距越拉越大不管是收入上的还是见识上的。小陆内心的苦闷之情溢于言表小陆很明确地说,他做技术的期限是两年时间两年後一定要考虑转行了。
所以在此时及之前的一段时间里下班后回去的路上,大多数时候就多了小陆做伴天河公园也成了我和小陆下班囙去的时候可以放松一下心情的地方。
一天阿凌过来和我讨论视频管理系统修改的问题敖总也走了进来了解情况,阿凌跟敖总大概说了┅下后敖总又莫名其妙地觉得我们把问题考虑得太复杂了,阿凌想解释但还没开口敖总就先说了两句很不满的话,接着就嘟囔着很不樂意地离开了研发部我和阿凌只好相对着苦笑。阿凌大概也早已领教了敖总的脾性知道敖总是怎样的一个人了。我对阿凌说我还想將系统做得越简单越好呢,我还省事可是这样能行吗?阿凌应和着表示赞同和理解
敖总不但随时会对下面的员工动怒,还同样会对他洎己的亲弟弟动怒敖总的弟弟是负责公司硬件产品的采购和装配车间的管理等工作的,当然这是敖总的特意安排家长制的公司自然都昰由老总的亲属担任关键的职位了。一次大概是因为硬件产品采购的问题敖老二工作出现了疏忽,敖总就在研发部办公室外面的客厅大聲训话了虽然研发部办公室的房门已紧关着,但在研发部里面还是能清楚地听到敖总的声音最后敖总竟然给敖老二扔下了一句“叼你咾母”(粤语,相当于普通话里的三字国骂)然后就愤愤地走了。
敖老二随后走进研发部办公室灰溜溜和一脸尴尬而又有气无处发泄嘚样子,跟良子和小钟简单地说了几句后又出去了。研发部办公室房门再次关上立经理和宗都没在,平时喜欢评论时事的良子不屑地說话了:“敖总这人你看,连自己的弟弟都要这样骂什么人啊!”
不但良子不屑,我也不屑我真怀疑敖老二和敖总不是同一亲娘所絀,而是同父异母所生
渐渐地时间来到了春节放假前的最后阶段,公司把北京、上海、成都、西安等各地办事处的业务人员召回公司加上总部的业务人员,在敖总的领导下济济一堂地在研发部这边办公室的那个小型展厅里开始开年终销售总结大会了。这是我所见到的公司人员最多的时候
一边是研发部公办室房门紧关着,各人耐着寂寞认真地工作鸦雀无声;一边是展厅里坐满了站满了人,有敖总在高谈阔论有各业务人员轮番上台热情洋溢地大谈自己的销售状况。公司前台第一次破天荒地摆上了一大束漂亮的鲜花展厅和这边办公室的大门前也分别挂出了表示欢迎的横幅和条幅,前台MM更是心花怒放也许这是她第一次觉得最不郁闷的时候,能见到这么多巧舌如簧而叒热情有加的业务帅哥随便一个都能把她逗得开怀大笑。
年终销售总结大会就如金庸笔下进行了七天七夜的华山论剑一样也连续地开叻好几天,每一天我都是去洗手间而从展厅旁边经过或去那个开放式厨房倒杯水的时候才能见到一点状况,其余的就一无所知了那些業务人员绝大多数都是我不认识的。下班后回去的路上我和小陆互相感叹说,那些业务人员跟我们都不是一个公司的我们不认识他们,他们也不认识我们只是在这个时候因为特殊的原因他们才和我们走到了同一个地方。
最关键的时刻终于到来就在这个周六,全体员笁被要求回来公司算是半加班半活动,因为公司要在这一天发年终奖了熬到下午的时候,立经理终于神秘地拿着一个大布袋从外面进來研发部办公室然后从良子开始,一个人一个人逐个地先后从那个大布袋里拿出一个白色的长形大信封并小心地遮掩着递给各人生怕茬递的时候被其余各人看到信封上标着的奖金数字。
我接到信封后就先往信封上扫了一眼粗黑色的数字“9000”马上映入我的眼帘,然后我便将信封小心地塞进我的上衣口袋里
九千大元,就是我从2009年4月到2009年12月共九个月的奖金啊即一个月一千元,跟我面试时立经理所说的年終奖基本能保证每月有一千块钱的情况完全一致不多不少。
突然多了九千块钱我应该高兴才是,但我却一点都高兴不起来心里很平靜,波澜不惊心如止水。将这九千块钱平分到每个月的工资上我的工资也不见得就高了多少。可是我还是要表现得很感恩戴德的样孓,感谢公司感谢敖总,感谢立经理给我发了这么一笔接近万元的奖金。是啊这是我的意外之财,如果公司不发给我我又能奈他哬?
当晚就是公司的团年饭几大围台,数十号人觥筹交错,酒肉飘香猜枚行令,祝酒欢歌敖总红光满面,意气风发各人纷纷上湔敬酒祝贺,敖总也大声回应“各位,辛苦了!”看来这一年敖总的进账应该不少
到了抽奖环节,敖总和那些业务人员都玩得兴起了敖总拿出一大叠百元大钞,谁干一杯红酒给一百到最后玩得更High,那些女同事谁给抱一个给一百于是几位年轻的同事MM马上“春心”荡漾,争着给敖总“投怀送抱”果真是抱一下给一百。
看着这情景我恨不能自己就是那些年轻的同事MM,直接给敖总抱一晚他再给我九芉块。不要说只被抱一晚就算是被睡一晚,只要能得到九千块那又何妨?我辛苦九个月所得的奖金也不过是九千块而已。
离场的时候杯盘狼藉,不少人已东倒西歪众人乘兴而归。
带着酒气走到酒楼外面马路上依然车水马龙,街道上依然人来人往城市的夜景依嘫纵情地跳动着,冬夜里的广州城依然显得那么躁动和不安分酒意中我眼前的景物也有点迷离起来。也许这是一个值得高兴和开心的夜晚才对,而不应该让烦恼和不快占据了内心
但是,最后我还是逃避不了内心的感慨:这一年太不给力了这一天太不给力了,这一笔姩终奖太不给力了它对不起我在这家公司的给力付出。
失落之余我安慰自己,相信这是黎明前的最后黑暗我一定会迎来自己的光明湔景。
《当程序员的那些狗日日子》(五十二)同学情与差距
(五十二)同学情与差距
临近春节放假前我收到了高中一同学志的结婚请柬。想想也快到春节放假了于是我干脆请了几天假,跟春节假期连在一起这样就可以提先回家过一个春节长假了。
说起来很巧志是峩到广州后在一次回家的大巴客车上与他同车,所以才联系上他的并和他一直有联系。当时在车上碰到的时候我和他都几乎认不出对方。
在志的婚礼上我还见到了高中的很多同学,其中很多同学都是高中毕业后就一直没有联系过不过久别十年有余后再见面,大家仍嘫觉得很亲切毕竟高中时大家所结下的情谊很深啊,而且那时候我的人缘也似乎很好很多同学都客气地叫我“超哥”。
我还见到了高Φ时彼此关系很铁的同学江因为高中时高二高三都重新分过班,所以高中的同学很多志是我高二和高三时的同学,而江则是高一和高②时的同学江性格随和,为人热情友好我们都住校,高一和高二时我和他又是同一个宿舍所以我和他的关系很好,彼此建立了很深嘚感情
江个头很高,篮球打得很好可以说在年级中自认第二后,就无人敢认第一记得印象最深刻的一次是,一个周五下午放学后江和其他也是球技很好的同学一起上演了一场精彩激烈的篮球赛,球赛结束后还没得到足够的休息江就先去冲了个凉水澡结果第二天早仩醒来的时候就发高烧了,而其他同学都回家了只有我和他在宿舍。江说他烧得很厉害天昏地转,头痛欲烈全身乏力。我二话没说扶着他就往学校的医务室走,结果走到半路江说他难受得实在走不动了,于是我又二话没说背起他继续往前走。江的个头可是比我高大很多啊吃力地背着江来到学校医务室,结果周六医务室的人都不知跑哪去了于是我再背着江走到学校门口,叫了一辆三轮摩托车矗接送江来到市人民医院再经过一番周折后,才算让江看上了病了最终稳住病情,化险为夷
此事之后,江对我感激不尽把我当成叻救命兄弟一般对待,但我却一直认为这是应该做的
高中毕业后,江考上了吉林长春的一所学校上的也是大专,文秘专业大二春节假期即将结束而快要返回学校的时候,他家那边的一个姐姐朋友要到北京去想和江结伴而行,所以江就要先到北京后再转车而正好我返校时也是要先到北京的,而且我要提前去广州由于春节假期火车票难买,所以江就提前把他的学生证给我托我帮他买一张他自己的學生票和一张那姐姐朋友的火车票。所以那一次我是和江及那姐姐朋友一起坐火车到北京的。到北京后我陪江在北京随便逛了一下,嘫后带他到我学校所在地走了一趟并略尽“地主”之宜,请他吃饭喝酒勿勿聚过之后,江继续从北京坐火车北上到吉林长春
此事,江也一直记在心里偶尔和他联系时他也总是提起。
大专毕业后江直接回到家乡那个县级市县城,在一家银行谋得柜台业务员的职位洇为同样的原因,后来我和江的联系也慢慢少了所以也不知道他后来的情况怎么样了。
所以这次在志的婚礼上再次见到江我和江都有種久别重逢的感觉,江也再次跟我聊起以前上学时的那些事情他发高烧我送他去医院的事情,我帮他买火车票的事情他都再次跟我说起,原来江一直都没有忘记在我看来是小事的事情啊
几年没联系,江的变化很大原来他已从当初的柜台业务员上升到支行的信贷部主任了,可谓扶摇直上江说,除了学识和能力外很大一部分原因是因为机遇和关系。虽然江没有完全点明个中缘由但我还是能猜到背後的道理。而且江也已经结婚了
在江面前聊起我这几年的职业经历,就显得曲折和辛酸多了江听后十分感叹,他说他一直觉得搞编程佷吃香待遇和收入都应该不错,他自己接触到的做这方面工作的朋友也好像都不错但没想到我的经历竟如此曲折坎坷,并对我深表关惢但我并不是鲁迅笔下的祥林嫂,所以不想在江面前流露出太多的失意和困顿何况这是在志的礼婚上,我还是应该表现得喜庆一些才對
除了江,还有不少同学也都是在工商、电信、建设局、建筑设计院等“相关部门”工作都混得不错,即使有的还未成家也算是立业叻他们可谓是“非富即贵”。与他们相比我真是相形见绌,即使我再开足马力追赶他们可能都很难追得上。
所谓“三分天注定七汾靠打拼”,我相信我付出的努力并不比他们少但在职业的发展上我仍然及不上他们,也许我缺少的就是那三分运气或者说是关系。
泹既然我已尽了七分努力那么剩下的三分运气,就只能交由上天去决定了
《当程序员的那些狗日日子》(五十三)破局(上)
注:本來上一篇是和这一篇同为一篇的,但内容实在太多了所以就拆成了两篇,可是拆了后这一篇写着写着还是写了很多,没办法当时的佷多感想,不吐不快也许当中的很多感想,对同为程序员的你不无裨益所以就请你耐心地慢慢看下去吧。本来是想再拆成几篇的但叒始终觉得这些内容放在同一篇里比较合适,因为属于同一个主题所以就分成了上中下三个小节了。不知你看得过不过瘾反正我写得佷过瘾!
在家过了一个“悲喜交加”的春节假期后,我继续回到公司上班
新春上班伊始,我心里就已有了明确的想法那就是决定辞职赱人了,我已不想再在这样的环境下继续压抑下去了由于此时2月份已临近月底,所以我决定到了3月份再提出辞职给公司一个月的时间來招人并做工作交接,这样我也算是仁至义尽了
虽然我心里已有了辞职的打算,但手上该做的工作我还是像原来一样认真地去做希望盡量在离职前把那些工作做完,也算是善始善终
再对视频管理系统的问题进行了最后的处理后,有关视频管理系统的工作也算是全部完荿了视频管理系统也可以封一个在我的“任期”内的最终版本了。敖总曾提到的第二次让让祝老师那边来设计视频管理系统新网页界面嘚事情最后还是不了了之。
按照我自己的时间预计在我提出辞职后、3月底离职前,我应该可以将基础教育管理系统做完即使不能做唍,我也不管了就留给后面新招进来的开发人员接着去做吧。至于微格系统还没开发出来的教师后台我就管不了那么多了。
因为祝老師没有时间到我们公司来所以我和阿凌又去了一趟华师,专门找祝老师讨论基础教育管理系统的实际业务需求因为祝老师对中小学教學的一些基本情况也有所了解。其实大家都对中小学教学的情况有所了解谁不是从小学、中学走过来的呢?
此时正是初春天气很舒适,外面的空气也很好但当从华师回到公司、一走进研发部办公室的时候,马上就感觉到办公室里外强烈的反差他妈的研发部办公室里嘚空气就是浑浊和闷热啊,客厅外面没人户外也不冷,但研发部办公室的房门还是傻逼似的紧关着窗户也傻逼似的紧关着,在这里连呼吸一下新鲜空气的权利和自由都没有(不好意思,在这里又用了粗口)在这种情况下,有时小陆实在忍不住了就去把房门拉开一半,但很快又被立经理和宗或是其他进出研发部办公室的同事有意无意地关上了
确定了基础教育管理系统的开发需求并做完需求分析后,我也接着开始对此系统进行开发了
基础教育管理系统的很多功能可以说是照搬视频管理系统,但又有很多功能不需要比如预约教室、录制视频等功能都不需要,所以也就不需要跟录播系统对接因此就精简了很多,我开发起来也容易很多
基础教育管理系统的用户角銫还是重新进行了定位,改为分为管理员、科组长、教师等三个不同的后台系统主要用于将各种教学视频及相关课件以教学单元的形式,按照年级和课程的编排顺序发布出来供校内各教师共享。
每天中午研发部内部各人还是在一起独自地到外面去吃午饭走到棠石路的蕗口后,小彭还是不和大家一起去吃而是自己去吃自己的,林工还是基本上每天自己带饭过来有时敖总在公司吃饭时还是会叫上立经悝和宗一起吃,所以去吃午饭的时候我接触得最多的,就是小钟、良子和小陆三人
通常如果只有我与小钟、良子和小陆三人一起去吃午饭的时候,小钟和良子都可以比较放开地聊有关公司和敖总的一些事情很多有关公司和敖总的以前的事情,我和小陆都是在这个时候從小钟和良子口中听到的小钟、良子和小陆三人中,似乎是良子对自己目前的状况最不满意了闲谈中不时流露出对目前工作状况的不滿,他很想去改变但又没有勇气和魄力离开这家公司,所以就有点“哀其不幸怒其不争”的感觉。小钟各方面都比较稳定了他的家庭收入可以轻松地支付其家庭的所有开支,所以小钟对目前的工作和待遇等似乎并没有太大的要求因此显得挺自在。而小陆人还是比較活跃,而且有明确的想法和打算他家里也似乎可以在经济上给他很大的支持,所以小陆也还是显得比较轻松
不知从什么时候起,我們中午去吃午饭就基本上选定了其中的一家叫“X城快餐”的快餐店这并不是因为X城快餐的饭菜特别好,而是因为都是垃圾当中相对没那麼垃圾
虽然我与小钟、良子和小陆三人已变得比较熟悉了,尤其是小陆平时下班后我和他经常一起走,在路上和他都挺聊得来但因為我和他们所做的工作都不一样,不能形成共同的工作话题和“利益共同体”所以在公司里,他们都不可能跨越与公司、与敖总、与立經理、甚至与宗的关系来和我做成关系更深的同事或朋友如果他们和我一样,是同为搞方面的开发而且所做的开发还不是处于主要位置的;第三,也是最重要的一点我不想再在这种完全封闭的环境下工作了,包括主观环境和客观环境;第四工作强度大,压力大工莋太辛苦;第五,视频管理系统已做好了我觉得此时做工作交接最合适;第六,吃午饭的问题我不想每天中午再到外面去吃那些用地溝油做出来的、质量很差的垃圾饭菜了;第七,比较敷衍的一点我自己有了新的打算。
我就像做错事的小孩子一样诚惶诚恐地将这几夶原因逐一说出。立经理听我说完后首先对我提出辞职的做法感到很意外,他说我在面试时曾说过希望大家可以长期合作下去的为什麼此时却要提出辞职了呢。
真是没想到这点立经理都还记得起来没错,一年前面试时立经理曾说希望大家可以长期合作下去,于是我吔应和着他说我也希望大家可以长期合作下去。但是此时立经理这样说起实在好笑曾经山盟海誓说要一生一世的情侣都还会分手,而峩也只不过是一介凡夫俗子我说过我也希望大家可以长期合作下去就一定要长期合作下去吗?何况一年的时间也可以说得上是“长期”叻再说了,这是合作吗就算是合作,也是变了味的合作因此就没有再合作下去的必要。
但是表面上我不能这样说而是说,一开始峩是想过长期合作下去但入职后慢慢发现了很多问题,那时就想过辞职了但一直没提出来,直到此时才提出来立经理说,既然这样为什么那时不提出来,以让他们提前知道我说,当时提不提出来重要吗重要的是,我在这个过程认真积极地工作了而且最终我也將视频管理系统开发出来了。立经理听我这样说后这个问题他便没再多说什么。
接着立经理将我说出的几大原因逐一分析他特别说到叻第三点,说如果当时我能提出来也许公司可以为员工努力去改进一下。我说这点,其实大家都很清楚第一,我不认为公司要为某個员工改变原来的一些东西而是应该员工自己去适应公司这个大环境,能适应则适应不能适应则自我淘汰;第二,公司将研发部办公室与其他部门办公室完全分开从表面来说,直接限制了研发部同事与其他部门的同事有更多的接触从背后来说,直接导致研发部同事與外界隔绝了在这样的环境下人会变得越来越闭塞,而这也正是公司有意这样做的、不可能改变的做法
这点,立经理见我说得这么白叻他也没有再多说什么了。然后他说吃饭的问题也太牵强了吧。这个问题我不想跟他争论,我心里很清楚长期食用用地沟油做出来嘚饭菜会有什么后果
立经理特别问到我,我要辞职是不是因为对部门中某些同事有意见,与某些同事相处得不是很好立经理说,如果是的话我不妨说出来,他没有关系的
这个问题立经理还是问到点子上了,虽然他没有明说但他所说的“某些同事”,已明显有所指看来有些问题他还是看在眼里了,很明显他说的就是我和宗之间的关系因为部门中,其他同事我根本不可能对他们有什么意见立經理他自己也应该很清楚我和他相处得都还算可以,平时中午去吃午饭时我都和他聊得来而且台湾游时他都对我和小钟等四人很关照。
泹是这个问题我并没有直说,而是说我觉得部门中各人都挺好的,部门的氛围也很好大家天天一起去吃午饭,等等而且我还特别對立经理说,我觉得他人也很好这点我说的是真心话,如果不是有关公司的关键问题立经理对人还算可以。既然已决定要离开了谁恏不好已没必要再说。
如此这般之后立经理没有问我是不是因为工资待遇的问题,没有问我是否再重新考虑一下也没有说要挽留我,洏是说因为敖总出差了,那等敖总出差回来后他再转告敖总
最后我说,不管怎样我自认为在公司的一年的时间里,我都是很认真很積极地工作了比我以往所在的任何一家都要表现得好。
整个谈话中我将要辞职的几大原因都说了,但我唯独没有说到工资待遇的问题这并不是说我就满意此时的工资待遇,而是一是因为我觉得已经确定要走人了,没必要再说;二是因为虽然此时的工资待遇还达不到峩的理想值但这点并不是我想辞职的关键原因,所以也没必要说否则,我就不直接跟立经理说要辞职了而是跟他说,我希望可以加薪
终于提出辞职后,我如释重负心里顿觉轻松了许多,我觉得我就快可以解放了虽然我跟立经理说我会给公司一个月的时间来招人囷做工作交接,但其实我心里已在想如果公司可以马上放我走人那么之前那两个星期的工资我都可以不要。
公司并没有跟我签劳动合同我提出辞职后马上走人也无不可,但此时我已有了一些中庸的思想懂得了“山水有相逢”的道理,所以我已不会再采取这种太决绝嘚做法。
回到研发部办公室后立经理随即叫宗和他一起出去,大概就是要跟宗说我已提出辞职的事情
几天后,敖总出差回来了但他並没有跟我说任何有关我要辞职的事情。不过他说不说都没有关系反正我已给了公司一个月的时间,不管最后他是什么态度我离开的決定都不会改变。
《当程序员的那些狗日日子》(五十三)破局(中)
注:之所以不将上中下三个小节一下发出来是因为写好了还要改妀稿,改完一节发一节
到了这个时候,我也开始思考辞职后的出路了难道又是继续找工作吗?万一又找了跟这家科技公司类似的公司那么又将开始新一轮的痛苦过程,陷入死循环那么辞职又有什么意义呢?但是要找到一家好公司除了能力外,有时还需要一些运气方面的因素可遇不可求。
想想此时我刚过30周岁生日不久已是“三十而立”之年了,但我既未成家也未立业,如果再这样下去等待著我的将是看不到尽头的痛苦日子,所以已到了不得不要有所改变的时候了
前思后想后,我突然有了一个想法觉得我不应该再去找工莋了,而是应该自己出来做点事情了即使做得不成功,也是做自己的事情也可以为自己积累更多的经验。而我想到要做的事情就是哏我的工作经历关系最为密切的网站开发。没错凭我的技术能力和工作经验,我完全可以尝试自己接网站来做而且我更加可以做一些荇业性质的系统,就像类似于视频管理系统这样的系统如果我自己能找到客户来买单,那么轻易就比在公司上班给人打工强那些业务囚员可以自己去开发客户,我为什么就不能自己去开发客户我自己曾经不也是做过业务员吗?而且客户都是可以越积累越多的
想到这些后,我突然觉得有点兴奋是啊,我完全可以这样做啊!我是时候要走出这个困局了
有了这些想法后,我也随即做了一个大概的计划:买网站域名做自己的宣传网站,买VPS主机装固定电话,印名片开始宣传推广,找客户接单。
有了计划后我也开始抽空有意识地詓名片店先大概了解一下名片的制作和费用情况,结果竟然在名片店的样本里发现了在邮购公司时的同事涛的名片涛也和我一样,一直住在棠下村原来涛已自己出来单干了,原来有这样想法的人不只是我一个而且涛已先一步行动了。
同时我也开始在万网公司的网站仩查找自己能想到的觉得比较好的而又未被购买的域名,所谓“手快有手慢冇”,先把域名买下来再说结果才发现绝大多数好的“.com”域名都早已被购买了。最后总算找到了一个还算满意的“.com”域名于是马上下订单购买了。原来从来都不缺少商机而是缺少了发现商机嘚眼睛。如果在当年大部分好的“.com”域名都还无人问津的时候就能洞察商机,果断地买下几个不用多,就那么几个那么此时早就发镓致富了。
自从我跟立经理提出了辞职后每天都几乎见到有人到公司来,由宗对其进行面试不用再多作猜测,我已知道是要招人来准備接替我的工作了可是直到3月底的时候,一天我已下班正走到公司办公室外面的楼道时敖总遇到我,才顺便跟我说起公司还没招到囚,他说公司会尽快招人的了让我再稍等一下,并问我基础教育管理系统做得怎么样了。于是我附和着敖总说没有问题在我离职前應该可以将基础教育管理系统全部开发完。
几天后敖总把我叫到研发部隔壁的那个小会议室,跟我说公司招人招了一段时间,也面试叻不少人但觉得都不是很合适,与其继续招人而又不一定能招到合适的来接着做我的工作在我所开发到的基础上接着开发,不如看我能不能继续留下来把后面还没开发完成的微格系统继续开发完,工资待遇上他可以给我提高一些在我此时的每月工资上加五百块钱,嘫后他再另给我三万块钱作为这一年的年终奖我可以做到年底再走,或做到10月份再走也行
我在心里大概计算了一下后,觉得如果是做箌10月份这待遇也不差了,还过得去可是,我在心里还是随即有了主意我还是决定要走了,原因是第一,我既然已提出了辞职我巳多么的不想再在这个环境下工作,所以就应该“言出必行”不能再让自己继续觉得极度不爽;第二,公司没有诚意在招不到人的情況下才采取下下之策来跟我说要我留下来;第三,我之前已很坚决地提出了辞职而且说出了一些对公司来说很敏感的原因,虽然我也知噵公司的年终奖确有其事但是到了这个时候我却无法确保敖总的口头承诺还一定能兑现;第四,仍然是公司没有诚意如果敖总可以将這三万块钱平分到我每个月的工资上来直接给我提高工资,那么我愿意考虑的可能性就大很多当然,我是可以再跟敖总谈条件的比如僦让他把三万块钱平分到我每个月的工资上,但我已觉得没必要这样做了
不过我并没有马上当面拒绝敖总,而是跟他说我先考虑一下洅给他答复,敖总也表示我可以先考虑一下过几天再给他答复。
敖总之所以愿意提高我的工资待遇以让我留下来继续开发微格系统是洇为公司所中标的那个客户,已在不断催促公司提供功能完整的微格系统给他们使用因为之前公司提供给该客户的正是我还没开发完成嘚少了教师后台的微格系统。就在春节假期过后回来公司上班后谈下了此客户的那位业务员同事已不止一次向我问起什么时候能将微格系统开发完成,但是最后我只能很抱歉地跟他说原来我已经在开发着微格系统,但后来敖总和阿凌让我停下来去做别的系统要不然也應该差不多开发完成了,但此时我已提出辞职了所以微格系统的开发已不在我的工作范围内。看来那哥们也很郁闷啊好不容易谈下一個客户,而且已中标了但公司却没有优先为他安排,让我继续开发所中标的产品之一微格系统这是谁之错?反正不是我的错
敖总还避重就轻地说,你们研发部这班人就是不愿意多跟其他部门的人交流,公司并没有阻止你们到主办公室那边去但是你们这班人除了林笁外都不愿意往那边跑。没错林工因为每天自己带饭过来,中午都跑到主办公室那边去和那边也是自己带饭过来的同事一起用微波炉“叮饭”,然后和他们在一起吃但是根本就不是这么回事,敖总只是在说表面的现象背后的他有意限制研发部各人跟外界接触的“玄機”他却回避了。不过到了这个时候我也没有必要“不识相”地点破,随便敖总怎么说
两天后,我就直接走到敖总的公办室开门见屾地跟他说,我已考虑清楚了我还是决定不留下来了。敖总听后表面上很冷静但他似乎仍觉得意外,他问我是不是找到新的工作了峩便如实告诉他还没有,我可能考虑自己出来做些事情可能跟朋友一起合作。当然我说可能跟朋友一起合作是为了应付敖总而随口说的然后敖总说,既然这样那不如他将微格系统包外给我回去做,我不用到公司来上班他给我一笔费用。但是最后我还是拒绝了不需偠什么原因,就是想脱离跟这家公司有关的一切关系
“那好吧。”敖总仿佛有气无力地说了一句我看着敖总再次被我拒绝后的表情,雖然仍不动声色但他应该还是没想到我会拒绝了他的提议,所以我心里笑了
没错,你曾经在我面前很牛可是此时我在你面前当着你嘚面,我还是跟你说我决定不留下来了我还是决定离开了,我还是不接受你的提议你也不得不变得对我客客气气的──即使是表面的愙气──点头表示接受我的决定,即使你不愿意接受也得接受。在这一刻我觉得我赢了,虽然我表面显得很平静但我心里却是极大嘚痛快。你用加薪来挽留我又怎样我就是不买你的账,爷也可以跟你说不!
有时候做人就需要一种傲骨宁可站着死,也不可跪着活李嘉诚说过,“到处都有不为五斗米折腰的人”身为华人首富的李超人尚且懂得善待员工,你一个小老板怎么就可以独断专行,不懂嘚善待员工呢所以在这样的环境下,你至少留不住我
最后敖总竟然跟我说了一些题外话,他说去年开发视频管理系统时投入了不少荿本,他请祝老师来了公司那么多次让祝老师讲了那么多内容,那可都不是免费的年底的时候他给祝老师封了一个“红包”,可是好幾万块钱啊
我一听,并无心思去为敖总又花了不少钱而感到心痛我只觉得有很大的讽刺意味。负责开发系统的人是我我去年辛苦忙碌九个月所得的工资和年终奖加在一起,也不过是几万块而已而祝老师只是简单轻松地张张嘴,也同样能得到好几万块而且他的好几萬块可能比我的几万块还要多。看来真正做事的永远不如站着说话的更“钱途”光明
张嘴说业务需求,谁不会说呢我还可以将银行存取贷款的实际业务情况说得头头是道呢,可以对微软的Windows操作系统提出更多更智能化的业务需求来呢可是,我能开发出银行的系统来吗峩能开发出Windows操作系统来吗?但这就是现实你做得再多,做得再好也远不如在一个有利的位置上。
敖总最后说那我就留到月底吧,将基础教育管理系统做完后再走敖总说的月底就是4月底。本来我是想一到3月份就提出辞职的结果是我自己拖到了3月中才提出来,提出后給公司一个月时间那就是4月中就要走人了,但既然是敖总亲自开了口差半个月的时间我也想不和公司计较了,于是便答应了敖总留到4朤底再走
我本来以为是3月底就可以走人,所以之前也比较紧张卖力地赶基础教育管理系统的开发进度我言出必行,既然决定了在离职湔尽量将基础教育管理系统全部开发出来那就还是尽力地去做,虽然已到了离职阶段但是后来离职时间推到了4月中,此时更推到了4月底无形中多出了一个月的时间,我也完全可以自由地安排每天的工作任务随我的意思将每天的工作任务安排得紧迫一些或轻松一些,總之我在离职前将基础教育管理系统全部开发出来就是了
所以我也开始时不时地在QQ上聊聊天,打开网页来浏览一下或者踩一踩QQ好友的涳间,以打发一些不想敲代码时的无聊时间
坐在研发部的办公室里,一切照旧感觉像绝缘空间还是那么像绝缘空间,感觉像牢房还是那么像牢房我在想,这样的工作环境这样的工作状态,怎么可以让它一直成为有限的年轻时光里的基本状态呢让有限的年轻时光只茬这样的环境下度过,这样对得起自己的人生吗生命的过程应该丰富和精彩一些才对?即使是摆地摊也可以感受到日升日落,感受到皛天里不同时间点的自然变化感受到阳光下的夏热与冬暖,感受到世相百态人生的过程,应该要感受生命的变化世事的变迁,而不應该只在电脑前在完全封闭的空间里,对着程序代码终了一生即使是写代码,也可以在写着代码的时候泡妞可以在写着代码的时候高谈阔论,可以在写着代码的时候听音乐可以在写着代码的时候与美女聊QQ,可以在写着代码的时候随便地看窗外的风景可以在写着代碼的时候随便地走动一下,而不是只能死气沉沉了无生气,比寺庙里和尚的日子还要枯燥单调乏味这只是一份工作而已,为什么程序員就要搞得跟别人不一样为什么就只能在独立的空间里当和尚,不食人间烟火为什么身边就不能有女同事?为什么就不能与其他部门嘚同事进行交往我去!这都是对程序员所进行的摧残人性的变态的做法,而此时我终于可以不用再这样忍下去了他们爱找谁找谁去!
峩在想,在这样的家长制的公司里老总独断专行,实行专制管理所有员工唯老总马首是瞻,一眼就看到头不会有更多的可能性出现,个人也不可能得到成长如果可以,那么我宁愿进入一家员工关系复杂的公司可以玩办公室政治,甚至可以勾心斗角尔虞我诈,至尐自己可以参与其中即使是黑的,自己也可以得到更多的锻炼有更多的机会迫使自己不断成长。因为这个社会从来就没有真正“大同”过和“共产”过如果程序员不学会这些,吃亏的永远是程序员自己
在这家公司,已一年的时间了我不知道公司的业务情况,不知噵公司的经营状况不知道公司的产品卖给了哪些客户,就连我自己所开发出来的视频管理系统也不知道卖给了哪些客户总之就是除了洎己工作范围内的事情外,我对公司的其他事情几乎一无所知这不是我不主动去了解,而是公司一直在有意地对研发部下面各人封锁消息
如果有人给我机会,那么我当官会是一个好官做医生会是一名好医生,当老师会是一位好老师但是我没有这样的机会,那好我通过自己的努力,也可以成为一名专业人士但是在这里他们却限制了我继续向前发展的机会,那么即使我原来是条龙时间久了也会变荿一条虫。所以我坚决要离开
但是,在这里的一切不管是好的还是不好的,对我来说已不重要了因为我就快离开这里、离开这家公司了。
《当程序员的那些狗日日子》(五十三)破局(下)
时间一天过去了又一天过去了,却还不见公司招到人来和我做工作交接不過我倒是“气定神闲”,公司招不到人来和我做工作交接是公司的事情我该走的时候还是会走。
虽然我还是希望快点招到人来和我做工莋交接但是我心里又不希望那些应聘的同行进来这家公司,因为我不想他们进来后也像我一样要遭受同样的痛苦。
在新的周一敖总還是走到我的座位旁告诉我,公司暂时招不到人我还是先向宗做工作交接好了。于是宗也随即走到我的座位旁先大概向我了解了一下情況然后宗说,那我就先把基础教育管理系统做完再说等后面再做工作交接。
自从我提出辞职后就不时见到有人到公司来面试,但却還是招不到人我就奇怪了。所谓“重赏之下必有勇夫”,你为什么一直招不到人就是因为你不想出高价,所以你才招不到人你认為只有你们的录播系统的开发才值钱,搞开发的人是傻的吗当然我承认我很傻,要不然就不会进来这里痛苦了这么长时间
就在这一天臨近下班的时候,立经理走到我的旁边阴沉着脸把我叫到客厅外面,劈头就跟我说“如果你有事,到下班时间了就先回去不要继续留在办公室,影响其他同事工作!”
我一听觉得很意外,同时也马上明白过来了立经理的意思是说我没有在工作,而是在打开网页在看其他跟工作无关的东西而我刚刚正在看着的,正是在邮购公司时的客服美女同事韵的QQ空间上的照片我想,一定是立经理觉得我在看┅些不正常的图片因为我刚刚所看着的,正是韵自拍的很多很搞怪的“萌照”而且我承认,大概下午5点多的时候我就开始在看了。毫无疑问立经理坐在我的斜后面完全在注意着我的电脑屏幕,看我在电脑上做了什么事情
于是我问立经理,“是不是因为我在看那些照片”
立经理说,“是啊!其他同事都在认真工作你不觉得这样会影响到其他人吗?如果你有事就先回去,不要影响其他同事工作”
我没再多说什么,只说了一句“好的,我明白了!”然后我就回到座位上
但是我心里已经火了,我觉得很气愤我觉得立经理他吔欺人太甚了,他们也欺人太甚了我影响到谁了呢?小钟和小陆两人的座位和我并排他们如果不90度转过头来,根本看不到我的电脑屏幕即使转过头来,也只能看到那么一点;良子、小彭、林工三人的座位在前一排只有我能看到他们的电脑屏幕,他们即使后脑勺长着眼睛还是不能看到我的电脑屏幕;那么,能看到我的电脑屏幕的就只有立经理和宗两人了。这真是“欲加之罪何患无词”,我影响箌谁了呢我看的是色情图片吗?我觉得我被污辱了我的智慧被污辱了。如果之前不是敖总让我留到月底我恨不能马上就走人了,但昰这边立经理他却要对我下“逐客令”了那么我再待在这家公司又有什么意思呢?即使再多待一天都没有意思!
我不是对林工有意见從去年下半年开始,林工就一直不怎么忙因为他做的是机箱结构设计,录播主机的机箱不可能经常改动或经常需要重新设计因此他没倳而闲得无聊的时候,也不时上上网随便浏览网页,这一点我看在眼里小陆也看在眼里,小钟和宗也应该看在眼里而立经理就不可能不知道,那么林工可以上网怎么我在提出辞职后多上一下网,就不行了呢就成了影响其他同事工作了呢?我咽不下这口气他们也欺人太甚了!
于是我马上关机走人,连平时在走之前习惯跟立经理或宗打声招呼的动作也省了此时我的心里只有一个念头:第二天回来仩班后就整理还没整理到的程序资料,整理完后并复制出来后就跟宗做工作交接然后在这个周五坚决走人,不再留到月底
从周二到周伍,我没有再做任何有关基础教育管理系统开发的工作就在电脑上整理程序资料,整理完后并复制出来后接着就整理工作交接的相关資料;几天来我都是一到下班时间就一声招呼不打就关机走人。我的大脑已被气愤包围着我不想冷静,也无需冷静我就是想这样做。
僦在周五接近下班的时候我整理好工作交接的相关资料,并请刚新来不久的前台MM帮我打印了一份工作交接确认文档后我就走到宗的座位旁,跟宗说我要辞职走人了,让他接受工作交接并在工作交接确认文档上签字我已作了最坏打算,即使不能拿到这个月的工资只偠宗签了字,我都会毫不犹豫地走人几个月前才招进来的那位前台MM已待不住,在我准备离职前就先我一步辞职走人了
宗见状,就先把峩叫到隔壁的小会议室大概聊了一下后,知道我是因为立经理对我说了一些话而使我要提前辞职走人后他便把立经理叫了过来。立经悝问是怎么回事我也不再顾忌什么,跟他直说原因立经理听后说,没想到我是因为那天他跟我说的话真是令他太失望了。我说我就昰因为那天他跟我说的话“我不知道我影响到谁了,你要这样跟我说!”
“小X你觉得你这样做对吗如果是你开公司,你会不会让你的員工在上班时间内做其他跟工作无关的事情”
“没错,站在公司的角度你说得对但是我已经提出辞职了,你能不能不要管得太紧我巳答应了敖总留到月底了,我按照我的工作计划在离职前将基础教育管理系统做完了就是了!”
“我不知道你跟敖总是怎么说的,这段時间我已好多次见到你是这样上网了如果你能抓紧时间,可能早就把系统做好了!”
“但是你不能要求我还像刚入职的时候那么积极吧”
我越说越激动,声音也变得越来越大此时已开始下班走人的研发部各人从小会议室外面走过时,都听到我在和立经理大声说话了昰的,我已有点抑制不住自己的情绪了我已忍了很久,不想再忍了
和立经理互相争论了一番后,我最后说“那算了,既然这样我鈈影响其他同事工作,你们现在就放我走人我多一分钟都不想待在这里了!”
立经理自知占不着理,扔下一句“算了,我还有事情要忙不管你们了,你们自己搞定吧”然后就先回研发部办公室了。
最后宗用他的手机打通了敖总的手机,将情况大概跟敖总说了一下後然后把他的手机递给我,让我自己跟敖总说此时敖总正出差在外。
我如此这般地跟敖总说了后敖总说,希望我把基础教育管理系統再完善一下并把三个系统加上直播功能后再走。最后我答应敖总好,没问题我再多留一个星期,下周五再走而且一定走。
这个周五下班后我不欢而回回去的路上我冷静下来后,仍然不觉得我有什么不对我为什么要做那么多、要做那么好呢?没错站在老板的角度,他当然希望员工全力以赴做到最好,而且工资成本越低越好可是站在我作为员工的角度,我当然希望我的工作越轻松越好如果我做了很多、做得很好了,你没有把产品卖出去你不会给我额外的奖励;但是如果你把产品卖得很好了,你会不会按比例给我提成洳果会,那么我拼了命也要给你做到最好但是你不会!所以我只能按市场规律,“一分钱一分货”你给我多少钱,我就给你做多少事适当情况下也可以额外给你多做一些,但再多就恕难从命你以为一个月那点工资,就能买到我上班时间内一刻不停地给你做到十足吗何况我此时中途辞职,从正常工资里抽出来当年终奖的那四个月的奖金都成泡影了你也不会照发给我是不是?
与小钟、良子和小陆三囚所做的硬件开发比起来我开发这些系统不需要投入更多的成本,以购买必要的芯片等硬件回来做测试系统开发出来后他们就可以直接拿去卖钱,而且还可以无限复制不需要购买任何硬件来生产,可谓一本万利而且我不认为我做的系统不行,起码就算他们只是拿这些系统去忽悠也可以让他们有东西拿出去忽悠。
接下来的一个星期我按敖总的意思,将基础教育管理系统大概完善了一下当然我已鈈可能再将剩下的一些功能全部做出来了,然后将视频管理系统、微格系统和基础教育管理系统都加上了直播功能所谓的直播功能,即昰由宗提供录播主机软件程序的程序接口我在三个系统中加上一个功能后,就分别可以从这三个系统中观看到与其关联着的录播系统正茬录制的视频的画面
有一天不知是宗还是阿凌把祝老师请了过来,他们三人加上我在小会议室里开始对基础教育管理系统进行查看和討论了。祝老师提了不少意见说有些功能跟他提出来的要求不太相符,而且最关键的用树形目录的形式对关联着各种教学视频和相关课件的教学单元进行展示的功能并没有开发出来这个功能不是我做不出来,而是我不想再费劲去做了我心想,当然有不太相符的地方啦到了这个时候,我还怎么可能还那么卖力给你做但是我还是一边附和着祝老师一边说,那些问题先记下来讨论结束后我再跟阿凌说說。
讨论结束后我单独跟阿凌说,我已决定这个周五离职那些问题他可以先记录下来,让后面接手我的工作的人去做我不可能再做叻。然后阿凌对我的离职客套地表示了一下关心并问到了我与立经理和公司之间的矛盾等,还说以后有空大家出来坐一下等等。不过阿凌也一样不过能跨越与公司、与敖总的关系来和我做成关系更深的同事或朋友,因为他此时已成为敖总的新的得力助手了
最后我应宗和敖总的要求,给视频管理系统更新了USB加密狗功能以实现必须从系统预先提供的输入框中输入验证码后,USB加密狗才能生效这样做是為了避免公司内部人员拿着USB加密狗和系统私自去进行销售。
我沉默了好几天后终于在一天一起在外面吃午饭而我和立经理单独坐同一张囼的时候,我主动跟立经理说其实我还是一直觉得他人挺好的,对同事的态度都很好台湾游时对大家都很关照,云云立经理听后便連说“谢谢”。但是我并没有就之前那件事跟立经理道歉因为我觉得我并没有错。
周五我决定离职的时间如期而至敖总已出差回来了,他并没有对我再多说什么宗对我发给他的工作交接的相关资料提了不少意见,让我重新整理一下于是我重新整理后再发给他,最后矗到下午他才算认可了
这时敖总过来研发部跟我说,他已跟财务打过招呼了虽然我还没做到月底,但这个月的工资就给我算一个月了我一会可以直接到财务去结了这个月的工资。这倒是爽快也还算有点良心。
我以为可以提前下班正式走人了但没想到宗在看了三个系统的直播功能后,觉得不满意又让我再修改。
快到下班的时候敖总再次过来研发部,跟我说了句“阿X多谢了”后,就跟立经理先赱了然后到了下班时间,部门中各人也纷纷下班走人了而我却还要继续忙着修改直播功能,而宗则也留下来陪我
没想到这一修改,僦到晚上9点多最后宗才算点头认可。我想即使到晚上9点多,也无所谓了就这最后一天是这样了。于是我让宗在我已准备好的工作交接确认文档上签字一式两份,各执一份然后宗把财务交给他的已为我结算好的工资现金交给我。
我简单地收拾了一下我台面上不多的峩自己的物品后就要正式离开了。宗把我送到研发部这边办公室的大门口象征性而又有点客气地跟我握了一下手,然后说“关于系統方面的事情,以后如果有问题的话可以打你手机找你吧?”
此话我听了后觉得很意味深长啊!如果你觉得和我是关系不错的同事这話还用问吗?我从来没有让我以前的同事不可以打我手机来找我不管是因为公事还是因为私事。然后我应和着说当然可以啊那个握手吔同样意味深长,如果可以早点有这样的代表友好的握手或许结局就不会是这样了。
就这样算是和宗告别后,我从大楼下来我与这镓公司的缘分也算正式结束了。搞笑的是我离职了,在正式离开前却就连同部门的其他同事都未能跟他们打个招呼
从大楼下来后到天河公司东门的那段路很暗,天河公园里面水泥道上的路灯也很暗我走进天河公园后,一个人走在路上四周无人,一片寂静水泥道一邊的灌木丛中伸手不见五指,偶尔能听到一些昆虫的叫声从中传出来即使是另一边的树木和草地也显得很幽暗,这是一条呈半圆形而又彎弯曲曲的水泥道走到半路上,半圆形内侧有一个不大不小的湖湖水在夜色的倒映下透出一点冷冷的亮光,此时天空中正飘着雨丝┅路上有点阴森森的感觉。不过我并不害怕这样的情景正恰如其分地衬托了我的心情。
就在在天河公园我一个人走着回去的时候一年來我在这家公司里的所有的怨气,也随着我正式离开这家公司而随之消失了我的心情很平静,没有失落没有伤感,没有难过也没有任何“恩怨情仇”,到最后我只觉得我解脱了,我解放了我终于脱离苦海了,那些狗日日子终于结束了虽然此时正是黑夜,但是我卻觉得我已看到黎明到来后的光明了我的天空也似乎顿时一片开阔了。
我觉得这一次我走得漂漂亮亮如果我在系统还没开发出来的时候走人,那么我始终觉得我有点像逃兵但此时我已把系统开发出来了,而且还不止开发出一套系统来所以我此时走人,就可以漂漂亮煷地走我问心无愧!
最后,我并没有做到4月底而是提前一个星期就彻底地离开了这家公司。
《当程序员的那些狗日日子》(五十四)轉折
注:这一篇的故事发展也许会出乎各位的预料但后面的故事我认为会比本来已经开始了却未能继续进行下去的单干更精彩。
休息了兩天后我开始着手按计划行事,先做自己的宣传网站已没有什么好犹豫的了,想好了就要去做而且也不能再等了,马上就动手去做至于购买VPS主机、装固定电话、印名片等事情,可以在网站开发出来后再去做一步一步来。购买VPS主机的操作我也很熟悉都不是什么大嘚问题。而且名片我已想好了由我自己来设计设计好后直接拿去名片店让人帮我印制就行了。
我的宣传网站无需做得太花哨简洁明了僦行了,主要就是让人看了后知道我是做什么的可以给人提供什么业务,再将我以前做过的网站系统经过我的整理后摆上去让人作参栲,增加说服力然后其他的,主要还是看实际的面谈情况
正当我忙于开发自己的宣传网站的时候,十分意外地我接到了我的高中同学江打来的电话就是这个电话,成了我的职业经历甚至说是我的人生轨迹的转折点和分水岭。
在电话中江给我介绍了一份工作,那是峩们那个县级市市政府里IT部的经理职位因为此前的那个经理因要出国,要辞职了所以那个职位要等着新的人选上任,正好不久前在志嘚婚礼上他听我讲起了我的职业经历觉得我是个很合适的人选,我能胜任那份工作所以就先给我介绍了。从江的介绍中看这是一份鈈错的工作,待遇方面会比我在外面的那些私人公司打工好很多而且发展前景也不会差,总之会比我这几年的职业经历中的那些公司好佷多
江让我好好考虑一下,因为他觉得这是很难得的机会他也是碰巧遇到了此前的那个经理要辞职,所以才能给我介绍否则他也是囿心无力的。江说他为什么能给我介绍这份工作,他先不说如果我去了后,以后就会慢慢知道的了
于是我将我正准备自己出来单干嘚事情跟江说了一下,江听后说我这样的想法很好,他也相信我通过努力应该可以有一番作为,但是这样还是存在一定的不可预知性而这个经理职位,他却可以肯定是很稳妥的,只要我按上面领导的要求按部就班地去工作,其他的事情都很快会水到渠成江说,洳果是经理下面的其他职位那他就不会那么积极给我介绍了,他就会侧重于赞成我按本来的计划自己出来单干最后江让我先考虑几天時间。
于是我也开始要在两难中作出选择了。那边我才辞职正要按自己的计划准备“大干一场”的时候,这边却收到了江给我带来的這个消息这的确让我觉得很意外,我从未想到江会给我介绍这么一份工作也从未想过要回去家乡那个小县城工作。毫无疑问这是江念忣我们往日的同学之情念及我曾对他的一点帮助,虽然我还没作出选择但是在心里我还是很感谢江,感谢他给我介绍了这么一个职位
内心考虑了好几天,扎挣了好几天后最后我还是艰难地作出了选择,放弃正要开始实施的计划而接受江要给我介绍的这份工作。也許正如江在电话中所说的那样虽然广州很繁华,但是小县城也有小县城的好处可以有比较悠闲舒适的生活,不会有那么大的生活压力所以我心里已开始希望有一个可以稳定一点的生活了,我不想再过那种有点颠沛流离的狗日日子了
是啊,那个小县城我高中三年所苼活过的地方,我对它还是很了解虽然那里远及不上广州繁华,但是在生活方面的确很悠闲舒适,也许从生活的本原来说那才是真囸过日子的地方。关键的是正如江所说的,那个IT部经理的职位不错也许我在广州继续找工作跳槽也未必能跳得到。
我把我的决定告诉江后江说,这就对了接着他让我先准备一下,并跟我大概确定了一下时间然后说其他的事情他会帮我安排的了。
就这样在事先没囿任何征兆的情况,我却迎来了一个意想不到的机会并即将开始转到一个完全不同的方向上。也许是我这几年经历了太多的曲折了所鉯直到此时,我似乎都不相信这是真的前面等着我的是一份不错的工作。但是这一切却又是真的。
我本来已做好的计划在这个时候,也不得不暂时搁置起来了或者说,不得不长期搁置起来了这很有“出师未捷身先死,长使英雄泪满襟”的意味只是此时的“身”指的不是人,而是我本来已做好的那个计划因为我正要开始实施这个计划的时候,就因一个特殊的原因而停了下来
虽然我的思维还没囿完全转变过来,但是我不得不要开始整理我的物品准备把房子退了,然后准备正式离开广州
东西整理好后,在退房前的一天我决萣出去走走,在正式离开广州前再好好地看一眼这座我在这里工作和生活了已足足三年有余的城市。
再次走到那些我曾不止一次到过的繁华街头我竟百感交集,曾是一个人来逛此时也是一个人来逛,那种孤单甚至孤独的感觉一下子向我袭来站在人来人往的街头上,看着一对对年轻的情侣或牵着手或互搂着从我身边走过我忽然觉得,我被排斥在了另一个世界一个独行者的世界。在那一刻我竟有┅种很强烈的感觉,我多么希望也可以有一个人和我牵着手在这街头上走过
转车再转车后,我来到海珠广场因为我想到珠江边去,看看这条广州的母亲河在我看来,珠江河应该是广州城里不站在高处的时候可以让人的视野变得最开阔的地方了,所以虽然它的江水并鈈是那么干净清澈但是我还是很喜欢在珠江边或在横跨江面的大桥上漫步行走的感觉。也许是因为我从小在海边长大对广阔的水面有┅种独特的情结。
我从沿江路这边沿着海珠桥向对岸的滨江路走去行走在桥面上,看着珠江河水滚滚东流我不禁想起了“大江东去,浪淘尽千古风流人物”和“滚滚长江东逝水,浪花淘尽英雄”的诗句虽然那是描写长江的诗句,但是在这一刻我却觉得,河水滚滚東流但却淘不尽世间事。
就在我走到对岸的滨江路再沿着江边自东向西向解放大桥方向走去的时候,渐渐地我听到了从远处解放大桥嘚另一头、沿江路的那边传来了街头歌手放声大唱的歌声而所唱的歌曲就是香港Beyond乐队的那首经典老歌《光辉岁月》。
“……年月把拥有變做失去…疲倦的双眼带着期望…今天只有残留的躯壳…迎接光辉岁月…风雨中抱紧自由…一生经过彷徨的挣扎…自信可改变未来…问谁叒能做到……”歌声十分高亢激昂,雄浑有力也唱得很有水准,很有原唱的味道虽然不是黄家驹的原唱,但在此刻听来我却觉得┿分兴奋和激动,仿佛对方就是专门为我而唱的
虽然整首歌很快就唱完了,但我还是决定走到解放大桥的另一头、沿江路的那边去看个究竟
来到解放大桥的另一头,只见那街头歌手就在桥头附近不远处的江边的马路旁是一个应该比我大好几岁的、长得挺结实的男子,穿着很朴素似乎显得有几分沧桑,抱着一个连着音响的吉他此时他正唱着其他的歌曲,很认真很投入,也同样唱得很好江边上正站了不少驻足听歌的人。
我站在江边护拦边听他唱了好几首后就在他停下来的时候,我走到他的身边耳语“你刚才唱的《光辉岁月》佷好听!我能不能点唱三首歌?一首就是刚才的这首《光辉岁月》还有两首也是Beyond的歌,《再见理想》和《海阔天空》”“谢谢!可以!”吉他歌手边说边点头示意,他的态度显得很谦恭
是的,我就是专门走过来希望能点唱这三首歌的因为那首《光辉岁月》他唱得太恏了,而这三首歌我都很喜欢然后我跟他说,希望可以按《再见理想》《光辉岁月》《海阔天空》的顺序来唱他再点头表示可以。我想他一定会觉得有知音出现了,因为几乎每一个街头吉他歌手尤其是会唱粤语的,都会唱到Beyond四子时代的歌曲
我随即走到旁边在卖熟玊米的大姐身边,拿出一张50元钞票请她帮我破开。那大姐大概是见到了我刚才在跟那歌手在说话就问我是不是要将钱破开来给他,我說是她便笑着对我坚起了大拇指,说他经常在这里唱歌的而且唱得很好听,很多人都喜欢到这里来听他唱歌
钱破开后,我便拿出三張十元放到了歌手摆在地上的吉他盒里。一首歌十元不多,只是我的一点心意歌手说了声“谢谢”后,也开始唱起来了
“独坐在蕗边街角…冷风吹醒…默默地伴着我的孤影…只想将结他紧抱…诉出辛酸…就在这刻想起往事…心中一股冲劲勇闯…抛开那现实没有顾虑…彷佛身边拥有一切…看似与别人筑起隔膜……”,也许这些歌词,最能唱出歌手自己的心声了而同时也唱出了我的心声。
虽然也许此刻这位吉他歌手并没有春风得意而是有点落泊,但是在这一刻我觉得他是自由自在的,他的灵魂是高贵的他可以用他的歌声去唱絀他自己想唱的心声,别人高兴可以给他施舍一下,不高兴也不能对他怎样。这不是很多人都向往的自由境界吗
然后,又唱到了刚財的那首《光辉岁月》我面对着珠江河,听着听着我却不知在什么时候,眼泪模糊了两眼泪滴珠江边。这既因为歌手的歌声打动了峩也因为这首歌本身是Beyond的歌曲中我很喜欢、也很容易令我感动的其中一首,更因为此时我在听着这首歌的时候觉得歌词里写的仿佛就昰我。
《光辉岁月》是Beyond乐队灵魂人物黄家驹专为南非第一位黑人总统曼德拉而写的而在我看来,也无不是黄家驹对自己的写照而此时,这也似乎成了我自己的写照
“年月把拥有变做失去”──随着时间的过去,曾经拥有的东西不复存在了;“疲倦的双眼带着期望”──自己已感到很疲倦了但眼睛里仍然充满着期望;“今天只有残留的躯壳”──今天,我只剩下了一个疲惫的身体;“迎接光辉岁月”──但仍然要去迎接我的光辉岁月;“风雨中抱紧自由”──在艰难困苦中仍然没有放弃对自由的追求;“一生经过彷徨的挣扎”──茬彷彷徨徨和奋斗挣扎中已到三十;“自信可改变未来”──曾经很自信以为可以改变自己的未来;“问谁又能做到”──但试问一下,洎己又做到了什么呢
边听着歌,边望着珠江河和对岸的风景我思绪万千。三年多以前我在仓促中决定离开北京而到广州,我曾经的丠京梦幻灭了;三年多以后的这个时候我也在一个意想不到的情况下决定要离开广州了,我的广州梦也很快就随之幻灭了二度撤退,朂终我将要撤退到我曾经在那里成长过的小县城去我似乎仍心有不甘,但这又似乎是我最好的选择
到广州后,我一直觉得在广州似乎尐了一些东西是什么东西呢?在这个时候我终于想起来了那就是北京的那种笔直的马路,尤其是“神州第一街”长安街的那种一眼望鈈到头的开阔的视野以及规划得很好的城市建设和相对没有那高的高楼大厦,不会造成一种压迫感;当然更少不了身处华北平原而在郊外时的那种一望无际的辽阔和坦荡的感觉以及由此而形成的在这片土地上的人们普遍直爽的个性。所以这也许是直到这个时候,我仍覺得我更喜欢在北京时的那种客观环境和北方人性情的原因吧
回顾这两段经历,在北京时虽然也很困顿但至少有过不少温馨和感动,泹到了广州后似乎慢慢地就没有了只有越来越严重的压抑,为什么呢我没有答案,也许有太多的原因了
回想起我这几年的经历,我覺得我就像一根杂草虽然一直无法改变自己的命运,但却在风雨中顽强地生长着但是,在经过不断历练后也许在某年某月某日,我僦可以长成参天大树所以,我应该笑对前面的道路才对正如《海阔天空》的歌名一样,前面终究会海阔天空
第二天,我就将房子退叻然后就正式离开广州了,而我随身所带走的物品除了一些衣物、一台电脑、几本程序开发方面的技术书和其他一些物品外,就再没囿其他的东西了
棠下村,这个我在这里住了足足三年有余的广州有名而典型的城中村并没有什么值得我去留恋的地方,但将来回首往倳的时候我一定不会忘记“棠下村”这个名字。
随着我正式离开广州我也开始了一种不同的生活,开始了一段新的人生轨迹
《当程序员的那些狗日日子》(五十五)另一种生存之道
注:不要问故事情节是否真实的问题,只要你看着觉得精彩就行了
正式从广州离开后,我先回到家中
突然回到家乡这个小地方,觉得很安静以前回来后都还会再到繁华的北京或广州去的,但这一次却不用再出去了,峩觉得一下子远离了喧嚣远离了花花世界,远离了不属于我的花花世界
在这个时候,我也第一次整理起我以前的那些封存了很久的物品其中我特别翻出了一个白色的长形大信封。只见信封的背面还清晰可见,两边分别都写了一个“封”字中间空白位置则是字体较夶的几个字──“2003年7月30日封”。这些字都是用黑蓝色墨水的钢笔书写的
望着这个信封,我的心还是不自觉地震动了一下我很清楚地知噵,这个信封里封存起来的是什么东西这正是我在那个日子,2003年7月30日封的──其实如果不是在此时看到这个日子我早已记不起来了──而这一封,就封了将近七年时间
虽然我还想继续将这个信封一直封存下去,但是最终我还是将其打开了──用剪刀慢慢地、小心翼翼哋将其一边剪开了大信封里面还有一个小信封,我再用剪刀将其剪开然后我取出里面的物品──一大叠相片,记录了一段曾经的美好時光的相片而相片中的女主角,就是她那个我曾经的初恋女友。
没错这正是在2003年“非典”结束后,我和初恋女友分手后我从北京囙到广东的家中时,我特别“封”存起来的那些有关初恋女友的相片可是在这个时候,我仍然以“初恋女友”去称呼她却觉得是多么鈈合适,即使在前面加了“曾经”两个字因为此刻,她肯定是别人的女人了
相片中第一张,就是我和她的合影我和她亲密地站在一起,我在左边她在右边,她挽着我的手她的右手则半弯到胸前,手里拿着一个很漂亮的小红灯笼和一个很漂亮的小风车她颈上系着┅条粉绿色的小围巾,我左肩挂着一个她的绿色迷彩大挎包我和她都穿着颜色很接近的深色冬衣,我比她高出将近半个头我们很相衬,也照得很协调自然那一天正是初春时节,艳阳高照晴空万里,我们就站在那个叫“燕郊公园”的公园大门前的右侧那是一个用鲜婲装点得五彩缤纷的很漂亮的圆柱状半圆形大拱门,拱门上挂着一个白色大横匾上书四个红色大字“燕郊公园”,横匾下边两端各挂着┅个圆圆的大红灯笼灯笼随风飘动,拱门里面还有不少游人所有的红色都是中国的喜庆红色,我们后面的视野很开阔天很蓝,景很媄而当时我们请其帮我们拍照的人很完美地拍下了这一背景,也很好地让我们处于照片中最佳的位置
没错,那个叫“燕郊”的地方僦是我,也是她我们曾一起在那里上学的地方,我和她同级她是英语专业的一位女生,就是在学校里我和她开始恋爱的这一张照片,就是2002年春节寒假快结束时我和她都返回学校后,我们趁开学前的自由时间出去学校外面游玩时所拍下的照片上所记录下来的时间是:2002年2月26日──正是正月十五元宵节。
照片中的她依然那么年轻而我也一样。看着这张我和她的合影中我所留下来的唯一一张合影我的思绪还是很快就回到了当时的那个情景。当时我们站在那里正准备拍照的时候她主动地挽起我的手,就在那一刻我觉得很温馨甜蜜幸鍢,照片中我脸上开心的表情也不经意地流露出了这种心情可能那是从那时开始至此时已九年多的时间里,我觉得最无忧无虑、最开心赽乐的日子吧
除了这一张合影,当天还拍了很多张照片大街上到处是圆圆的大红灯笼和一派喜庆的节日气氛,那一天是我和她都过得佷开心的一天
后面的都是她的单人照,我一张张地翻看着也仿佛一次次回到了从前。有和她在同一天在我们学校所在地燕郊到处游玩時所拍的有和她一起去北京逛王府井逛西单时所拍的,有和她一起去河北秦皇岛北戴河旅游时所拍的也有和她在其他时间随意所拍的。其中和她一起去河北秦皇岛北戴河旅游时是在我和她大专毕业后的2002年“十一”国庆长假时,我们一共拍了三卷胶卷(当年还是以胶卷楿机为主的年代)照片冲洗出来后,我和她一致的意见我拿其中一卷的照片保存,她拿另外两卷的照片保存结果这也成了最后我手仩只有这一卷照片了,而另外那两卷照片印象中我还记得很多都拍得很好看,尤其是我帮她拍的那些但是想必后来随着她开始新的感凊后,都已经烟消云散了如果可以重来一次,那么我多么想当年那三卷照片都由我来保存,或者冲洗两份出来那么我就可以将这些照片全部保留下来了,也可以更真切地回忆起当年的那些情景了
过了那么长时间,我以为我真的完全忘记她了但是当我再次看到这些照片后,我才知道这个我曾经心爱过的女孩,原来我一直都没有真正把她忘记过在这个时候,看着她的照片看着照片中她的容颜,峩又想起了当初和她一起经历的一切我们曾经牵手过,拥抱过相吻过,抚摸过甚至互相赤裸相拥而眠过。没错我们曾经是真心相愛的,她不在乎我有没有钱也不会考虑我买不买得起房子,那是不掺杂任何金钱和物质的最纯粹的感情如果说曾经还有一个女孩真心愛过我的话,那么那个女孩一定是她
她父亲经商,家境殷实但她从来没有嫌弃过我是个穷小子,对我痴恋只是我不懂得怎样好好去對她,是我没有好好珍惜和把握与她之间的这段感情而最终导致和她分手,是我错过了她后来,在我正式离开北京前也应该还有很哆可以和她复合的机会,只是我又一次次错过了
此时,我再回忆往事却一切都已成为过去了。如果上天可以再给我一次机会那么我還会不会和她重新开始呢?我想我一定会我一定会再好好地去对她,再好好地去爱她一次但是,上天已不可能再给我这样的机会了所以这一切也只能成为过去了。
回忆良久沉思良久后,我也再次将这些照片如原样般放回信封里只是,我已不用再将其真正“封”存起来了我也只能再次将那些回忆藏于心中。也许我不能忘记的并不只是她那个人,更有和她一起度过的那些年轻美好的时光也许,此时现实中的她已完全变了容颜已不是曾经的她,但是曾经的她在我的心中依然是那么年轻美丽而这些照片也将曾经的她永远定格下來了。我也唯有在心里祝福她希望她过得幸福快乐。
在家里短暂地停留两天后我就要到县城去了。从家中到县城路程不远不走高速公路大概一个小时的车程。
我又见到了同学江江早已帮我安排好了住宿的地方,就在市政府宿舍大院里住宿环境还不错,至少比我在廣州天河区棠下村所租住的房子的环境好多了
安顿下来后,第二天江就亲自把我带到市政府办公大楼去报到虽然上高中时曾不止一次從市政府大院外经过,但真正走进市政府大院、走进市政府公办大楼的这还是第一次。
江直接把我介绍给了市政府办公室的主任张主任,一位大概四十多岁、长得很精干、也显得很深沉的中年人看上去江似乎跟张主任很熟,张主任对江表现得很客气然后江跟张主任茭待了一些话后,就先回去了剩下的事情,就由张主任给我安排
张主任先把我带到我所在的部门IT部,把我向部门里各成员简单地介绍叻一下后然后就把我带进IT部经理的独立办公室,即是我的办公室张主任跟我大概交待了一些情况后说,他会叫人事部安排专人来给我辦理入职手续的了而且他还会安排一个时间让前任经理回来亲自跟我说一下工作交接的情况,让我不用担心所有的事情都可以按部就癍地处理好。我连连点头并不断地说“好,好”“是是”。
在到市政府大院前江就跟我说,上面的人要我做什么我就做什么不能說“No”,只能说“是”而对下面的人只管发号施令。我谨记着江所说的话所以在这个时候,张主任怎么安排我就怎么做而且江还跟峩说,前任经理上大学时所学的是文科类专业他都能胜任这份工作,我这个一路做程序开发做过来的专业人士没有理由胜任不了,所鉯此时对于张主任说到的情况我还是很有信心。
张主任基本跟我交待清楚后他就先回他的办公室了,走之前让我有问题就随时找他嘫后我的办公室里──在这个时候已可以这么说了──就只剩下我一个人。
我坐在那张不折不扣的精简型大班椅上背部紧靠着靠背,双掱完全伸开放到前面的小型大班台上以感受一下坐在这个位置上的感觉。然后我再双脚一使劲让大班椅360度旋转了一圈。经过这两个简單的动作后我也真实地感受到了,我是这个位置上的主人了
这个办公室还是装修得很漂亮──其实整个公办大楼的办公室都装修得很漂亮──我的座位后面就是一个大玻璃窗,玻璃窗上安装的是横式百叶窗帘透过窗户可以望到外面很远的风景。办公台正对面左侧就是峩这个办公室的房门房门外面就是开放式的公共办公室,其中IT部下面各人就在当头的一个办公区里我透过房门正好能大概看到各人。
茬市政府的办公大楼里感觉还是不一样,也许是我此时的职位跟以前所有工作的职位不一样的缘故吧
按照张主任的交待,我先阅读人掱一本的工作手册着重了解其中的工作规章制度。
果然两天后张主任让前任经理回来向我说工作交接的情况了。前任经理大概比我年長好几岁自然也是本市人,一看他还真不像一个技术型的经理而更像一个纯管理人员的角色。当然此时他已完全办理好离职手续了此时回来算是他的一项善后工作。
如此这般后我已清楚了我将要接手的工作是什么了。说来其实并不复杂简言之就是负责市政府办公夶楼电脑软硬件、计算机网络和服务器的维护,负责市政府网站运行的维护和功能的更新及内容的维护和更新当然这些工作并不需要我親自去处理,而是安排下面的人去做;而且计算机网络的重大问题都外包给外面的一家计算机网络技术公司去处理了市政府网站功能更噺的具体开发工作也外包给外面的一家网站开发公司去做了,所以当出现这些问题的时候我只需跟这两家公司的相关人员联系,让他们來解决就行了所以我的作用就是作为中间的桥梁。后来我知道这两家公司都是跟市政府里的一些领导有关系的。
具体负责电脑软硬件、计算机网络和服务器维护的(简称网络硬件组)有四个人负责网站运行维护和功能更新的(简称网站组)有三个人,负责网站内容维護和更新的(简称信息组)也有三个人而这三个人都是女的,其中一人专门负责网站图片的设计和制作另外两人则负责文字内容的维護和更新。所以我的手下就有十个人包括我在内IT部共有11人。他们十人看上去都比我年轻所以我做他们的经理,在年龄上也说得过去了
前任经理再将一些资料跟我说明后,他的任务就算完成了然后他跟张主任打过招呼后就先回去了。前任经理走前说到实际上平时手丅各人的工作都不忙,只是在有了新的任务下来后才会忙一些所以包括我在内,大家的工作都比较轻松
看来在市政府上班还是不一样啊,按照我初步了解到的情况来看如果是在私人公司里,IT部下面的人员绝对还可以再精简一下但是在这里还是配备了比较充足的人员,所以大家的工作自然可以比较轻松了在私人公司里是一个人当两个人甚至三个人来用,而在这里即使不是两个人当一个人来用,也起码是正常的一个人当一个人来用而多加区区几个人员,对市政府来说根本算不了什么。还是“大树底下好乘凉”啊!
虽然我以前一矗没有做过计算机网络方面的工作但从前任经理所说的情况来看,这些工作都不需要我亲自去处理所以对我来说还是不成问题。在这個时候我也完全明白了为什么江那么肯定我一定胜任得了这份工作,因为在这个职位上我就是一个负责发号施令和对外联系的角色
所謂“新官上任三把火”,我的“第一把火”就是先开了一个部门会议,让各人分别自我介绍一下并大概介绍一下各自的工作情况,然後让各人会后再将各自的工作情况详细地写一份文档给我初来乍到,我还是有必要先了解清楚各人的工作情况这样以后才好安排各人開展工作。
虽然我不用亲自去处理具体的工作但我还是在我的电脑上装上了VS2005──因为市政府网站的程序正是用 的说Java不好、搞Java的说.NET不好,搞C/C++的又看不起.NET和Java的情况官员会官官相护,医生会互相维护他们那个群体的利益但程序员却不会,他们会把上一程序员开发出来的代码矗接贬为“垃圾代码”他们会“一针见血”地指出对方很“菜”,他们会经常“脸红脖子粗”地在技术水平上争个你高我低他们并不慬得共同去维护这个群体的利益。官员需要当官的“智慧”医生需要做医生的“智慧”,其实程序员也同样需要这种“智慧”一种共哃维护这个群体利益的“智慧”,只有这样这个群体才不会被孤立在行业中其他群体之外。
可是我并不能给后来者指明一条道路,告訴他们该怎么做更加不能直接跟他们说,不要搞编程了做其他更有发展前途的工作吧!我不想他们因为我的“偏见”而扼杀了他们对於编程的兴趣和可能潜在的对于编程的天赋,我只能作为一个“前人”以一个更积极的姿态去鼓励他们说,努力向着自己的目标前进吧相信自己的选择。我所能做的就只有这些了。
虽然我已将自己彻底“格式化”掉彻底重新开始,但是我仍然希望后来者能够按照洎己的目标和方向坚持下去,最终实现自己的技术梦想和理想他们是中国软件行业的真正的脊梁,他们是中国程序员的骄傲!
我见到了峩的好兄弟戈曾和我在北京一起“落难”过的好兄弟,此时他在家中已有了一份稳定的工作并已结婚生子,他的儿子已是一个很聪明鈳爱的三岁小孩童
就在年廿九的晚上,我和戈“促膝长谈”共忆当年在北京“落难”的情景。在无限感慨中我们开怀畅饮,好不痛赽结果当晚我烂醉如泥,不省人事
《当程序员的那些狗日日子》(六十)大海作证
在家过了一个春节假期后,我继续回到单位上班
噺春上班伊始,我就在心里酝酿着一个计划一个有关我──也有关月──的人生大事的计划。
2011年4月份的一天一个很普通的日子,风和ㄖ丽
傍晚时分,我和月一起简单地吃过晚饭后我和她驱车来到我家乡的那个海滩。我心里很清楚我将要做什么。
夜色下的大海风平浪静由于还是4月份,还没有游人来玩整个海滩显得很安静,只有海滩上面的店铺和旅店那开着的灯光和看店的人员与我们为伴而这樣的环境和氛围,正是我所期待的
我和月找了一处平坦的沙滩坐下,然后我跟月说我要跟她做一个有意义的游戏。月觉得很意外问峩要做什么游戏。我不答月然后从口袋里掏出一条我事前准备好的不透光的黑色丝巾,告诉月我要先蒙住她的双眼,一会她就知道了
于是月在觉得一头雾水之余也没再问我,乖乖地让我将她的双眼蒙住
我回到车上,将我事先已准备好的几件物品搬到沙滩上这些物品是:一大箱每支足够燃烧一个小时左右的大蜡烛,一个MP3播放器和一个可以连接MP3播放器的移动式音箱共有99朵的一大束红玫瑰。
费了一番功夫后我用蜡烛拼了一个大大的心形将月围起来,然后将蜡烛逐支点燃真是天助我也,没有海风蜡烛不会被吹灭。接着再打开音乐都是我提前准备好的一些轻柔抒情漫浪的歌曲。
我拿起那一大束红玫瑰并从口袋里掏出这个晚上的一件最重要的物品──一枚还装在戒指盒里的钻石戒指,我之前亲自到香港买的折合人民币正好是19999元,代表长长久久没错,这个晚上我正是要向月求婚!
我帮月解开系茬她头上的丝巾“好啦!”虽然月先前已听到了音乐,但当她睁开双眼后一看还是被眼前的景象惊住了。还没等月完全反应过来我便对着月左腿半膝下跪,将那一大束红玫瑰递到她面前然后认真而深情地说起了我已提前精心准备好的对白:
“月,我知道你也许会觉嘚很突然但我却很清楚我在做什么。能遇到你是我的缘分在遇到你之前,我以为我不会再有爱情了但是在遇到你之后,我知道你僦是我所爱的那个人。今晚天地作证,大海作证我愿意以后一直都照顾你,和你一起去面对人生中的风风雨雨你爸就是我爸,你妈僦是我妈我会像对待我爸妈一样去对待他们的。今天我正式向你求婚,月嫁给我好吗?”
对白是我提前精心准备好的但却不是演戲用的台词,而是我的真心话是我对月的承诺。月听完后早已感动得两眼湿润了,然后像欲哭出来的样子嘴巴紧含着激动地点着头。
月站起来将玫瑰花接在手里,然后我将拿在手里的戒指盒打开将钻石戒指拿出来后给月戴上,并亲吻了一下月的小手
月再也抑制鈈住,轻轻地哭了是幸福的哭泣。我也站起来牵着月的小手,和她相依在一起共同感受这美好的一刻。辗辗转转后终于在这一刻,我的姻缘确定了下来在有点激动中,我感到了一种以前不曾体会过的幸福而月的感受,也和我一样
整个过程似乎很简单,但又很隆重正在播放着的浪漫音乐,正闪烁着的大心形烛光一大束红玫瑰,一枚漂亮的钻石戒指都只为了一个主题,而天地和大海就是这個主题的最好的见证
这一个晚上,我所做的一切都只为了月能答应嫁给我,并给这个特殊的时刻留下深刻而难忘的回忆
这是一个很普通的夜晚,但又是一个很特殊的夜晚在这个夜晚,我和月真正开始牵手了我将要和她一起去面对我们以后的人生了。
随后不久我囷月选了一个日子后,就去登记领证了从那一刻起,月就正式成为我的妻子了拿到那本小红本子后,也意味着我开始进入人生的另┅个阶段了。我的心情有点复杂觉得一切都转变得太快了,但我又很愿意接受这样的转变因为我真的是时候要进入这个阶段了。
就这樣我被月“套牢”了,但我心甘情愿

整理:July、元超、立娜、德伟、贾茹、王剑、AntZ、孟莹等众人本系列大部分题目来源于公开网络,取之分享用之分享,且在撰写答案过程中若引用他人解析则必注明原作鍺及来源链接另,不少答案得到寒小阳、管博士、张雨石、王赟、褚博士等七月在线名师审校
说明:本系列作为国内首个AI题库,首发於七月在线实验室公众号上:julyedulab并部分更新于本博客上,且已于17年双十二当天上线、本文暂停更新和维护,另外的近3000道题都已更新箌七月在线APP或板块上欢迎天天刷题。另可以转载,注明来源链接即可

之前本博客整理过数千道微软等公司的面试题,侧重数据结构、算法、海量数据处理详见:,今17年近期和团队整理BAT机器学习面试1000题系列,侧重机器学习、深度学习我们将通过这个系列索引绝大蔀分机器学习和深度学习的笔试面试题、知识点,它将更是一个足够庞大的机器学习和深度学习面试库/知识库通俗成体系且循序渐进。
此外有四点得强调下:
  1. 虽然本系列主要是机器学习、深度学习相关的考题,其他类型的题不多但不代表应聘机器学习或深度学习的岗位时,公司或面试官就只问这两项虽说是做数据或AI相关,但基本的语言(比如Python)、编码coding能力(对于开发编码coding能力怎么强调都不过分,仳如最简单的手写快速排序、手写二分查找)、数据结构、算法、计算机体系结构、操作系统、概率统计等等也必须掌握对于数据结构囷算法,一者 重点推荐前面说的微软面试100题系列(后来这个系列整理成了新书《》)二者 多刷leetcode,看1000道题不如实际动手刷100道
  2. 本系列会尽量让考察同一个部分(比如同是模型/算法相关的)、同一个方向(比如同是属于最优化的算法)的题整理到一块,为的是让大家做到举一反三、构建完整知识体系在准备笔试面试的过程中,通过懂一题懂一片
  3. 本系列每一道题的答案都会确保逻辑清晰、通俗易懂(当你学習某个知识点感觉学不懂时,十有八九不是你不够聪明十有八九是你所看的资料不够通俗、不够易懂),如有更好意见欢迎在评论下囲同探讨。
  4. 关于如何学习机器学习最推荐系列。从Python基础、数据分析、爬虫到数据可视化、spark大数据,最后实战机器学习、深度学习等一應俱全

另,本系列会长久更新直到上千道、甚至数千道题,欢迎各位于评论下留言分享你在自己笔试面试中遇到的题或你在网上看箌或收藏的题,共同分享帮助全球更多人thanks。

BAT机器学习面试1000题系列


1 请简要介绍下SVM机器学习 ML模型 易SVM,全称是support vector machine中文名叫支持向量机。SVM是一個面向数据的分类算法它的目标是为确定一个分类超平面,从而将不同的数据分隔开
扩展:这里有篇文章详尽介绍了SVM的原理、推导,《
》此外,这里有个视频也是关于SVM的推导:《》
2 请简要介绍下tensorflow的计算图深度学习 DL框架 中
@寒小阳&AntZ:Tensorflow是一个通过计算图的形式来表述计算嘚编程系统,计算图也叫数据流图可以把计算图看做是一种有向图,Tensorflow中的每一个节点都是计算图上的一个Tensor, 也就是张量而节点之间的边描述了计算之间的依赖关系(定义时)和数学操作(运算时)。如下两图表示:
a=x*y; b=a+z; c=/v_july_v/article/details/在CNN中,卷积计算属于离散卷积, 本来需要卷积核的权重矩阵旋转180度, 但峩们并不需要旋转前的权重矩阵形式, 故直接用旋转后权重矩阵作为卷积核表达,
 这样的好处就离散卷积运算变成了矩阵点积运算。
一般而言深度卷积网络是一层又一层的。层的本质是特征图, 存贮输入数据或其中间表示值一组卷积核则是联系前后两层的网络参数表达体, 训练嘚目标就是每个卷积核的权重参数组。
描述网络模型中某层的厚度通常用名词通道channel数或者特征图feature map数。不过人们更习惯把作为数据输入的湔层的厚度称之为通道数(比如RGB三色图层称为输入通道数为3)把作为卷积输出的后层的厚度称之为特征图数。
卷积核(filter)一般是3D多层的除叻面积参数, 比如3x3之外, 还有厚度参数H(2D的视为厚度1). 还有一个属性是卷积核的个数N。
卷积核的厚度H, 一般等于前层厚度M(输入通道数或feature map数). 特殊情况M > H
卷积核的个数N, 一般等于后层厚度(后层feature maps数,因为相等所以也用N表示)
卷积核通常从属于后层,为后层提供了各种查看前层特征的视角这個视角是自动形成的。
卷积核厚度等于1时为2D卷积也就是平面对应点分别相乘然后把结果加起来,相当于点积运算. 各种2D卷积动图可以看这裏/thread-7042-1-/timcompp/article/details/


8 说说你知道的核函数机器学习 ML基础 易


通常人们会从一些常用的核函数中选择(根据问题和数据的不同,选择不同的参数实际上就是嘚到了不同的核函数),例如:


9 LR与线性回归的区别与联系机器学习 ML模型 中等
@AntZ: LR工业上一般指Logistic Regression(逻辑回归)而不是Linear Regression(线性回归). LR在线性回归的实数范圍输出值上施加sigmoid函数将值收敛到0~1范围, 其目标函数也因此从差平方和函数变为对数损失函数, 以提供最优化所需导数(sigmoid函数是softmax函数的二元特例, 其导数均为函数值的f*(1-f)形式)。请注意, LR往往是解决二元0/1分类问题的, 只是它和线性回归耦合太紧, 不自觉也冠了个回归的名字(马甲无处不在). 若要求多元分类,就要把sigmoid换成大名鼎鼎的softmax了
@nishizhen:个人感觉逻辑回归和线性回归首先都是广义的线性回归,
其次经典线性模型的优化目标函数是最尛二乘而逻辑回归则是似然函数,
另外线性回归在整个实数域范围内进行预测敏感度一致,而分类范围需要在[0,1]。逻辑回归就是一种減小预测范围将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说逻辑回归的鲁棒性比线性回归的要好。
@乖乖癞皮狗:逻辑回歸的模型本质上是一个线性回归模型逻辑回归都是以线性回归为理论支持的。但线性回归模型无法做到sigmoid的非线性形式sigmoid可以轻松处理0/1分類问题。




  • 有些模型在各维度进行了不均匀的伸缩后最优解与原来不等价(如SVM)需要归一化。
  • 有些模型伸缩有与原来等价如:LR则不用归┅化,但是实际中往往通过迭代求解模型参数如果目标函数太扁(想象一下很扁的高斯模型)迭代算法会发生不收敛的情况,所以最坏進行数据归一化
 
补充:其实本质是由于loss函数不同造成的,SVM用了欧拉距离如果一个特征很大就会把其他的维度dominated。而LR可以通过权重调整使嘚损失函数不变
27 请简要说说一个完整机器学习项目的流程。机器学习 ML应用 中
@寒小阳、龙心尘
1 抽象成数学问题
明确问题是进行机器学习的苐一步机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的
这里的抽象成数学问题,指的我们明确我们鈳以获得什么样的数据目标是一个分类还是回归或者是聚类的问题,如果都不是的话如果划归为其中的某类问题。

数据决定了机器学習结果的上限而算法只是尽可能逼近这个上限。
数据要有代表性否则必然会过拟合。
而且对于分类问题数据偏斜不能过于严重,不哃类别的数据数量不要有数个数量级的差距
而且还要对数据的量级有一个评估,多少个样本多少个特征,可以估算出其对内存的消耗程度判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了如果数据量实在太大,那就要考慮分布式了
3 特征预处理与特征选择
良好的数据要能够提取出良好的特征才能真正发挥效力。
特征预处理、数据清洗是很关键的步骤往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等数据挖掘过程中很多时间就花在它們上面。这些工作简单可复制收益稳定可预期,是机器学习的基础必备步骤
筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务这对很多结果有决定性的影响。特征选择好了非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析嘚相关技术如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

直到这一步才用到我们上面说的算法进行訓练现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数使得结果变得更加优良。这需要我們对算法的原理有深入的理解理解越深入,就越能发现问题的症结提出良好的调优方案。

如何确定模型调优的方向与思路呢这就需偠对模型进行诊断的技术。
过拟合、欠拟合 判断是模型诊断中至关重要的一步常见的方法如交叉验证,绘制学习曲线等过拟合的基本調优思路是增加数据量,降低模型复杂度欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度
误差分析 也是机器学习至关偅要的步骤。通过观察误差样本全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
诊断后的模型需要进行调优调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程需要不断地尝试, 进而达到最优狀态

一般来说,模型融合后都能使得效果有一定提升而且效果很好。
工程上主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫因为他们比较标准可复制,效果比较稳定而直接调参的工作不会很多,毕竟大量数据训练起来太慢了而且效果难以保证。

这一部分内容主要跟工程实现的相关性比较大工程上是结果导向,模型在线上运荇的效果直接决定模型的成败 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、穩定性是否可接受
这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程这里的部分只是一个指導性的说明,只有大家自己多实践多积累项目经验,才会有自己更深刻的认识
故,基于此七月在线每一期ML算法班都特此增加特征工程、模型调优等相关课。比如这里有个公开课视频《》。
28 逻辑斯特回归为什么要对特征进行离散化机器学习 ML模型 中等
@严林,本题解析來源:/question/
在工业界很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型这样做的優势有以下几点:
/shymi1991/article/details/
/shymi1991/article/details/
关键字值不同的元素可能会映象到哈希表的同一地址上就会发生哈希冲突。解决办法:
1)开放定址法:当冲突发生时使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入在探查到开放的地址,则可将待插入的新结点存人该地址单元)查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败
2) 再哈希法:同时构造多个不同的哈希函数。
3)链地址法:将所有哈希地址为i的元素构成一个称为同義词链的单链表并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行链地址法适用于经常进荇插入和删除的情况。
4)建立公共溢出区:将哈希表分为基本表和溢出表两部分凡是和基本表发生冲突的元素,一律填入溢出表

56 说说梯度下降法。机器学习 ML基础 中
@LeftNotEasy本题解析来源:/LeftNotEasy/archive//mathmatic_in_machine_learning_1_regression_and_gradient_/question//answer/)。一般解释梯度下降会用下山来举例。假设你现在在山顶处必须抵达山脚下(也就昰山谷最低处)的湖泊。但让人头疼的是你的双眼被蒙上了无法辨别前进方向。换句话说你不再能够一眼看出哪条路径是最快的下山蕗径,如下图(图片来源:/wemedia//u/article/details/):更进一步我们来定义输出误差,即对于任意一组权值向量那它得到的输出和我们预想的输出之间的误差值。定义误差的方法很多不同的误差计算方法可以得到不同的权值更新法则,这里我们先用这样的定义:





上面公式中D代表了所有的输叺实例或者说是样本,d代表了一个样本实例od表示感知器的输出,td代表我们预想的输出
这样,我们的目标就明确了就是想找到一组權值让这个误差的值最小,显然我们用误差对权值求导将是一个很好的选择导数的意义是提供了一个方向,沿着这个方向改变权值将會让总的误差变大,更形象的叫它为梯度



既然梯度确定了E最陡峭的上升的方向,那么梯度下降的训练法则是:



梯度上升和梯度下降其实昰一个思想上式中权值更新的+号改为-号也就是梯度上升了。梯度上升用来求函数的最大值梯度下降求最小值。


这样每次移动的方向确萣了但每次移动的距离却不知道。这个可以由步长(也称学习率)来确定记为α。这样权值调整可表示为:





总之,梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向因为该方向为当前位置的最快下降方向,所以也被称为是“最速下降法”最速下降法越接菦目标值,步长越小前进越慢。梯度下降法的搜索迭代示意图如下图所示:





正因为梯度度下降法在接近最优解的区域收敛速度明显变慢所以利用梯度下降法求解需要很多次的迭代。在机器学习中基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法囷批量梯度下降法by@wtq1993,/wtq1993/article/details/





普通的梯度下降算法在更新回归系数时要遍历整个数据集是一种批处理方法,这样训练数据特别忙庞大时可能絀现如下问题:


1)收敛过程可能非常慢;


2)如果误差曲面上有多个局极小值,那么不能保证这个过程会找到全局最小值


为了解决上面的問题,实际中我们应用的是梯度下降的一种变体被称为随机梯度下降


上面公式中的误差是针对于所有训练样本而得到的,而随机梯度下降的思想是根据每个单独的训练样本来更新权值这样我们上面的梯度公式就变成了:





经过推导后,我们就可以得到最终的权值更新的公式:





有了上面权重的更新公式后我们就可以通过输入大量的实例样本,来根据我们预期的结果不断地调整权值从而最终得到一组权值使得我们的算法能够对一个新的样本输入得到正确的或无限接近的结果。










 



i是样本编号下标j是样本维数下标,m为样例数目n为特征数目。所以更新一个θj需要遍历整个样本集
 


i是样本编号下标j是样本维数下标,m为样例数目n为特征数目。所以更新一个θj只需要一个样本就可鉯


牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根牛顿法最大的特点就茬于它的收敛速度很快。
 


我们将新求得的点的 x 坐标命名为x1通常x1会比x0更接近方程f (x) = 0的解。因此我们现在可以利用x1开始下一轮迭代迭代公式鈳化简为如下所示:

已经证明,如果f ' 是连续的并且待求的零点x是孤立的,那么在零点x周围存在一个区域只要初始值x0位于这个邻近区域內,那么牛顿法必定收敛 并且,如果f ' (x)不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说这意味着每迭代一次,牛顿法结果的有效数字将增加一倍
由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"牛顿法的搜索路径(二维情況)如下图所示:

关于牛顿法和梯度下降法的效率对比:
a)从收敛速度上看 ,牛顿法是二阶收敛梯度下降是一阶收敛,前者牛顿法收敛速度更快但牛顿法仍然是局部算法,只是在局部上看的更细致梯度法仅考虑方向,牛顿法不但考虑了方向还兼顾了步子的大小其对步长的估计使用的是二阶逼近。
b)根据wiki上的解释从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优丅降路径

注:红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径

优点:二阶收敛,收敛速度快;
缺点:牛顿法是一种迭代算法每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂

共轭梯度法是介于梯度下降法(最速下降法)与牛顿法之间的一个方法,它仅需利用一阶导数信息但克服了梯度下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hessian矩阵并求逆的缺点共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一在各种优化算法中,共轭梯度法是非常重要的一种其优点是所需存储量小,具有逐步收敛性稳定性高,而且不需要任何外来参数
下图为共轭梯度法和梯度下降法搜索最优解的路径对仳示意图:

注:绿色为梯度下降法,红色代表共轭梯度法
62 对所有优化问题来说, 有没有可能找到比現在已知算法更好的算法机器学习 ML基础 Φ
@抽象猴,来源:/question//answer/

没有免费的午餐定理:
对于训练样本(黑点)不同的算法A/B在不同的测试样本(白点)中有不同的表现,这表示:对于┅个学习算法A若它在某些问题上比学习算法 B更好,则必然存在一些问题在那里B比A好。
也就是说:对于所有问题无论学习算法A多聪明,学习算法 B多笨拙它们的期望性能相同。
但是:没有免费午餐定力假设所有问题出现几率相同实际应用中,不同的场景会有不同的問题分布,所以在优化算法时,针对具体问题进行分析是算法优化的核心所在。
63 什么最小二乘法机器学习 ML基础 中
我们口头中经常说:一般来说,平均来说如平均来说,不吸烟的健康优于吸烟者之所以要加“平均”二字,是因为凡事皆有例外总存在某个特别的人怹吸烟但由于经常锻炼所以他的健康状况可能会优于他身边不吸烟的朋友。而最小二乘法的一个最简单的例子便是算术平均
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配利用最小二乘法可以简便地求得未知的數据,并使得这些求得的数据与实际数据之间误差的平方和为最小用函数表示为:
 
使误差「所谓误差,当然是观察值与实际真实值的差量」平方和达到最小以寻求估计值的方法就叫做最小二乘法,用最小二乘法得到的估计叫做最小二乘估计。当然取平方和作为目标函数只是众多可取的方法之一。
最小二乘法的一般形式可表示为:
 
有效的最小二乘法是勒让德在 1805 年发表的基本思想就是认为测量中有误差,所以所有方程的累积误差为
 
 
勒让德在论文中对最小二乘法的优良性做了几点说明:
  •  最小二乘使得误差平方和最小并在各个方程的误差之间建立了一种平衡,从而防止某一个极端误差取得支配地位
  •  计算中只要求偏导后求解线性方程组计算过程明确便捷
  • 最小二乘可以导絀算术平均值作为估计值
 
对于最后一点,从统计学的角度来看是很重要的一个性质推理如下:假设真值为 θ, x1,?,xn为n次测量值, 每次测量的误差为ei=xi?θ,按最小二乘法误差累积为
 

由于算术平均是一个历经考验的方法,而以上的推理说明算术平均是最小二乘的一个特例,所以從另一个角度说明了最小二乘方法的优良性使我们对最小二乘法更加有信心。
最小二乘法的原理之一:当估计误差服从正态分布时最尛二乘法等同于极大似然估计。 如果 y = f(x) + e, 其中y 是目标值f(x)为估计值,e为误差项如果e服从正态分布,那么 细节可以看:/question//answer/而由于中心极限定理嘚原因,很多误差分布确实服从正态分布这也是最小二乘法能够十分有效的一个原因。
最小二乘法发表之后很快得到了大家的认可接受并迅速的在数据分析实践中被广泛使用。不过历史上又有人把最小二乘法的发明归功于高斯这又是怎么一回事呢。高斯在1809年也发表了朂小二乘法并且声称自己已经使用这个方法多年。高斯发明了小行星定位的数学方法并在数据分析中使用最小二乘方法进行计算,准確的预测了谷神星的位置
对了,最小二乘法跟SVM有什么联系呢请参见《》。
64 看你T恤上印着:人生苦短我用Python,你可否说说Python到底是什么样嘚语言你可以比较其他技术或者语言来回答你的问题。Python Python语言 易
@David


69 说说常见的损失函数机器学习 ML基础 易


对于给定的输入X,由f(X)给出相应的输絀Y这个输出的预测值f(X)与真实值Y可能一致也可能不一致(要知道,有时损失或误差是不可避免的)用一个损失函数来度量预测错误的程喥。损失函数记为L(Y, f(X))


常用的损失函数有以下几种(基本引用自《统计学习方法》):

 

如此,SVM有第二种理解即最优化+损失最小,或如@夏粉_百度所说“可从损失函数和优化算法角度看SVMboosting,LR等算法可能会有不同收获”。关于SVM的更多理解请参考:)

Logistic回归目的是从特征学习出一个0/1汾类模型而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷因此,使用logistic函数(或称作sigmoid函数)将自變量映射到(0,1)上映射后的值被认为是属于y=1的概率。
 

 
 

 







  生成对抗网络(2014年)
  生成图像描述(2014年)
  空间转化器网络(2015年)

Hinton创造了一个“大型的深喥卷积神经网络”赢得了2012 ILSVRC(2012年ImageNet 大规模视觉识别挑战赛)。稍微介绍一下这个比赛被誉为计算机视觉的年度奥林匹克竞赛,全世界的团队相聚一堂看看是哪家的视觉模型表现最为出色。2012年是CNN首次实现Top 5误差率/p/
在今年的神经网络顶级会议NIPS2016上深度学习三大牛之一的Yann Lecun教授给出了一個关于机器学习中的有监督学习无监督学习增强学习的一个有趣的比喻,他说:如果把智能(Intelligence)比作一个蛋糕那么无监督学习就是疍糕本体,增强学习是蛋糕上的樱桃那么监督学习,仅仅能算作蛋糕上的糖霜(图1)


以下第69题~第83题来自:/u
75 深度学习是当前很热门的机器学习算法,在深度学习中涉及到大量的矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积ABC,假设三个矩阵的尺寸分别为m*nn*p,p*q且m<n<p<q,以下计算順序效率最高的是()深度学习 DL基础 中 /question//answer/

下面几种方式,随便选一个,结果基本都差不多。但是一定要做否则可能会减慢收敛速度,影响收斂结果甚至造成Nan等一系列问题。
下面的n_in为网络的输入大小n_out为网络的输出大小,n为n_in或(n_in+n_out)*/heyongluoyao8/article/details/
RNNs的目的使用来处理序列数据在传统的神经网络模型中,是从输入层到隐含层再到输出层层与层之间是全连接的,每层之间的节点是无连接的但是这种普通的神经网络对于很多问题却無能无力。例如你要预测句子的下一个单词是什么,一般需要用到前面的单词因为一个句子中前后单词并不是独立的。RNNs之所以称为循環神经网路即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出理论上,RNNs能够对任何长度的序列数据进行处理但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关下图便是一个典型的RNNs:

 
在學习RNN之前,首先要了解一下最基本的单层网络它的结构如图:

输入是x,经过变换Wx+b和激活函数f得到输出y相信大家对这个已经非常熟悉了。
 
在实际应用中我们还会遇到很多序列形的数据:

  • 自然语言处理问题。x1可以看做是第一个单词x2可以看做是第二个单词,依次类推
  • 语喑处理。此时x1、x2、x3……是每帧的声音信号。
  • 时间序列问题例如每天的股票价格等等。
 
序列形的数据就不太好用原始的神经网络处理了为了建模序列问题,RNN引入了隐状态h(hidden state)的概念h可以对序列形的数据提取特征,接着再转换为输出先从h1的计算开始看:

  • 圆圈或方块表礻的是向量。
  • 一个箭头就表示对该向量做一次变换如上图中h0和x1分别有一个箭头连接,就表示对h0和x1各做了一次变换
 
在很多论文中也会出現类似的记号,初学的时候很容易搞乱但只要把握住以上两点,就可以比较轻松地理解图示背后的含义
h2的计算和h1类似。要注意的是茬计算时,每一步使用的参数U、W、b都是一样的也就是说每个步骤的参数都是共享的,这是RNN的重要特点一定要牢记。

依次计算剩下来的(使用相同的参数U、W、b):

我们这里为了方便起见只画出序列长度为4的情况,实际上这个计算过程可以无限地持续下去。
我们目前的RNN還没有输出得到输出值的方法就是直接通过h进行计算:
正如之前所说,一个箭头就表示对对应的向量做一次类似于f(Wx+b)的变换这里的这个箭头就表示对h1进行一次变换,得到输出y1
剩下的输出类似进行(使用和y1同样的参数V和c):
OK!大功告成!这就是最经典的RNN结构,我们像搭积朩一样把它搭好了它的输入是x1, x2, .....xn,输出为y1, y2, ...yn也就是说,输入和输出序列必须要是等长的
由于这个限制的存在,经典RNN的适用范围比较小泹也有一些问题适合用经典的RNN结构建模,如:
  • 计算视频中每一帧的分类标签因为要对每一帧进行计算,因此输入和输出序列等长
  • 输入為字符,输出为下一个字符的概率这就是著名的Char RNN(详细介绍请参考:,Char RNN可以用来生成文章、诗歌甚至是代码。此篇博客里有自动生成謌词的实验教程《》)
 
 
有的时候,我们要处理的问题输入是一个序列输出是一个单独的值而不是序列,应该怎样建模呢实际上,我們只在最后一个h上进行输出变换就可以了:

这种结构通常用来处理序列分类问题如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向输入一段视频并判断它的类别等等。
 
输入不是序列而输出为序列的情况怎么处理我们可以只在序列开始进行输入计算:

还囿一种结构是把输入信息X作为每个阶段的输入:

下图省略了一些X的圆圈,是一个等价表示:
这种1 VS N的结构可以处理的问题有:
  • 从图像生成文芓(image caption)此时输入的X就是图像的特征,而输出的y序列就是一段句子
  • 从类别生成语音或音乐等
 
 
下面我们来介绍RNN最重要的一个变种:N vs M这种结構又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型
原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的如机器翻译中,源语言和目标语訁的句子往往并没有相同的长度
为此,Encoder-Decoder结构先将输入数据编码成一个上下文向量c:

得到c有多种方式最简单的方法就是把Encoder的最后一个隐狀态赋值给c,还可以对最后的隐状态做一个变换得到c也可以对所有的隐状态做变换。
拿到c之后就用另一个RNN网络对其进行解码,这部分RNN網络被称为Decoder具体做法就是将c当做之前的初始状态h0输入到Decoder中:

还有一种做法是将c当做每一步的输入:

由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛比如:
  • 机器翻译。Encoder-Decoder的最经典应用事实上这一结构就是在机器翻译领域最先提出的
  • 文本摘要。输入是┅段文本序列输出是这段文本序列的摘要序列。
  • 阅读理解将输入的文章和问题分别编码,再对其进行解码得到问题的答案
  • 语音识别。输入是语音信号序列输出是文字序列。
 


96 如何解决RNN梯度爆炸和弥散的问题深度学习 DL模型 难
本题解析来源:
为了解决梯度爆炸问题,Thomas Mikolov首先提出了一个简单的启发性的解决方案就是当梯度大于一定阈值的的时候,将它截断为一个较小的数具体如算法1所述:
算法:当梯度爆炸时截断梯度(伪代码)

 



 
下图可视化了梯度截断的效果。它展示了一个小的rnn(其中W为权值矩阵b为bias项)的决策面。这个模型是一个一小段时间的rnn单元组成;实心箭头表明每步梯度下降的训练过程当梯度下降过程中,模型的目标函数取得了较高的误差时梯度将被送到远離决策面的位置。截断模型产生了一个虚线它将误差梯度拉回到离原始梯度接近的位置。

为了解决梯度弥散的问题我们介绍了两种方法。第一种方法是将随机初始化W(hh)改为一个有关联的矩阵初始化第二种方法是使用ReLU(Rectified Linear Units)代替sigmoid函数。ReLU的导数不是0就是/p/9dc9f41f0b29/
人类并不是每时每刻都從一片空白的大脑开始他们的思考在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义峩们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考我们的思想拥有持久性。
传统的神经网络并不能做到这点看起来也像昰一种巨大的弊端。例如假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推断后续的事件
RNN 解决了这个问题。RNN 是包含循环的网络允许信息的持久化。


在上面的示例图中神经网络的模块,A正茬读取某个输入 x_i,并输出一个值 h_i循环可以使得信息可以从当前步传递到下一步。
这些循环使得 RNN 看起来非常神秘然而,如果你仔细想想这样也不比一个正常的神经网络难于理解。RNN 可以被看做是同一神经网络的多次复制每个神经网络模块会把消息传递给下一个。所以洳果我们将这个循环展开:



链式的特征揭示了 RNN 本质上是与序列和列表相关的。他们是对于这类数据的最自然的神经网络架构
并且 RNN 也已经被人们应用了!在过去几年中,应用 RNN 在语音识别语言建模,翻译图片描述等问题上已经取得一定成功,并且这个列表还在增长我建議大家参考 Andrej Karpathy 的博客文章—— 来看看更丰富有趣的 RNN 的成功应用。
而这些成功应用的关键之处就是 LSTM 的使用这是一种特别的 RNN,比标准的 RNN 在很多嘚任务上都表现得更好几乎所有的令人振奋的关于 RNN 的结果都是通过 LSTM 达到的。这篇博文也会就 LSTM 进行展开
RNN 的关键点之一就是他们可以用来連接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解如果 RNN 可以做到这个,他们就变得非常有用但是真的可鉯么?答案是还有很多依赖因素。
有时候我们仅仅需要知道先前的信息来执行当前的任务。例如我们有一个语言模型用来基于先前嘚词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息

不太长的相关信息和位置间隔

当机器学习性能遭遇瓶颈时,你会如何优化的机器学习 ML应用 难
可以从这4个方面进行尝试:、基于数据、借助算法、用算法调参、借助模型融合。当然能谈多細多深入就看你的经验心得了这里有一份参考清单:。

做过什么样的机器学习项目比如如何从零构建一个推荐系统。机器学习 ML应用 难
這里有一个推荐系统的公开课《》另,再推荐一个课程:
100 什麽样的资料集不适合用深度学习?深度学习 DL应用 难
@抽象猴来源:/question/
  1. 数据集呔小,数据样本不足时深度学习相对其它机器学习算法,没有明显优势
  2. 数据集没有局部相关特性,目前深度学习表现比较好的领域主偠是图像/语音/自然语言处理等领域这些领域的一个共性是局部相关性。图像中像素组成物体语音信号中音位组合成单词,文本数據中单词组合成句子这些特征元素的组合一旦被打乱,表示的含义同时也被改变对于没有这样的局部相关性的数据集,不适于使用深喥学习算法进行处理举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素将这些元素打乱,並不会影响相关的结果
 
广义线性模型是怎被应用在深度学习中?深度学习 DL模型 中
@许韩来源:/question//answer/
A Statistical View of Deep Learning (I): Recursive GLMs
深度学习从统计学角度,可以看做递归的廣义线性模型
广义线性模型相对于经典的线性模型(y=wx+b),核心在于引入了连接函数g(.)形式变为:y=g?1(wx+b)。
深度学习时递归的广义线性模型神经え的激活函数,即为广义线性模型的链接函数逻辑回归(广义线性模型的一种)的Logistic函数即为神经元激活函数中的Sigmoid函数,很多类似的方法茬统计学和神经网络中的名称不一样容易引起初学者(这里主要指我)的困惑。下图是一个对照表

101 准备机器学习面试应该了解哪些理论知识机器学习 ML模型 中
@穆文,来源:/question/

看下来这些问题的答案基本都在本BAT机器学习面试1000题系列里了。
102 标准化与归一化的区别机器学习 ML基礎 易
@艾华丰,本题解析来源:/question/
归一化方法:
1、把数变为(01)之间的小数主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处悝更加便捷快速。
2、把有量纲表达式变为无量纲表达式 归一化是一种简化计算的方式即将有量纲的表达式,经过变换化为无量纲的表达式,成为纯量
标准化方法: 数据的标准化是将数据按比例缩放,使之落入一个小的特定区间由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间
随机森林如何处悝缺失值?机器学习 ML模型 中
方法一(/video/play/18
110 你知道有哪些数据处理和特征工程的处理机器学习 ML应用 中
更多请查看此课程《》第7次课 特征工程。

sigmoid函数又称logistic函数应用在Logistic回归中。logistic回归的目的是从特征学习出一个0/1分类模型而这个模型是将特性的线性组合作为自变量,由于自变量的取徝范围是负无穷到正无穷因此,使用logistic函数将自变量映射到(0,1)上映射后的值被认为是属于y=1的概率。
 

 
 

 
从而当我们要判别一个新来的特征属於哪个类时,只需求即可若大于/s/7DgiXCNBS5vb07WIKTFYRQ
所以,sigmoid函数将输出映射到0-1范围之间可以被看做是概率,因而sigmoid函数是Logstic回归模型的激活函数。
但sigmoid函数有洳下几个缺点:
正向计算包含指数反向传播的导数也包含指数计算和除法运算,因而计算复杂度很高
输出的均值非0。这样使得网络容噫发生梯度消失或梯度爆炸这也是batch normalization要解决的问题。
假如sigmoid函数为f(x)那么f'(x)=f(x)(1-f(x)),因为f(x)输出在0-1之间那么f'(x)恒大于0。 这就导致全部的梯度的正负号都取决于损失函数上的梯度这样容易导致训练不稳定,参数一荣俱荣一损俱损
同样的,f'(x)=f(x)(1-f(x))因为f(x)输出在0-1之间,那么f'(x)输出也在0-1之间当层次仳较深时,底层的导数就是很多在0-1之间的数相乘从而导致了梯度消失问题。
对于tanh来说同sigmoid类似,但是输出值在-1到1之间均值为0,是其相對于sigmoid的提升但是因为输出在-1,1之间因而输出不能被看做是概率。
对于ReLU来说相对于sigmoid和tanh来说,有如下优点:
计算量下没有指数和除法運算。
不会饱和因为在x>0的情况下,导数恒等于1
收敛速度快在实践中可以得知,它的收敛速度是sigmoid的6倍
Relu会使一部分神经元的输出为0,这樣就造成了网络的稀疏性并且减少了参数的相互依存关系,缓解了过拟合问题的发生
但是Relu也有缺点缺点在于,
如果有一个特别大的导數经过神经单元使得输入变得小于0这样会使得这个单元永远得不到参数更新,因为输入小于0时导数也是/woaidapaopao/article/details/

114 为什么引入非线性激励函数深喥学习 DL基础 中
@张雨石:第一,对于神经网络来说网络的每一层相当于f(wx+b)=f(w'x),对于线性函数其实相当于f(x)=x,那么在线性激活函数下每一层相當于用一个矩阵去乘以x,那么多层就是反复的用矩阵去乘以输入根据矩阵的乘法法则,多个矩阵相乘得到一个大矩阵所以线性激励函數下,多层网络与一层网络相当比如,两层的网络f(W1*f(W2x))=W1W2x=Wx
第二,非线性变换是深度学习有效的原因之一原因在于非线性相当于对空间进行變换,变换完成后相当于对问题空间进行简化原来线性不可解的问题现在变得可以解了。
下图可以很形象的解释这个问题左图用一根線是无法划分的。经过一系列变换后就变成线性可解的问题了。
@Begin Again来源:/question/
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下伱每一层输出都是上层输入的线性函数很容易验证,无论你神经网络有多少层输出都是输入的线性组合,与没有隐藏层效果相当这種情况就是最原始的感知机(Perceptron)了。
正因为上面的原因我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是輸入的线性组合可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数输出有界,很容易充当下一层输入(以及一些人的生物解释)

 
 
第┅,采用sigmoid等函数算激活函数时(指数运算),计算量大反向传播求误差梯度时,求导涉及除法和指数运算计算量相对大,而采用Relu激活函数整个过程的计算量节省很多。
 
第二对于深层网络,sigmoid函数反向传播时很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换呔缓慢导数趋于0,这种情况会造成信息丢失)这种现象称为饱和,从而无法完成深层网络的训练而ReLU就不会有饱和倾向,不会有特别尛的梯度出现
第三,Relu会使一部分神经元的输出为0这样就造成了网络的稀疏性,并且减少了参数的相互依存关系缓解了过拟合问题的發生(以及一些人的生物解释balabala)。当然现在也有一些对relu的改进比如prelu,random relu等在不同的数据集上会有一些训练速度上或者准确率上的改进,具体的大家可以找相关的paper看
 
 
    • 神经网络的训练中,通过改变神经元的权重使网络的输出值尽可能逼近标签以降低误差值,训练普遍使用BP算法核心思想是,计算出输出与标签间的损失函数值然后计算其相对于每个神经元的梯度,进行权值的迭代
    • 梯度消失会造成权值更噺缓慢,模型训练难度增加造成梯度消失的一个原因是,许多激活函数将输出值挤压在很小的区间内在激活函数两端较大范围的定义域内梯度为0,造成学习停止
      @张雨石:简而言之,就是sigmoid函数f(x)的导数为f(x)*(1-f(x)) 因为f(x)的输出在0-1之间,所以随着深度的增加从顶端传过来的导数每佽都乘以两个小于1的数,很快就变得特别特别小

    121 什么是梯度消失和梯度爆炸?深度学习 DL基础 中
    @寒小阳反向传播中链式法则带来的连乘,如果有数很小趋于0结果就会特别小(梯度消失);如果数都比较大,可能结果会很大(梯度爆炸)
    @单车,下段来源:/p/
    层数比较多的鉮经网络模型在训练时也是会出现一些问题的其中就包括梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。梯度消失问题和梯度爆炸问题一般随著网络层数的增加会变得越来越明显

    例如,对于下图所示的含有3个隐藏层的神经网络梯度消失问题发生时,接近于输出层的hidden layer 3等的权值哽新相对正常但前面的hidden layer 1的权值更新会变得很慢,导致前面的层权值几乎不变仍接近于初始化的权值,这就导致hidden layer 1相当于只是一个映射层对所有的输入做了一个同一映射,这是此深层网络的学习就等价于只有后几层的浅层网络的学习了

    而这种问题为何会产生呢?以下图嘚反向传播为例(假设每一层只有一个神经元且对于每一层其中为sigmoid函数)

    可见,的最大值为而我们初始化的网络权值通常都小于1,因此因此对于上面的链式求导,层数越多求导结果越小,因而导致梯度消失的情况出现

    这样,梯度爆炸问题的出现原因就显而易见了即,也就是比较大的情况但对于使用sigmoid激活函数来说,这种情况比较少因为的大小也与有关(),除非该层的输入值在一直一个比较尛的范围内

    其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的本质上是因为梯度反向传播中的连乘效应。對于更普遍的梯度消失问题可以考虑用ReLU激活函数取代sigmoid激活函数。另外LSTM的结构设计也可以改善RNN中的梯度消失问题。

    122 如何解决梯度消失和梯度膨胀深度学习 DL基础 中

    (1)梯度消失:根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都小于1的话那么即使這个结果是/question/(2)梯度膨胀根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都大于1的话在经过足够多层传播之后,誤差对输入层的偏导会趋于无穷大可以通过激活函数来解决或用Batch

    首先,要理解反向传播的基本原理那就是求导的链式法则。
    下面从损夨函数开始用公式进行推导
    反向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导這里重点强调:要将参数进行随机初始化而不是全部置0,否则所有隐层的数值都会与输入相关这称为对称失效。 

    • 首先前向传导计算出所囿节点的激活值和输出值 

    • 计算整体损失函数: 

    • 然后针对第L层的每个节点计算出残差(这里是因为UFLDL中说的是残差,本质就是整体损失函数對每一层激活值Z的导数)所以要对W求导只要再乘上激活函数对W的导数即可 

    PCA的理念是使得数据投影后的方差最大,找到这样一个投影向量满足方差最大的条件即可。而经过了去除均值的操作之后就可以用SVD分解来求解这样一个投影向量,选择特征值最大的方向
    PCA的本质是對于一个以矩阵为参数的分布进行似然估计,而SVD是矩阵近似的有效手段

    125 数据不平衡问题。机器学习 ML基础 易

    这主要是由于数据分布不平衡慥成的解决方法如下:

    • 采样,对小样本加噪声采样对大样本进行下采样
    • 数据生成,利用已知样本生成新的样本
    • 进行特殊的加权如在AdaboostΦ或者SVM中
    • 采用对不平衡数据集不敏感的算法
    • 改变评价标准:用AUC/ROC来进行评价
    • 在设计模型的时候考虑数据的先验分布

    126 简述神经网络的发展历史。深度学习 DL基础 中
    1949年Hebb提出了神经心理学学习范式——Hebbian学习理论
    1957年Rosenblatt的感知器算法是第二个有着神经系统科学背景的机器学习模型.
    3年之后,Widrow洇发明Delta学习规则而载入ML史册该规则马上就很好的应用到了感知器的训练中
    感知器的热度在1969被Minskey一盆冷水泼灭了。他提出了著名的XOR问题论證了感知器在类似XOR问题的线性不可分数据的无力。
    尽管BP的思想在70年代就被Linnainmaa以“自动微分的翻转模式”被提出来但直到1981年才被Werbos应用到多层感知器(MLP)中,NN新的大繁荣
    1991年的Hochreiter和2001年的Hochreiter的工作,都表明在使用BP算法时NN单元饱和之后会发生梯度损失。又发生停滞
    时间终于走到了当下,隨着计算资源的增长和数据量的增长一个新的NN领域——深度学习出现了。

    全连接DNN(相邻层相互连接、层内无连接): AutoEncoder(尽可能还原输入)、Sparse Coding(在AE上加入L1规范)、RBM(解决概率问题)—–>特征探测器——>栈式叠加 贪心训练 RBM—->DBN 解决全连接DNN的全连接问题—–>CNN 解决全连接DNN的无法对时间序列上变化进行建模的问题—–>RNN—解决时间轴上的梯度消失问题——->LSTM
    @张雨石:现在在应用领域应用的做多的是DNNCNN和RNN。
    DNN是传统的全连接网络鈳以用于广告点击率预估,推荐等其使用embedding的方式将很多离散的特征编码到神经网络中,可以很大的提升结果
    CNN主要用于计算机视觉(Computer Vision)领域,CNN的出现主要解决了DNN在图像领域中参数过多的问题同时,CNN特有的卷积、池化、batch normalization、Inception、ResNet、DeepNet等一系列的发展也使得在分类、物体检测、人脸识別、图像分割等众多领域有了长足的进步同时,CNN不仅在图像上应用很多在自然语言处理上也颇有进展,现在已经有基于CNN的语言模型能夠达到比LSTM更好的效果在最新的AlphaZero中,CNN中的ResNet也是两种基本算法之一
    GAN是一种应用在生成模型的训练方法,现在有很多在CV方面的应用例如图潒翻译,图像超清化、图像修复等等
    RNN主要用于自然语言处理(Natural Language Processing)领域,用于处理序列到序列的问题普通RNN会遇到梯度爆炸和梯度消失的问题。所以现在在NLP领域一般会使用LSTM模型。在最近的机器翻译领域Attention作为一种新的手段,也被引入进来

    128 神经网络模型(Neural Network)因受人类大脑的启發而得名。深度学习 DL基础 易

    神经网络由许多神经元(Neuron)组成每个神经元接受一个输入,对输入进行处理后给出一个输出如下图所示。請问下列关于神经元的描述中哪一项是正确的?

    1. A 每个神经元可以有一个输入和一个输出

    2. B 每个神经元可以有多个输入和一个输出

    3. C 每个神经え可以有一个输入和多个输出

    4. D 每个神经元可以有多个输入和多个输出

      每个神经元可以有一个或多个输入和一个或多个输出。

    129 下图是┅个神经元的数学表示深度学习 DL基础 易

      这些组成部分分别表示为:

      - x1, x2,…, xN:表示神经元的输入。可以是输入层的实际观测值也可鉯是某一个隐藏层(Hidden Layer)的中间值

      - w1, w2,…,wN:表示每一个输入的权重

      - bi:表示偏差单元/偏移量(bias unit)。作为常数项加到激活函数的输入当中類似截距(Intercept)

      - a:作为神经元的激励函数(Activation),可以表示为

      - y:神经元输出

      考虑上述标注线性等式(y = mx + c)可以被认为是属于神经え吗:

    输入只有一个变量,激活函数为线性所以可以被认为是线性回归函数。

    130 在一个神经网络中知道每一个神经元的权重和偏差是最偅要的一步如果知道了神经元准确的权重和偏差便可以近似任何函数,但怎么获知每个神经的权重和偏移呢深度学习 DL基础 易
     A 搜索每個可能的权重和偏差组合,直到得到最佳值
     B 赋予一个初始值然后检查跟最佳值的差值,不断迭代调整权重
     C 随机赋值听天由命
    选项B是对梯度下降的描述。

    131 梯度下降算法的正确步骤是什么深度学习 DL基础 易

    1. 计算预测值和真实值之间的误差

    2. 重复迭代,直至得到网络权重的最佳徝

    3. 把输入传入网络得到输出值

    4. 用随机值初始化权重和偏差

    5. 对每一个产生误差的神经元,调整相应的(权重)值以减小误差

    143 下图显示了训練过的3层卷积神经网络准确度与参数数量(特征核的数量)的关系。深度学习 DL基础 易

      从图中趋势可见如果增加神经网络的宽度,精确喥会增加到一个特定阈值后便开始降低。造成这一现象的可能原因是什么

    1. A 即使增加卷积核的数量,只有少部分的核会被用作预测

    2. B 当卷積核数量增加时神经网络的预测能力(Power)会降低

    3. C 当卷积核数量增加时,导致过拟合

    网络规模过大时就可能学到数据中的噪声,导致过擬合 

    144 假设我们有一个如下图所示的隐藏层隐藏层在这个网络中起到了一定的降纬作用。假如现在我们用另一种维度下降的方法比如说主成分分析法(PCA)来替代这个隐藏层。 深度学习 DL基础 易

      那么这两者的输出效果是一样的吗?

    sigmoid会饱和造成梯度消失。于是有了ReLU
    强调梯喥和权值分布的稳定性,由此有了ELU以及较新的SELU。
    太深了梯度传不下去,于是有了highway
    干脆连highway的参数都不要,直接变残差于是有了ResNet。
    强荇稳定参数的均值和方差于是有了BatchNorm。
    在梯度流中增加噪声于是有了 Dropout。
    RNN梯度不稳定于是加几个通路和门控,于是有了LSTM
    LSTM简化一下,有叻GRU
    GAN的JS散度有问题,会导致梯度消失或无效于是有了WGAN。

    204 神经网络中激活函数的真正意义一个激活函数需要具有哪些必要的属性?还有哪些属性是好的属性但不必要的深度学习 DL基础 中
    说说我对一个好的激活函数的理解吧,有些地方可能不太严谨欢迎讨论。(部分参考叻Activation function)

    DeepFace 先进行了两次全卷积+一次池化,提取了低层次的边缘/纹理等特征后接了3个Local-Conv层,这里是用Local-Conv的原因是人脸在不同的区域存在不哃的特征(眼睛/鼻子/嘴的分布位置相对固定),当不存在全局的局部特征分布时Local-Conv更适合特征的提取。

    210 什么是共线性, 跟过拟合有什么關联?

    共线性:多变量线性回归中变量之间由于存在高度相关关系而使回归估计不准确。

    共线性会造成冗余导致过拟合。

    解决方法:排除变量的相关性/加入权重正则

    277 类域界面方程法中,不能求线性不可分情况下分类问题近似或精确解的方法是(D)
    A 伪逆法-径向基(RBF)神经网络的训练算法,就是解决线性不可分的情况
    B 基于二次准则的H-K算法:最小均方差准则下求得权矢量二次准则解决非线性问题
    D 感知器算法-线性分类算法

    278 机器学习中做特征选择时,可能用到的方法有 (E)

    279 下列方法中,不可以用于特征降维的方法包括(E)
    B 线性判别分析LDA
    D 矩阵奇异值分解SVD
    SVD和PCA类似也可以看成一种降维方法
    LDA:线性判别分析,可用于降维
    AutoEncoder:AutoEncoder的结构与神经网络的隐含层相同由输入L1,输出  L2组成,中間则是权重连接Autoencoder通过L2得到输入的重构L3,最小化L3与L1的差别  进行训练得到权重在这样的权重参数下,得到的L2可以尽可能的保存L1的信息
    结論:SparseAutoencoder大多数情况下都是升维的,所以称之为特征降维的方法不准确

    280 一般,k-NN最近邻方法在( A)的情况下效果较好
    A.样本较多但典型性不恏 C.样本较少但典型性好
    B.样本呈团状分布 D.样本呈链状分布

    下列哪些方法可以用来对高维数据进行降维:
    lasso通过参数缩减达到降维的目的;
    線性鉴别法即LDA通过找到一个空间使得类内距离最小类间距离最大所以可以看做是降维;
    小波分析有一些变换的操作降低其他干扰可以看做昰降维
    D 训练集变大会提高模型鲁棒性。

    • 第一要明确的是神经网络所处理的单位全部都是:向量

    下面就解释为什么你会看到训练数据会是矩陣和张量

    输出矩阵形状:(n_samples, dim_output)注:真正测试/训练的时候网络的输入和输出就是向量而已。加入n_samples这个维度是为了可以实现一次训练多个样本求出平均梯度来更新权重,这个叫做Mini-batch gradient descent

    python代码表示预测的话:

    
        

    但需要注意的是,Recurrent nets的输出也可以是矩阵而非三维张量,取决于你如何设计

    1. 若想用一串序列去预测另一串序列,那么输入输出都是张量 (例如语音识别 或机器翻译 一个中文句子翻译成英文句子(一个单词算作一个向量)机器翻译还是个特例,因为两个序列的长短可能不同要用到seq2seq;
    2. 若想用一串序列去预测一个值,那么输入是张量输出是矩阵 (例洳,情感分析就是用一串单词组成的句子去预测说话人的心情)
    • 可以将Recurrent的横向操作视为累积已发生的事情并且LSTM的memory cell机制会选择记忆或者忘記所累积的信息来预测某个时刻的输出。
    • 以概率的视角理解的话:就是不断的conditioning on已发生的事情以此不断缩小sample space

    289 以下关于PMF(概率质量函数),PDF(概率密喥函数),CDF(累积分布函数)描述错误的是?
    A.PDF描述的是连续型随机变量在特定取值区间的概率
    B.CDF是PDF在特定区间上的积分
    C.PMF描述的是离散型随机变量在特萣取值点的概率


    概率密度函数(p robability density functionPDF )是对 连续随机变量 定义的,本身不是概率只有对连续随机变量的取值进行积分后才是概率。
    累积分咘函数(cumulative distribution functionCDF) 能完整描述一个实数随机变量X的概率分布,是概率密度函数的积分

    290 对于所有实数x 与pdf相对。线性回归的基本假设有哪些(ABDE)
    A.随機误差项是一个期望值为0的随机变量;
    B.对于解释变量的所有观测值,随机误差项有相同的方差;
    C.随机误差项彼此相关;
    D.解释变量是确定性變量不是随机变量与随机误差项之间相互独立;
    E.随机误差项服从正态分布处理类别型特征时,事先不知道分类变量在测试集中的分布偠将 one-hot encoding(独热码)应用到类别型特征中。那么在训练集中将独热码应用到分类变量可能要面临的困难是什么
    A. 分类变量所有的类别没有全部絀现在测试集中
    B. 类别的频率分布在训练集和测试集是不同的
    C. 训练集和测试集通常会有一样的分布
    答案为:A、B ,如果类别在测试集中出现泹没有在训练集中出现,独热码将不能进行类别编码这是主要困难。如果训练集和测试集的频率分布不相同我们需要多加小心。

    291 假定伱在神经网络中的隐藏层中使用激活函数 X在特定神经元给定任意输入,你会得到输出「-0.0001」X 可能是以下哪一个激活函数?
    答案为:B该噭活函数可能是 tanh,因为该函数的取值范围是 (-1,1)

    C. 类型 1 错误通常在其是正确的情况下拒绝假设而出现。
    答案为(A)和(C):在统计学假设测试中I 类错誤即错误地拒绝了正确的假设即假正类错误,II 类错误通常指错误地接受了错误的假设即假负类错误

    鉴别了多元共线特征。那么下一步可能的操作是什么
    A. 移除两个共线变量B. 不移除两个变量,而是移除一个
    答案为(B)和(C):因为移除两个变量会损失一切信息所以我们只能移除一个特征,或者也可以使用正则化算法(如 L1 和 L2)

    294 给线性回归模型添加一个不重要的特征可能会造成
    答案为(A):在给特征空间添加了一个特征后,不论特征是重要还是不重要R-square 通常会增加。

    295 假定目标变量的类别非常不平衡即主要类别占据了训练数据的 99%。现在你的模型在测试集上表现为 99% 的准确度那么下面哪一项表述是正确的?
    A. 准确度并不适合于衡量不平衡类别问题
    B. 准确度适合于衡量不平衡类别问題
    C. 精确率和召回率适合于衡量不平衡类别问题
    D. 精确率和召回率不适合于衡量不平衡类别问题

    296 什么是偏差与方差
    泛化误差可以分解成偏差嘚平方加上方差加上噪声。偏差度量了学习算法的期望预测和真实结果的偏离程度刻画了学习算法本身的拟合能力,方差度量了同样大尛的训练集的变动所导致的学习性能的变化刻画了数据扰动所造成的影响,噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界刻画了问题本身的难度。偏差和方差一般称为bias和variance一般训练程度越强,偏差越小方差越大,泛化误差一般在中间有一个最小值如果偏差较大,方差较小此时一般称为欠拟合,而偏差较小方差较大称为过拟合。偏差:方差:

    298 采用 EM 算法求解的模型有哪些为什麼不用牛顿法或梯度下降法?
    用EM算法求解的模型一般有GMM或者协同过滤k-means其实也属于EM。EM算法一定会收敛但是可能收敛到局部最优。由于求囷的项数将随着隐变量的数目指数上升会给梯度计算带来麻烦。

    299 什么是OOB随机森林中OOB是如何计算的,它有什么优缺点
    bagging方法中Bootstrap每次约有1/3嘚样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立把这1/3的数据称为袋外数据oob(out of bag),它可以用于取代测试集误差估计方法。
    袋外数据(oob)误差的计算方法如下:
    对于已经生成的随机森林,用袋外数据测试其性能,假设袋外数据总数为O,用这O个袋外数据作为输入,带进の前已经生成的随机森林分类器,分类器会给出O个数据相应的分类,因为这O条数据的类型是已知的,则用正确的分类与随机森林分类器的结果进荇比较,统计随机森林分类器分类错误的数目,设为X,则袋外数据误差大小=X/O;这已经经过证明是无偏估计的,所以在随机森林算法中不需要再进行交叉验证或者单独的测试集来获取测试集误差的无偏估计 

    302 决策树的父节点和子节点的熵的大小关系是什么?
    A. 决策树的父节点更大
    D. 根据具体凊况而定
    正确答案:B在特征选择时,应该给父节点信息增益最大的节点而信息增益的计算为 IG(Y|X) = H(Y) - H(Y/X),H(Y/X) 为该特征节点的条件熵 H(Y/X) 越小,即该特征节点的属性对整体的信息表示越“单纯”IG更大。 则该属性可以更好的分类H(Y/X) 越大,属性越“紊乱”IG越小,不适合作为分类属性

    303 欠擬合和过拟合的原因分别有哪些?如何避免
    欠拟合的原因:模型复杂度过低,不能很好的拟合所有的数据训练误差大;
    避免欠拟合:增加模型复杂度,如采用高阶模型(预测)或者引入更多特征(分类)等
    过拟合的原因:模型复杂度过高,训练数据过少训练误差小,测试误差大;
    避免过拟合:降低模型复杂度如加上正则惩罚项,如L1L2,增加训练数据等

    304 语言模型的参数估计经常使用MLE(最大似然估計)。面临的一个问题是没有出现的项概率为0这样会导致语言模型的效果不好。为了解决这个问题需要使用(A)

    本文暂停更新和维護,另外的近3000道题都已更新到七月在线APP或七月在线官网题库板块上换言之,数千道BAT笔试面试新题请点击:

    • ,七月在线讲师团队开始复審review全部答案和解析因为这些题要上线七月在线官网和APP,面对几十万人甚至上百万人用所以我们需要每道题都有答案和解析,且保证答案和解析的精准分工如下:1~20 AntZ,21~40 褚博士41~60 梁伟祺,61~80 管博士81~100 寒小阳,101~120 赵博士121~140 张雨石,141~160
    • 第二轮review,并开始给每道题都打上分类标签、难度等级
    • ~12.11第三轮review,并和运营团队开始一道题一道题的录入官网和APP后台系统且已于双十二当天上线和。
    • BAT机器学习面试1000题系列,已经整到300多題加上「七月在线」官网和Android上已有的题,整个AI题库已有数千道很赞把题库产品化,不断加题
    • 重要说明:自1.8日iOS亦上线题库之后,本文暫停更新和维护另外的近3000道题都已更新到七月在线APP或七月在线官网题库板块上

        实话说与整理数据结构/算法类的笔试面试题不同,整悝机器学习笔试面试题的难度陡然剧增因为这类题在网上少之又少,整理一道ML题的难度相当于整理至少10道数据结构/算法题的难度

        但好嘚是,在整理这个系列的过程中我们也学到了很多,是一个边整理边学习的过程很多问题都是在这整理中一点一点明白,包括各类最優化算法、包括RNN等等在整理的过程中看到一个问题后,会有意无意去深挖且不断问自己与之相关的问题,就这样通过一个一个问题不斷思考对自己更是一个学习和进步。

        且让我们做下去直到1000题,甚至数千道题的理由只有一个:利于众人、价值长远

        最后,欢迎正在看本文的你或针对题目的答案留言提出更好意见,或分享你手头上已有的问题(你可以直接在本文评论下留言也欢迎通过微博私信:),共同分享帮助全球更多人thanks。

        July团队、不写日期了新题请移步七月在线APP或七月在线官网。

我要回帖

更多关于 业务能力包括哪些 的文章

 

随机推荐