0%

Sum of Flashback

本篇文章会试图(试图),把再三年写eva文中,把没有说出来的内容倒一倒.
并附加了过去旧照片,用vba一周速成之狼与羊与草一起过河小游戏的代码,与以头抢地笔记索引.

为什么内容类型如此混乱.

这篇文章也献给我亲爱的考拉,考拉小姐可以使用电脑端左侧的tag跳转,从【记录】开始读起就好.




残留的

自己读了遍【三年后写eva】,感觉驴头不对马嘴.
也是,当时写时删删减减,时间隔得也长,记下来的这几句话太杂碎传递不了感情.
于是重写.

在找工作的这段时间遇到的第一个大的变化是身份的转变.
这个转变有那么点,自我价值崩塌的意味,不过这取决于人.
在我的人生里,每天给学校八小时(或八小时以上),是一种交易.
跟随他人的价值观,选择一个可以的,较好的学校,每天投入一定的时间,活在他人告知的,还不错的未来里.
没有用自己的手去建立未来,是放弃思考的惰性.

因为活在他人给予的“未来幻影”中,把时间安心投入搞副业里.
求职这段时间里,会觉得我没有获得足够的能力去保护自己珍重的东西(爱好需求).
这里的能力指的是一来物质上的衣食住行,二来精神上的资格.
跟朋友聊天,会发觉他们已经脚踏实地.
在边工边学计算生计,思考读书对自己真正的意义.
所以以前的安心是一份幻觉,无论愿不愿意,都会重新建立自我价值.

同样也许对自己的苛责也是不合逻辑的.
不确定给我带来的痛苦是很疼痛的.有很强烈的【不知道自己在做什么】.
这样的努力真的会有意义吗?这样的我也能迎来明天吗?真的来到了,明天一如既往的来临真是残忍啊.
一直在做自己不明白的事情,对自己的存在定义都产生了疑惑.

需求金字塔,追求过于高的需求,没有构造底层.
为了保证底层的构建,所付出的努力,不可避免的会成为【自己的存在定义】,也就是自身的一部分.
每个人都得重建一遍自己的塔,这跟生来和死去一样都是个人的路.我是这么说服自己放弃的.




今年的面试

三月后的面试没记载博客里.
有两个趁这次聊一聊.

一个是一家地理偏僻的农产品公司,投简历第二天就找我面试,也许的确是够偏远的.
面试问要视频还是in person.
既然认真考虑一个工作机会,那得去见未来可能的工作环境,所以去了.

那段时间emo得厉害,出了趟门看看云看看绿反而心情好多了.
虽然我垃圾,但世界自己依然美丽!真不错!
Manager带我去他办公室,他们跟我介绍了他们在用odoo搭建的网络购物平台,想要一个人去学odoo.包括odoo generate的报表,(因为我会点美术,还提了)购物网站排版设计,顺便修修打印机等硬件.
虽然不应该但没忍住问了:你们为什么要招个大学生做这么多事啊.
顺便一提在面试的时候撇见了一眼,发现manager的聊天记录中有我在linkedin放的hackathon集体合照.
草啊!放一张活动时demo的集体照是我的小心思,那个活动码没怎么写,负责present所以demo时坐在了中间,一张超阳角大贡献的合照,竟然真的能给人印象.

之后安排了远程技术面,农产品公司是找技术外包公司来开发项目的.外包公司是靠谱的技术人,从business analyst的分析需求,寻找解决方案,并从技术上解决问题.
技术大哥问我的第一个问题是:你会注意什么把自己的query变得更efficient.
卧槽,秒杀了呀.
之后大哥给我看了点他们的代码,问代码的作用和提意见如此让代码更好,是我做过最硬核的面试.




另一场面试则是我唯一,或者,最后通过的面试.
我在面试时因为没有实习经验,很明显能感觉出提到我的经验都是【课程】/【个人项目】时面试官脸上立马拉下的忧郁.大学实习一下很重要啊啊啊啊啊.
所以在最近两场面试中,有时间我都会看看技术上的教程,原地做一个项目出来.
上次的power bi岗位,做了个游戏销量数据分析.原本只想在面试官面前提一提,结果面试官听了我有学,立马提议想看(为了这个面试做的东西,他们极大可能是真的会想看),让我慌了手脚.
后来反省反省,那还是真诚的面对自己的劳动.自己怎么想的怎么做的都是努力,自己满意了,让面试官来决定符不符合能力期待是最好的.
于是这次也一周速成了下VBA.

