帐前卒专栏

code, software architect, articles and novels.
代码,软件架构,博客和小说

这是在杭州的最后一天。这篇文章应该很久之前就写的。嗯。现在补上。

这天其实也没有什么好说的。最主要的是就赶火车。以及如何赶火车。

为了买味千拉面,差点就没有赶上火车。

晚上,有LP做的丰盛的晚餐等着。

嗯。也就这么多

其实也不是在写面试经历和过程,其实最注重的是吃。因为要解决温饱问题。

另外面试也没有什么特殊的技巧,我摸索出来的最重要的技巧就是:靠运气。

请点赞~

pd为了装修他的巢,今天一早就回京了。

觅食

今天的蛋黄花卷不错。挺好吃的。因为去的太早,也没有等到肉包子。不管什么加上腐乳都不错。这几天没有吃别的。还是一直在吃腐乳。

面试

今天面试的人比较少。大部分是二面。拒绝和pending的人数较多。不管是过的,被拒的,还是pending的。你们都应该在内心里觉得自己是最优秀的才对。底气和
自信是非常重要的。题目的对错也不是那么的重要,重要的是你通过面试学到了什么。

不管面试者学到了什么。我反正学到了一些新的算法,一些新的出题模式。听了一些面试者讲述的项目,又为自己增加了点学术气息。这里学术派的居多,很少见代码写的漂亮的
,能写出注意各种细节的工程代码的人更加少之又少。

骑车夜行

在杭州骑车真不错。除了有些路段自行车道太窄,加上某些车主素质太低,骑得很不容易外,一切都还好。江边的风吹得呼呼的。。我现在脸上还有些残留着一些风。不过九溪一
般般,还是不如江面好看。今天骑行顺便还看了雷锋夕照。就是在二桥上不能停留,所以也没有拍下什么照片。

宵夜

今天还要继续吃吗?好吧,先看一下菜单。。。

再不觅食就要饿死星人

这种人要吃三顿饭。pd终于吃上了肉包,吃了三个,变身成PD. 如果吃包子能长点脑子,大概能变身成PHD.

面试

今天面的是求树中两个不同节点之间的距离。n多人没有写出来。或者写的太慢,或者写的太复杂,或者写的太丑。然后是环形dp,同样有一大波坑在此处。发现单纯设计题好
难刷人。以后是不是应该设计一个更好用设计题刷人呢?

另外面试之前一定要吃口香糖。谢谢。

pd每次给我薄荷糖,都给我1.5颗。 我严重怀疑,那半颗他自己嗑了。

今天拒掉和pending了很多人。每天面试其实是按照笔试成绩是从上而下排的,看来笔试成绩有相当好的过滤效果。

晚宴

今天晚上是犒劳餐。去新白鹿吃的。走路大概10分钟左右。大家都说吃饱了。我也吃饱了,吃的很饱。但不知道为什么还是想回寝室吃个蛋,然后再去吃个宵夜。pd好说歹说
才一起去吃夜宵。然后pd越吃越饿,越饿越吃。终于吃成了PD.

夜里pd搬运出一堆网易箱子。pd自嘲自己像干IT的…干IT的请揍他。不谢

夜里我烧上一壶开水,看着pd的脸。发现毁容前和毁容后竟然一个样。脸上还少了很多褶子。开水效果真赞~

有道面试

觅食

如同《饥荒》,觅食是最大的问题,解决了之后,才能解决更大的问题。顺便说,今天又没有吃上肉包,pd又捡回一条命。生怕像昨天一样,又没有午餐,所以早晨我偷偷藏了
一个鸡蛋带出食堂。

面试

今天考察的是什么,貌似是树,dp 以及优先队列。发现第一天用过一次的题目,第二天就不能继续用了。链表排序,K逆转啥的都不能出了。也可能是太简单导致的。大家的
学习能力都很强。真心赞。你们能把这点学习能力用到平时,我觉得也不会像现在这样答题如此困难。另外面了singleston,今天仍然没有人没写对。我觉得…杭
州的小朋友都没有好好的复习。c++和java的各种基本知识都没有怎么复习呀。

