没错,又是我,之前一面居然过了,有点意想不到,今天二面直接凉凉
上来自我介绍,说上个面试官是不是都问了算法,我说是的,然后就让我手推了svm,以为会继续问算法,画风就转变了,开始说之前笔试题目没有做出来,那你现在做一下吧,我?????行吧,我不会,我以为二面也是一面面试官组里的,这几天都在看机器学习,行吧,知道我不会之后面试官就挑了业务的题目(我都回答的这么垃圾了,面试官都没喷我,感谢面试官的耐心和不杀之恩还说和我讨论讨论),说youtube和bilibili的区别,我说了广告,业务这方面谁来救救我,有没有什么视频可以看得,能系统的讲解数据分析业务这一块的,然后看我回答不好,就开始写代码,动态规划
给定一个正整数 n,你可以做如下操作:
1.如果 n 是偶数,则用 n / 2替换 n。
2.如果 n 是奇数,则可以用 n + 1或n - 1替换 n。
n 变为 1 所需的最小替换次数是多少?
示例 1:
输入:
8
输出:
3
解释:
8 -> 4 -> 2 -> 1
输入:
7
输出:
4
解释:
7 -> 8 -> 4 -> 2 -> 1
或
7 -> 6 -> 3 -> 2 -> 1
然后在面试结束后面试官给我加赛了一题(是我厚颜无耻),之前拼多多算法工程师笔试第二题,感觉面试官估计直接会写个comment(此人菜鸡)
一条项链长L,共有0到L-1个位置,珍珠有N个(N< L),试问如何移动才能把珍珠移动到相邻位置且移动距离最短
示例:长为1000的项链,珍珠有4颗,散落在1 4 998 995位置 上
结果:最短距离为8
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
import math
pos = [1,4,998,995]
pos.sort()
l = 1000
n = len(pos)
def func(s, e, l, pos):
move = 0
if l <= e:
pos.append(l + pos[0])
pos.pop(0)
for i, j in enumerate(pos):
move += abs(s + i - j)
return move
res = 100000000000000
for i in range(l):
res = min(res, func(i, i + n - 1, l, pos))
print(res)
def cal_num_moves(tmp_win):
size = len(tmp_win)
if size % 2 == 0:
median = (tmp_win[size//2] + tmp_win[size//2 - 1]) / 2
else:
median = (tmp_win[(size - 1) // 2])
num_moves = 0
for n in tmp_win:
num_moves += abs(n - median)
num_moves -= size
return num_moves
def func2(n, l, pos):
pos += [p+l for p in pos]
min_num_moves = math.inf
for i in range(0, n):
tmp_win = pos[i:i+n]
cur_num_moves = cal_num_moves(tmp_win)
if cur_num_moves < min_num_moves:
min_num_moves = cur_num_moves
return min_num_moves
#方法3
def find_biggest_gap(pos):
gap = 0
gap_l = None
gap_r = None
for i in range(len(pos) - 1):
cur_gap = pos[i+1] - pos[i]
if cur_gap > gap:
gap = cur_gap
gap_l = i
gap_r = i+1
return gap, gap_l, gap_r
def cal_num_moves(tmp_win):
size = len(tmp_win)
if size % 2 == 0:
median = (tmp_win[size//2] + tmp_win[size//2 - 1]) / 2
else:
median = (tmp_win[(size - 1) // 2])
num_moves = 0
for n in tmp_win:
num_moves += abs(n - median)
num_moves -= size
return num_moves
def main(l, pos):
n = len(pos)
gap, gap_l, gap_r = find_biggest_gap(pos)
left_pos = [p+l for p in pos[:gap_l+1]]
new_pos = pos[gap_r:] + left_pos
return cal_num_moves(new_pos)
if name == 'main':
print(main(1000, [1, 4, 995, 998]))
陷入自闭
除了回家种田搬砖,想不到我还能做什么
凉透了,只知道数据分析不好当,遇到算法团队,你要会算法加代码,遇到业务团队,你要会sql和业务加代码
8.9月份 要做的 就是如下
刷leetcode + 刷剑指offer + 刷业务方面的东西 + 继续每天过一遍机器学习 + 刷sql + 各种笔试 + 面试
我不能轻易的狗die
要学习的还有很多,所以哪位好心牛油推荐我几门数据分析的网课,拜托了