纪念惨痛的“胜利”

徒步的时候,接到Nicolas的电话,说,对不起,你被拒了。

哦。心有小灼。

于是乎,静下心写写总结,想想自己为什么被拒吧。

某公司的面试

面试的是一家科技公司,此后便称之为某公司。虽没有百分之百把握的势在必得,却没想到会倒在第一轮技术面。因为听说这公司对算法很注重,自以为熟读算法的我觉得有了引以为傲的资本。

先说说面试题吧:

  • Java如何用gabrage collection进行内存优化的。

额。。。不会。。。(虽然日常工作已经离不开java,但gabrage collection只在教科书上看过。。。因为工作不需要,就鲜有用之)

  • 你在google搜索栏搜索blabla,描述一下从你按下回车键到你收到结果是怎么样的过程。

我把page rank算法概述了一边。

问,你对网络传输的工作流程不熟悉么?为什么只有算法?

答,忘却了(毕业后,也就把这些基础知识还给了老师。。。)

  • Coding题(也是我唯一一道给以给我加分的题):

输入:字符串组(每个字符串不限制长度,有可能是一个单词,也可能是一段很长的文章)

输出:找出所有的“相似词”(相似词的定义:通过对字母之间调整位置能得到另一个字符串)

我给的解法:1,遍历所有字符串,算ascii值,把所有字符串插入HashMap里,键值是字符串的AsciI值。

2,对于HashMap里,所有有conflit的字符串取出,建立另一个HashSet,set内容是个数组每个字符串所有字母的counter,如果一个字符串的counter已经在hashset里了,就证明是相似词。

时间复杂度O(n)。算法给出,也成功的编出来了。面试官也很赞同,没有更优解。唯一的不足是在现场编的时候,很多字符串函数写法忘却了,因为平时编程过于依赖IDE。

本以为会因为我第三题的出色表现会让我过这一关,其实不然。

那么问题来了,为什么会落到今天的地步呢?

  • 在学校学的知识很多都已经还给了老师,由于工作不用就不觉得弃之可惜,面试时候方恨少。
  • 工作中过于不求甚解,很多东西比如netty,RxJava很多新的技术在我们工作中是用到了的,但经常因为工作忙,没有时间去深入理解,觉得会用就行。但面试的时候,面试官会越问越深。
  • 安于现状。计算机技术发展太快,很多与自己相关的技术知识,需要工作之余潜心修炼。正如乔帮主说的,keep hungry, be foolish.

关于Murex

    Murex的工作环境是不错的,尤其对于一个dev来说,很纯粹的编程环境,学习氛围很浓,加之很多大牛,薪金待遇都很好,在业内算是数一数二的了。

那么问题来了,为什么想走?

  • 我专业data mining,也是兴趣之所在,而如今越来越是一个纯粹的程序员,离大数据,机器学习越来越远,工作中鲜有算法可言,我的优势不在编程,而是在数学和算法,在现在工作中,我无法发挥自己的优势,并且再不走,就真成纯粹的程序员,于是萌发了跳投之心。
  • 来我们组的时候,组里的人都在巴黎,因为公司决策问题,组里的成员都转移到黎巴嫩了,工作重心也就转移到了黎巴嫩,加上平时木讷,不喜得交流,在N+2的眼里,多少有点碍眼。
  • 好大喜功,好高骛远。这是自幼母亲对我的评价,觉得我做事总不踏实,这也延续到了我的工作中,对于每个任务,我总是急于完成,而不是完成到最好。记得柴静博客里的一段话:

“这一个月在英国采访,有几句话印象很深。

第一句是问到剑桥大学怎么会有全世界最多的诺贝尔奖获得者,校长一笑,说,“最近这位得奖者,他的领域从来没人看好,我们等了他十四年——质量需要耐心和时间。”。

第二句是在BBC采访时,说为什么你们拍《冰冻星球》肯花四年的时间?老总谈到一个细节,当年做记者时,他第一时间得到一架客机失事的消息,他没有发,一直到核实了航班号,人员伤亡情况后,才公布。那时已不是一手消息了,但他觉得“如果你只抢着告诉人们,在哪个地方有一架飞机毁了,全世界有很多人的亲人都在飞机上,这样的消息除了引起人们的担忧和恐慌,几乎没有意义,要告诉人们负责任的信息。”

这是我所欠缺的耐心,需要戒去的浮躁。

What’s next?

既然这次失利就做好下次战斗的准备。

  • 工作里遇见不懂得或者新的技术,深究到底,耐心一点。
  • 制定学习计划,一次啃一根骨头。严格执行早起学习计划。
  • Be open, be proactive, be responsible, be patient
  • 参加coding game等比赛,练习白板写代码的实力。线下多写点程序,练习新学习的技术。
  • Keep hungry, be foolish
  • 重新定位,虽然我还是要坚持宁缺毋滥的原则,找工作只投自己喜欢的offer,之前一段投的多是Data scientist的岗位,但多数公司要求phd,让我甚至有了去读博的想法,但细想来,不太现实,那么问题来了,我是否要重新思考下自己的位置呢?找个更加适合自己的岗位呢?

那么问题来了,为什么是惨痛的胜利呢?惨痛,固然惨痛,大意失了荆州,但让我认清了现状,及时发现问题,未尝不是一场胜利呢?

纪念惨痛的“胜利””的一个响应

  1. 心态不错,失利就是鞭策自己,看清自己。我现在学东西,都不是为了和别人比,就是看明天的我会不会比今天的我更好。

    另外很同意,一件事情要作的深作的透,融会贯通的前提条件就是你看到了事物的本质。推荐你看一下学习的艺术这本书。

    第一题,需要对GC的基本工作原理有了解,比如对象间的树状结构,什么是GC Root,接下来就是不同的GC算法,但基本的数据结构是一样的。

    第二题,我觉得他是想考你Web的架构,浏览器如何和服务器如何一起工作,算法是服务器里很底层的东西。

    第三题,说实在的你不应该那么容易就放弃,七层结构你说一说也是很好的。

    至于coding题,counter那一部分没理解,回头给我讲讲。我的解法是,对每一个单词都进行排序,然后用拍过序的单词当键值,往multi map里插,结果就是所有的相似词。也是o(n)

    比如我有五个词,abc, acb, bac, edf, fde, 排过序之后我有
    abc -> abc
    acb -> abc
    bac -> abc
    edf -> def
    fde -> def
    然后反过来看,放进multi map里之后
    abc -> (abc, acb, bac)
    def -> (def, fde)

    谢谢分享!

    Liked by 1 person

    1. liruochen1204

      counter就是对每个词所有字母进行计数,建一个255大小的数组放入set里,比如,假设a是0,所有字符是通过ascii算对应编码,那么abccd就是[1,1,2,1,0 0 0 0 0 ….],abcdc的count也是[1,1,2,1,0 0 0 0 0 ….]他俩就是近似词,免去了排序过程

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

w

Connecting to %s