想想就应该那自己当年的水平和这群家伙做判断。强的就过,弱的就拒。这样大概就不会迷茫了。

今天吐槽都懒得吐了。总有面试者对问题进行重新诠释,设计题,总是在问我:是想这样设计?你是希望有这个东西?眼神里充满要一个确定答案的渴望。为什么非要面试官对该
设计中存在的问题回答是否。自己不应该处理一下这两种情况给面试官听一下,以显示自己思考全面吗?

就先这样结束吧。

在这样面下去,面试题都不知道该出什么了。

今天懒得黑PM了。准备睡觉了。。。

有道面试

觅食

觅食是非常重要的活动,每天都必不可少。除了觅食,还有睡觉。当然对于某些人吃屎拉翔也是非常重要的。

面试

一顿吃后,为了皮带不勒死我,我少吃了一点。pd因为早上没有肉包,也捡回了一条命。我和小伙伴们怀着忐忑不安又愉悦的心情一起走进了面试厅。准备面试。要想先拉屎,
首先得有纸。于是Hr给我们找了一叠白纸。这纸有点粗糙,擦起来很不顺手的样子。另外没有纸篓,擦完的纸都不知道丢哪里。我和pd一起找着纸篓。嗯还是没有找到。

上午3面,下午5面。累得跟pd似的。也没有啥休息时间。因为中午有人答题较慢,结果中饭都没有赶上。。。慌忙之下,猛摇售货机,吐出两个蛋。匆匆吃下填了肚子。

面试完毕,总结出来:1,笔试完之后,大家就开心的玩了,也不想一下笔试题都有什么问题。2,总是在问,这个思路对不对呀,那个解法是否正确。你们就没有点自己的主见
吗? 听到这种问法,真想直接干掉。二面的面试官小伙伴放心,这样的同学,我在一面已经干掉多个了。
另外我已经成功拒掉多个mm,请叫我mm杀手。面了这么多mm,感觉还是第一个mm思路清晰。我准备从拒掉的名单中再捞回来丢给二面。真不行就转PM岗吧。做研发的都
认为做PM是莫大的侮辱,其实PM挺好的。在脑子里转一下,也不管是真转了还是假转了,反正需求就改完了。你研发用脑子转一下,不用动手代码就改完了试试?

中午都没有补一觉。下午我比面试者都困。真想出一道30分钟做不出来的题,我先睡一下,再让面试者叫醒我。

下午hr叫来外卖,抽空还补吃了一下。感觉筷子的质量还是有问题。嗯,说话总是抓不住重点。

那天面了啥题呢?删除排序二叉树结点,深度优先遍历,优先队列,没有一个面试者答出拓扑排序让我很失望。Dij最短路,还有那啥…忘记了。反正题太多了,自己
都记不得了。

晚上

实在困得不行。先睡了两个小时。也不知道为什么,面试的时候电话这么多。晚上了吧,就没有人给我打电话了。pd摇着陌陌就上床了。不好,他戴上眼罩了。嗯,我又得准备
开水了。
blog 总是晚了一天…加工改造越来越没有时间了…这就是南派三叔写的:快没有时间了。嗯,其实真的快没有时间写blog了。大概是这个意思。

改有道笔试题

觅食

感觉一天除了吃也就只是吃了。清晨洗漱完毕,继续开始吃。Pd抱怨今天食堂没有肉包。不过鸡蛋可以拿多个,这个很人性化。今天的腐乳多加了几块,我又手贱的拿了一块吃
。吃完回窝,开始改昨天小朋友们做的笔试题。参加笔试的人真多。

改卷

首先先扫了一眼笔试题。然后我就开启了吐槽模式。这是谁出的试题,不让笔试者舒服不说,也不让改卷者舒服。编程题第一题这么基础。编程第二题如此变态。所以总结起来就
是第一题太基础懒得做,第二题太麻烦不愿做,第三题太难不会做。第二题这么多判断条件,又是x1,x2,改卷看的眼睛都花了。看到有些笔试者三道大题都没有写。笔试者
果然很鄙视的样子。嗯,我也很鄙视。让我再次笔试,估计也空三道。

