徒步的时候,接到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,让我甚至有了去读博的想法,但细想来,不太现实,那么问题来了,我是否要重新思考下自己的位置呢?找个更加适合自己的岗位呢?
那么问题来了,为什么是惨痛的胜利呢?惨痛,固然惨痛,大意失了荆州,但让我认清了现状,及时发现问题,未尝不是一场胜利呢?
心态不错,失利就是鞭策自己,看清自己。我现在学东西,都不是为了和别人比,就是看明天的我会不会比今天的我更好。
另外很同意,一件事情要作的深作的透,融会贯通的前提条件就是你看到了事物的本质。推荐你看一下学习的艺术这本书。
第一题,需要对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
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 ….]他俩就是近似词,免去了排序过程
赞赞
很好,我之后也要写写总结什么的了呵呵。哥加油!
赞Liked by 1 person