一面面了 2 个小时,把项目问了个底朝天
1. 项目
面试官问的超级细,问到底朝天的那种,一个项目问了一个小时
- 激活函数选啥
- 调参
2. 手撕代码
1、 删除字符串中连续重复的字符
只保留一个字符(比如:“aabbadc” -> “abadc”, “aaaaadcbad” -> adcbad)
要求空间复杂度O(1)
remove2() 有问题,因为 python 没办法做字符串的赋值,后续再完善
def remove(s):
new_s = []
for i in range(len(s)):
if s[i] != s[i-1]:
new_s.append(s[i])
else:
pass
return new_s
def remove2(s):
pre = 0
cur = 1
for i in range(len(s)):
if cur != pre:
s[pre] = s[cur]
cur += 1
pre += 1
else:
pass
return s
# if __name__ == '__main__':
# s = 'aaaaadcbad'
# res = remove2(s)
# print(res)
2、【青蛙跳台阶】
有一座高度是N级台阶的楼梯,从下往上走
每跨一步只能向上1级或者2级台阶
要求用程序求出一共有多少种走法
尽可能降低时间、空间复杂度
def numWay(N):
# dp = [0] * (N+1)
# dp[0] = 0
pre = 0
# dp[1] = 1
cur = 1
for i in range(2, N+1):
# dp[i] = dp[i-1] + dp[i-2]
temp = cur
cur = pre + cur
pre = temp
# return dp[-1]
return cur
if __name__ == '__main__':
N = 3
res = numWay(N)
print(res)
3、概率题:(x1, p1), (x2, p2), …
扔硬币直到连续两次出现正面,求扔的期望次数。硬币正面出现概率1/3,反面概率2/3
假设期望次数为E
解答:
- 反:0.5(1+E)
- 正-反:0.25(2+E)
- 正-正:0.252
E = 0.5(1+E) + 0.25(2+E) + 0.252
E = 6