看完试题,看正确答案,发现两个答案有问题…出题需严谨,首先要学语文。自从进入了挑刺模式后,发现试题都是稀烂的。下次应该给笔试者一张白纸,然后要求笔
试者写出至今见过的一段最诡异最优雅的算法代码。然后改卷者依据心情给分。

吐槽吐出东西太多,然后就饿了。又准备觅食。每天三食方省吾身。看着试卷,才改了4份。还有50多份。饥饿的心情瞬间陡增,和pd楼下觅食去了。

午餐

纳尼,这不是午餐,这是昨晚剩菜。应该叫晚剩午热餐。看着这菜,心中千万问候语在奔腾。看着食堂的广告,还是很平静的吃完了午餐。食堂开始运营至今已经n年了,善始者
实繁,克终者盖寡。耳边响起阴魂不散的声音…我用词永远都是那么恰当。嗯!

再改卷

或许吃饱喝足,又回到了桌前改卷。卷子上的答案总是那么喜人。做完研发的试卷,pd又让我看了一下PM的试卷。第一题抄题目都没有抄全,明明是 5, ( ),
39, 60, 105,好不好。结果漏掉了5. 我说那我给答案30, 你也不能算我错呀!

好了,下午pd开启了吐槽模式。说明明试卷上是 “脉脉”, 为啥都答“陌陌” ? 为啥还有在答题的时候,有鄙视者纠正这题出错了,就应该是“陌陌”。杭州的同学们
,你们是多么喜欢用陌陌。虽然pd用陌陌能摇出租车,也不代表你们答陌陌也给分呀。陌陌不是万能的,离开了陌陌,我不知道你们是不是万万不能。下次出题,应该出一题“
写出你有多了解陌陌,并留下陌陌号”。

然后就是估算题。竟然发现有两个笔试者用电饭煲估算家庭数的小朋友。一男一女,嗯,你们要不是情侣的话,可以介绍你们认识。牵线搭桥,红娘月老。

睡觉

自从养成了习惯,改卷也改了一半,困意起。于是去床上躺着了。睡了半个小时。

继续改卷

已经无力吐槽了。吐太多了。杭州的小朋友都不好好看书的吗?出的题目多基础呀…算了,反正我也不好好看书。

继续觅食

pd去了新白鹿餐厅,吃回来比猪还大上一圈。不错,能卖好价钱。我去了食堂,继续吃腐乳。

再次改卷

晚上回来很困,通过率明显高了些。pd说应该是我烦了。我觉得应该是我困了。改完试卷,又烧上一壶热水,开始睡觉了。晚上被鼾声吵醒的时候,热水应该就烧好了。

行程

早上坐动车历经K个小时到达杭州。下动车买杭州地铁票,票价5元到滨和路,C口出。pd用陌陌摇到了出租车。天公作美,下起了大雨。上车走起,没几分钟就到了NETE
ASE公司楼下,然后看到大家都鱼贯似的从公司出来觅食。Pd带领我们进入公寓,六层check in.
六层阿姨询问完各种事情之后,就发给了我们钥匙。钥匙很厚重,但是看起来也不防盗。pd说不用钥匙开门也就是分分钟就搞定的事。

觅食

check in 之后。放下行李和包裹。因为pd不用钥匙分分钟开门的缘故,大家都带上了贵重物品出发觅食去了。网易的食堂在工作日是17:00-19:00。我们
赶得正是时候,再晚几分钟就得去网易楼下的水池捞鱼吃了。第一次食堂饭菜给我的感觉很新鲜,感觉很高大上。有自己的食堂感觉真好。竟然还有免费的汤喝。另外还有腐乳,
嗯,还剩下最后一块,我四下看着没有人动,我就把它捞走了。吃饱喝足之后,继续回宿舍休息。

继续吃