在网络上听他人做的VBA项目时,发现挺多会做制作报表的自动化,提高多少多少效率.
自学很花力气,做项目更加了,特别还是估计徒劳无功的面试.
人生一场,还是做点开心的吧.

所以放弃了什么高效牛逼自动化,来搞个经典游戏.

哎,写自己想做的还是开心啊,看船能动起来觉得自己又可以撬动地球了.

我写的挺糙的挺乱的,在此附录,以作纪念.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
Dim waitingItem(3) As String
Dim receivedItem(3) As String
Dim onBoat As String
Dim iCounter As Integer
Dim boatEmpty As Boolean
Dim boatLeft As Boolean
Sub startGame()
reset
'reset message
Range("F22").Value = ""

boatLeft = True
readWaitingItem
readReceivedItem
clearBoat
boatEmpty = True
End Sub
Sub acrossRiver()
MoveBoat
If boatLeft Then
checkReceivedValid
Else
checkWaitingValid
checkWin
End If
End Sub
Sub checkWin()
If receivedItem(0) = "Cabbage" And receivedItem(1) = "Sheep" And receivedItem(2) = "Wolf" Then
'winning message
Range("F22").Value = "Mission completed!"
End If
End Sub
Sub checkWaitingValid()
If waitingItem(0) = "Cabbage" And waitingItem(1) = "Sheep" Then
MsgBox "Sheep ate the Cabbage!", vbCritical, "Cross The River"
endGame
End If
If waitingItem(1) = "Sheep" And waitingItem(2) = "Wolf" Then
MsgBox "Wolf ate the Sheep!", vbCritical, "Cross The River"
endGame
End If
End Sub
Sub checkReceivedValid()
If receivedItem(0) = "Cabbage" And receivedItem(1) = "Sheep" Then
MsgBox "Sheep ate the Cabbage!"
endGame
End If
If receivedItem(1) = "Sheep" And receivedItem(2) = "Wolf" Then
MsgBox "Wolf ate the Sheep!", vbCritical, "Cross The River"
endGame
End If
End Sub
Sub endGame()
Range("F22").Value = "Mission not complete!"
reset
End Sub
Sub reset()
'clear waiting and received area
Range("D4").Value = "Cabbage"
Range("D9").Value = "Sheep"
Range("D14").Value = "Wolf"
Range("L4").ClearContents
Range("L9").ClearContents
Range("L14").ClearContents
'clear boat
Range("F8").Value = "TheBoat"
Range("F9").ClearContents
Range("F8").Interior.ColorIndex = 44
Range("F9").Interior.ColorIndex = 2
Range("G8:I9").ClearContents
Range("G8:I9").Interior.ColorIndex = 49
End Sub
Sub clearBoat()
onBoat = ""
If boatLeft Then
Range("F9").Value = ""
Else
Range("I9").Value = ""
End If
End Sub
Sub addCabbage()
If boatEmpty = False Then
MsgBox "The boat is full already"
Else
If boatLeft Then
waitingItem(0) = ""
receivedItem(0) = "Cabbage"
onBoat = "Cabbage"
Range("D4").Value = ""
Else
receivedItem(0) = ""
waitingItem(0) = "Cabbage"
onBoat = "Cabbage"
Range("L4").Value = ""
End If
boatEmpty = False
printBoat
End If
End Sub
Sub removeCabbage()
If boatEmpty Then
MsgBox "boat is empty already"
Else
If boatLeft Then
If waitingItem(0) = "Cabbage" Then
MsgBox "Cabbage is removed already"
Else
receivedItem(0) = ""
Range("D4").Value = "Cabbage"
waitingItem(0) = "Cabbage"
End If
Else
If receivedItem(0) = "Cabbage" Then
MsgBox "Cabbage is removed already"
Else
waitingItem(0) = ""
Range("L4").Value = "Cabbage"
receivedItem(0) = "Cabbage"
End If
End If
onBoat = ""
boatEmpty = True
printBoat
End If
End Sub

