Before
这文档或许可以称为一篇复盘文档吧。
Cause
首先看起因。
我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟。
从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)
例如,在倾倒一杯香槟后,最顶层的玻璃杯满了。倾倒了两杯香槟后,第二层的两个玻璃杯各自盛放一半的香槟。在倒三杯香槟后,第二层的香槟满了 - 此时总共有三个满的玻璃杯。在倒第四杯后,第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟,如下图所示。
现在当倾倒了非负整数杯香槟后,返回第 i 行 j 个玻璃杯所盛放的香槟占玻璃杯容积的比例( i 和 j 都从0开始)。
1 | 示例 1: |
1 | 示例 2: |
题目也比较简单,动规+模拟即可解决。一开始想着除了模拟外,能不能推出数学公式来解决这道题,不过后来发现是我想多了。题目是杨辉三角的变种,但公式推不出来,老实模拟就好。下面是解答。
1 | public double champagneTower(int poured, int query_row, int query_glass) { |
Detail
直接放聊天记录。
Result
结局自然是以我被踢出群聊结束。
Thinking
很多思考的内容在傍晚的椭圆机上已经思考过了,现在也不大能保证还原当时的想法。
首先就是我为什么会“急了”。
现在想来,不外乎是以下几点:
讨厌被不熟的人说教。就有那么一种感觉“你在教我做事?”我985计算机出身,两段大厂经历,至于被一个互联网的上臭鱼烂虾指指点点?尤其是对面可能还没毕业,或者才毕业2个月的情况。你寄吧谁啊。
无法理解的脑回路。面向过程的算法题能扯到面对对象,aop,执行效率高,易读性好,太好为人师了。
面对互联网常用语“急了”没有做到很好的应对。当下互联网上的争论很多是无意义的争论,面对这种没有意义的“急了”,万能解答“典”,“典中典”就可以怼回去了,而不是先自认“急了”,在继续在原问题上争辩,没有意义。
网络君子六艺:典、孝、急、乐、蚌、赢
- 好为人师,说教闭口不谈,实质性的内容也没谈多少,只谈谜语。OOP,AOP也没说出个所以然来。更有一种“刚学了一个概念,就出来装逼”的感觉。
来自taisa的良言
不熟的人和他来回3个回合就算我输了
Others
写这篇复盘文档更多不是为了看这道题,或者这件事怎么怎么,更关心的是自己的思考。(虽然这里有的思考说一个月以前的了,hhhh)
交付价值,不是交付需求(业务)
在交付需求的时候,有自己的思考or判断吗?对于一个需求,交到研发手上,为什么要做,要怎么做好,要做成怎样,这些其实还是值得我去思考的。但是或许是由于时间的原因,导致我没有很好的去履行有关方案,仅仅是接到需求,拿到手就去做了,其实还是可以更多的去思考要怎么做的更好。
这里的做的更好可以再补充一下,性能(各种耗时),交互(各种体验)。
时间忙是客观因素,需求A刚提测就来了需求B,疲于奔命忙着各种需求,带来了一系列问题,比如[没成长],[心累时间忙]等。
那我在空闲之余,有完成我自己的承诺吗?现状梳理,文档沉淀,技术规划,性能or体验优化,很多事情都没有达成。
从理想倒推,从现实延伸
持续打磨产品,体验优化。
体验竞品,学习优秀。
我所负责的模块要达到一个怎样的水平,达成一个怎样的目标?
个人成长,未来规划
对不起,目前还没有什么规划。
接下来一年能做成怎样?
这里还是写一下吧。总归还是要用到的。不过也只是把文档上的内容搬了过来。
技术能力:
- 可拓展
- 健壮
- 可复用:低耦合,高内聚,热插拔,面向接口编程
- 稳定
业务能力:
- 熟悉业务,无需多说
- 协调推动
- 判断力与优先级
控制情绪,坦诚清晰
心平气和,理性沟通
更多的时候还是善意假设,换位思考吧。不以恶意揣测他人。
想起一个badcase,在排查问题时对.remake过火了些。是的,资源包有问题,但这是从经验出发,我更想知道的是为什么会造成这个问题,是哪里出了错。
更之前的badcase无疑是打低评价。不管是情绪化还是怎样,还是要从实际出发,善意假设,不以恶意揣测他人。目光放长远,从他人角度出发。
心平气和,心平气和。
人与人之间还是要少些攻击性
人与人之间还是要少些攻击性,与自己和解,与他人和解,与世界和解。
有的玩笑能不开就不开,在玩笑的背后何尝又不是心酸血泪呢。
我原本以为幽默就是幽默,但人微言轻的时候,幽默就成了搞笑,搞笑就容易被当成小丑。
不要从经验出发
经验或者说惯性有时还是很可怕的。在面对某一问题上时,我可以说按经验是xxx出了问题,但是这并不够,我更希望找到根本原因,哪一行代码写错了。
有时经验/惯性带来的伤害也是不小的。回想起在做需求时,按照经验这个地方应该这么写(线上就是这么写的),但是写完发现这里总会造成一个抖动,经验让我选择了相信这里的代码,并没有去怀疑他,然而最终发现还是这里出了问题。
另外一个经验/惯性带来的问题也是同样。历史代码里矩阵运算后乘了一个scale
,但是经验没有告诉我在特定情况下这个scale
总是1,而在我的场景下scale
的值是可以变化的,进而产生了问题,经验就是这样带来了其他问题。
非暴力沟通
- 重要的事情说三点,比如三个论据,三个论点,三个观点等(最简单的结构化表达)
- 先说结论,再说过程和原因,然后再说结论。
- 说清楚What,How,Why
说回这里,互联网上有的争论确实是没有意义+浪费时间,典就完事了。
挖掘事物背后的本质
深入底层,多看源码,不自嗨。
了解问题发生的原因
挖掘事物背后本质
寻找其他相似问题
持续学习
多读书,多学习,多看源码。