洗漱完毕,百无聊赖。玩着饥荒游戏。pd问我是什么游戏。我说这就是饿了就吃,困了就睡的一款游戏。说着说着肚子就饿了。听说公司还有夜宵,然后就俩人一起下去继续觅
食。到了食堂发现没有开饭。工作日夜宵时间:23:00-01:00, 节假日: 23:30-00:30。这明明是工作日的夜宵,难道因为第二天休假,过了工作时间
就变成了节假日夜宵了?一边回住处一边抱怨厨师们太偷懒。在宿舍又呆了半个小时,继续出来找吃的。这次终于有夜宵了。一看…竟然是晚上没有吃完的菜。嗯,夜里继续
吃。宵夜宵夜,早上没吃完的,拿到夜里继续吃。不过烤出来的面包不错。我想如果今天晚上夜宵还没有吃完,会不会第二天继续吃。果真,我猜中了答案:第二天继续吃。直到
吃完才上新菜。

睡了吧

再次吃饱喝足。可能因为晚上吃了最后一块腐乳。肚子受不了,蹲厕所。嗯,下次还是抢新鲜的吃。pd老人家了,睡去了。睡得鼾声打的我戴耳塞都没管用。后来我烧了壶热水
倒在了他头上,瞬间就没有鼾声了,这一招真管用。嗯,这一夜睡得真好。

明天继续写今天改笔试题的事情吧。

嗯,再多说一句:pd还活着,大家不用担心。

想想从之前面试有道,到现在代表有道面试其他人。也是算是成长。

我面了许多人,只拒掉了一个。还有一个缓过。后来想想把缓过的也放行了。拒人让lead那边拒吧。

我个人放行通过的四大原则:

1. 算法ok

2. 写过代码

3. 反应灵活,思维缜密

4. 见多识广

当然这是针对二面。对于一面还是较为心狠手辣…通过率较低。

如果一道算法题不会做,一般我会再加问几道,真心不想拒人。然后工程题,嗯,从这次面试的经历看,大家都没怎么做过正规的项目。也不好拒。唉…让lead拒
吧。
给来面试者的建议:
1. 如果问啥啥都不知道,但是算法还算好,我一般会交给下一面拒掉。因为可能我知道的知识和面试者知道的知识有所不同,让下一面再试试底。另外如果简历上的写的x
xx算法都不知道原理、复杂度以及适用范围,我觉得还是不要写了,只能减分。

2. 另外会c又会一点皮毛c的,就不要说自己会面向对象编程了,因为怎么看都是像面向过程的。简历上最好就只写c吧。另外c有很多奥妙的语法和注意事项,
光靠看书和记忆是不行的。

3. 来面试的就不要自带笔纸了,除非你想拿走自己的答案改进。如果面的好,会被理解为改进。面的不好,就被认为是偷题了。

4. 某些同学见风使舵的本领还是非常厉害的。但是我真心不是为自己招兵的…其实我也只是个兵。
给有道这边的建议:

1. 面试的地方真憋屈。办公的地方不收拾一下,然后去面试,实在是脏乱差,我都想吐槽。不,是想吐。

2. 面试题大家都是临时才知道,准备的非常不充分。

3. 面试题其实就放在打印机上…我不知道是否有不自觉的小朋友拿走了。

4. 大家都在不知道简历的情况下面试。除了每面有一道统一题,基本上面不出所以然。当然也不知道他们简历上的写的这模型,那算法,这框架,那应用是个啥。嗯,还是
交给后面的人拒掉吧。

5. 吃上可口的饭的运气只有1/3. 我真心想都试吃一下,后来还是忍了。

嗯嗯,LP大人说很久都没有写blog了…嗯,补一篇吧。

游戏介绍:

这个能轻松到达 4096. 所以取名为 4096了。

github地址是: https://github.com/chilly/4096

如果想直接玩游戏访问 4096.chillyc.info

这个4096 是直接copy的2048。 这个游戏需要消耗比较多的脑力。当然费了脑力还要拼拼运气。原因在于生成随机方块的地方90%会生成2,10%会生成4.
最后一搏的那个方块很有可能会因为2,4生成的问题导致游戏失败。

为什么要做这个游戏

这个原因其实是为让LP打到更高的分数。当然还要有些难度,不能移动一个方块瞬间就变成8192。还得让LP不能因为运气不佳挂掉。戴着枷锁跳呀跳。所以直接改了20
48的源码。

2048这款游戏怎么做的?