Sub addSheep()
If boatEmpty = False Then
MsgBox "The boat is full already"
Else
If boatLeft Then
waitingItem(1) = ""
receivedItem(1) = "Sheep"
onBoat = "Sheep"
Range("D9").Value = ""
Else
receivedItem(1) = ""
waitingItem(1) = "Sheep"
onBoat = "Sheep"
Range("L9").Value = ""
End If
boatEmpty = False
printBoat
End If
End Sub
Sub removeSheep()
If boatEmpty Then
MsgBox "boat is empty already"
Else
If boatLeft Then
If waitingItem(1) = "Sheep" Then
MsgBox "Sheep is removed already"
Else
receivedItem(1) = ""
Range("D9").Value = "Sheep"
waitingItem(1) = "Sheep"
End If
Else
If receivedItem(1) = "Sheep" Then
MsgBox "Sheep is removed already"
Else
waitingItem(1) = ""
Range("L9").Value = "Sheep"
receivedItem(1) = "Sheep"
End If
End If
onBoat = ""
boatEmpty = True
printBoat
End If
End Sub
Sub addWolf()
If boatEmpty = False Then
MsgBox "The boat is full already"
Else
If boatLeft Then
waitingItem(2) = ""
receivedItem(2) = "Wolf"
onBoat = "Wolf"
Range("D14").Value = ""
Else
receivedItem(2) = ""
waitingItem(2) = "Wolf"
onBoat = "Wolf"
Range("L14").Value = ""
End If
boatEmpty = False
printBoat
End If
End Sub
Sub removeWolf()
If boatEmpty = True Then
MsgBox "The boat is empty already"
Else
If boatLeft Then
If waitingItem(2) = "Wolf" Then
MsgBox "Wolf is removed already"
Else
receivedItem(2) = ""
Range("D14").Value = "Wolf"
waitingItem(2) = "Wolf"
End If
Else
If receivedItem(2) = "Wolf" Then
MsgBox "Wolf is removed already"
Else
waitingItem(2) = ""
Range("L14").Value = "Wolf"
receivedItem(2) = "Wolf"
End If
End If
onBoat = ""
boatEmpty = True
printBoat
End If
End Sub
Sub printBoat()
If boatLeft Then
Range("F9").Value = onBoat
Else
Range("I9").Value = onBoat
End If
End Sub
Sub readWaitingItem()
For iCounter = 0 To 2
waitingItem(iCounter) = Cells(4 + iCounter * 5, 4).Value
Next iCounter

End Sub
Sub readReceivedItem()
For iCounter = 0 To 2
receivedItem(iCounter) = Cells(4 + iCounter * 5, 12).Value
Next iCounter

End Sub
Sub MoveBoat()
If boatLeft Then
Range("F8:F9").Select
Selection.Cut
Range("I8").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("F8:F9").Interior.ColorIndex = 49
boatLeft = False
Else
Range("I8:I9").Select
Selection.Cut
Range("F8").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("I8:I9").Interior.ColorIndex = 49
boatLeft = True
End If
dropItem
End Sub
Sub dropItem()
clearBoat
boatEmpty = True
printWaiting
printReceived
End Sub
Sub printWaiting()
If waitingItem(0) = "Cabbage" Then
Range("D4").Value = "Cabbage"
End If
If waitingItem(1) = "Sheep" Then
Range("D9").Value = "Sheep"
End If
If waitingItem(2) = "Wolf" Then
Range("D14").Value = "Wolf"
End If
End Sub
Sub printReceived()
If receivedItem(0) = "Cabbage" Then
Range("L4").Value = "Cabbage"
End If
If receivedItem(1) = "Sheep" Then
Range("L9").Value = "Sheep"
End If
If receivedItem(2) = "Wolf" Then
Range("L14").Value = "Wolf"
End If
End Sub
''''''''''''''''''''testing functions''''''''''''''''''''

Sub testWaitingIterm()
For iCounter = 0 To 2
MsgBox waitingItem(iCounter)
Next iCounter
End Sub
Sub testreceivedIterm()
For iCounter = 0 To 2
MsgBox receivedItem(iCounter)
Next iCounter
End Sub
Sub testonBoatIterm()
MsgBox onBoat
MsgBox boatEmpty
End Sub



记录

因为我找了一年的工作(一年啊!),很菜.记录是六百封简历,三十场面试.我的经历大部分当反面的来看,小部分当正面,会make sense.

在这段时间了里,开了以头抢地诚的tag来记录求职努力.
面试记录写了两份,第一份从十月到十二月,第二份从一月到二月.
大部分是心情记录,可以用来安慰人(不是).
真正准备面试找人生前辈book一个mock interview是最有效的.
有些题目虽然练过了,但朋友跟你mock时的临场感是不一样的.
很不一样,而且你得观察着面试官的脸色猜测他的好球区来随机应变.

Interview的问题可以粗略分为两大类:technical和behaviour,顺便加一个开场白tell me about yourself.

Technical我认为分为两大区,一类就是原地写码给人看,就算写过,面之前还是刷刷题手熟手熟.

编辑的比较认真但杂乱的sql笔记.
刷题记录可以看到我很屑,有些题目并没有真正的理解,只记了个答案.
可以尝试一下leetcode中的一些免费sql题.
朋友说有用的Excel笔记,真的吗.