其实非常细节的,我也没有仔细的研究。2048这个游戏代码量不大。最主要的两个类是game_manager.js 和 grid.js。游戏的主要流程:

  1. 界面接收到keyboard的请求
  2. 交给game_manager的move函数
  3. 判断游戏是否失败
  4. merge tile(也就是merge 色块)
  5. move tile
  6. 最后生成在随机的位置生成随机的 tile(2或者4)
  7. 继续监听keyboard请求

怎么做4096这款游戏

做这款游戏的重点是要去除霉运,增加好运

下面做了几点优化点:

  1. 真没有什么可以优化的点时,对4产生的概率增加一下。提高到50%。简单暴力
  2. 生成的2需要在2旁边,生成的4需要在4旁边:如下图:

在2的旁边生成2


2.png
在4旁边生成4

3. 误操作导致最大值移动。在误操作时需要弹个框帮助用户确认。不过为了不要频繁的弹窗,在最大值大于512后才开始提示。这里的算法是判断最大值是否有移动,如
果移动,是否会移入到四个角。是否是在边界处移动。而非向内部移动。




4. 随机生成的色块,可以帮助某些值merge.这里比较tricky的地方。如果某个比较大的两个值需要merge,
但是这两个值差了一个空格。那么就在相应的地方补上2、4,使得这两个比较大的值可以merge。例如下图中的两个32色块:




这个图中向左移动后,32和32会移动到左边。那么第二行的32的右边出现小方块,那么下一次向右移动,32就有机会和32合并。如下图所示:




然后继续右移,32可以和32合并了:




5. 在最空旷的地方生成2/4. 这个比较简单就是找4联通最大的空白所在的点。然后将此点设置为2、4。如下图所示:




再次优化

当然,经过这系列优化之后,难度有所降低,但不意味着你不动脑筋可以玩到4096. 另外还有一些值得优化的点。

  1. 例如第5点,在这一点中,需要生成的色块不应该和最大值在一条直线上。
  2. 另外还需要做的优化就是:如果你一直左右移,很有可能有一个状态导致无法再左右移动。那么就需要上下移动。这样的带来的问题就是最大色块一定会脱离原有的边界。这样的移动极有可能导致整个游戏挂掉。所以需要对这一状态进行优化。
  3. 在手机上玩这款游戏,其实灵敏度是个问题,总感觉慢了半拍(性能上还有值得优化的点)
  4. 在某一个状态,最大值一定在边界上,但不是在四个角,那么最好的情况是可以将最大值移入到四个角中。假如一直是左右移动变为的这个状态,最大值和次大值都都在底线上。之后的步骤一定要让最大值所在的色块不能向上移动,而其他的底线色块可以向上移动。这样上移后,底线就只有最大值,然后再次左右移动就可以将最大值放入到边角中。如果这时随机生成色块,很有可能次大值等再也无法移回底线。所以这样的状态也需要优化。









结束了吗?

这些优化会在以后慢慢放出来。现在游戏中bug有些多。像这种游戏也不知道怎么做自动化测试的。。。。。。慢慢做吧。

下面是黑PM的时间:PM们,你们能走查到 8192 这个状态吗? 。。。。。。算了,你们努力走查到1024就可以发布了吧~

开发有道云笔记发送邮件功能。这是一个非常古老的功能,这也是一个非常没有用处的功能。其实就是为了做一个和竞品一样的功能。这个功能就是将一篇笔记发送成邮件。关于
这个功能,每次测试时,总有测试人员来问,为什么我发的邮件被扔到了垃圾邮件里?每次回归测试都是如此,无一例外。

那么为什么会成为垃圾邮件呢?

1. 内容本身是垃圾,里面的内容写的都不是人话。都是“法3iron的萨芬女生大富豪ASF萨法” 这样的乱敲码。
2. 垃圾内容发送过多的账号,即使发送正常的内容,也可能会被标记为垃圾

3. 含有“发票,代开,网店,xx”等特殊字样

4. 内容只有一张图片的

5. …
在这里总结一下。我要说的是:这不是功能的问题,这是因为你们发送的内容本身就是垃圾…

好吧,明白为啥被当做垃圾邮件的请点赞。

0%