我自学一半是来源于linkedIn learning,毕业了但大学账号还可以免费提供linkedIn learning资料,谢谢滑铁卢.
没有的话…可能报个靠谱的班学起来会快一些…

有什么好资料或者我没有cover的内容欢迎在评论或者私我我来编辑笔记.

第二类是概括类题.

关于data相关的概括类提问,里面关于如何clean data的部分可以稍稍看一眼.

概括类题,举例:

  • What is the difference between pass by value and pass by reference?
  • What is the difference between group by and where?
  • What is primary key, what does it use for?
  • What is inner join?
  • How do you do data cleaning?

我个人不会背答案,会用自己的话来说一遍.网上一些花哨的答案我理解不了就不说…不然被追问了一点就破会社会死亡.
一轮时问的technical概念题不会太难,学习时有好好理解都答得出.
面到二轮三轮时,题目可能会从【工具技术】变成【岗位概念】.
比如之前防诈骗的一个岗位,我pass了原地写sql的一轮,被送去见VP,一上来VP就问我对信用卡诈骗的理解和看法.

这还真得提前学的.
假装自己明天要去做信用卡防诈骗了,读读别人写的论文,来思考业界是怎么做的,自己能做到些什么.
某种意义就是摆脱学生思维吧……不是【我想来练习我的技术技能】,而是把自己放在岗位的位置上,谈自己的见解.
我的老师跟我讲,他曾经面试时,跟面试官说自己将来一年内能把公司业务做到什么程度,面试官第二天就签offer.
这等级真是不得了啊.

然后是behaviour question.

举例:

  • What do you do when you face a conflict with your co-workers?
  • How do you manage your study during the cvoid?
  • How do you overcome your difficulties?
  • What’s your weakness and strength?

在网上搜【behaviour question】都可以用来测测自己练练话术,无非是看软实力和性格.

性格题得察言观色,或者靠一些缘分.
第二个问题,study during cvoid,因为俺真的是喜欢跟朋友结伴互相拼枪监督,俺讲了跟大家视频通话,互相打卡什么的.
结果面试官说他们team是更加self independent的氛围,就很尴尬.

软实力就得准备一下故事,用STAR method过一遍.
俺软实力本来就很差,而且经历也少,用game jam和hackathon经历糊弄了很多次.不是好sample.

最后是tell me about yourself了.
俺觉得这个真的挺难的.

我的简介构成是

  • 先答谢下谢谢面试官给的机会
  • 明白自己(对应职位)的卖点,多讲讲
  • 中间内容选择时考虑下面试官可能会追问的问题
  • 最后再表达下俺的future career路线跟这个岗位完美匹配诶!棒诶!

最后一场的面试感觉得出来面试官对我的future career和诚谢词一点兴趣都无,于是临时cut了.
第三点是因为我的介绍组成没有怎么讲自己毕业后一年所干的事(因为在投简历啊!),所以有的面试官追问了.
(感觉到急迫也是因为此,只投简历一直被拒绝真的很难有大帮助,甚至写点project都被只投简历好.)

给伯母做过一点视频剪辑,有的面试官追问了,为什么去做跟我这个职位完全不搭界的事情.
这时候解释就很重要了!!俺只是想要工作经验,俺想要学习对工作负责,时间管理,给公司提供价值之类之类的,能扯都可以算safe(因为有的面试官真的很看重面试经历!不知道什么是地雷时只能抛出去然后万一炸了就开扯救场!).

在这个失败了N多次的人体感下,面试很像相亲,真的得有点缘分.

最后再补两句我对自己的心理建设吧…

面试的时候跟面前这位经历老道立派社会人也不过是萍水相逢,一百年后也会化作尘土一起在风中流浪.大家都有自己的命运,珍惜,努力享受一下这相见的十五分钟吧.

俺博客里有很多各式各样的技术笔记,有些甚至这辈子不会再使用了,我是绕了些(不少?)弯路的.
不应该学那么多奇怪的,至少得找一个自己做得下去的方向,然后好好学.
有些东西不是能速成起来的,比如machine learning.我在一堆弯路后,sql和excel用的力气多一些.

Goose系列中,是我们学校给的求职小活动笔记.引可以稍稍看看,简历的格式(印象)很重要.上下篇我觉得对于我这样,只求【存活】,没能在找【理想的自己】的人并不是那么实用.
但如果会想把人生game打到极致的话,可以看一眼problem solver,那个教授很牛逼.

以上,感想分享.