1. 介绍项目

还是那四点:

  1. 项目背景,要解决什么问题
  2. 具体思路,怎么解决问题
  3. 困难,遇到什么困难,怎么解决的
  4. 收获

所以介绍项目的时候也基本按照这个套路介绍,关键还是解决困难

还是要注意,每个自己说到的 Highlight,都有可能被深挖,被深挖的点入下:

信号处理
1、FFT 推导一下,和 DFT 这些的区别,FFT 的处理步骤
2、自适应滤波,卡尔曼滤波(表示一脸懵逼,没有学过)

CNN
1、pooling 的作用
2、卷积的本质是什么,卷积怎么提取特征,为什么能提取特征

概率
1、求 std 为什么除以 (n-1) 而不是 n

解答:

样本方差计算公式里分母为 n − 1 n-1 n1 的目的是为了让方差的估计是无偏的

标准差其实有两个公式:
一个是针对总体而言的,公式中是除以n.
令一个是针对样本而言的,公式中是除以n-1,全称为样本标准差.分母除以n-1是由于 ( x i − x ) (xi-x) (xix) 的自由度为 n-1,即 ( x i − x ) (xi-x) (xix) 中只需确定 n − 1 n-1 n1 个数值,另外一个数值也被确定.
需要指出的是,实际生活中的数据基本都是样本,一般我们处理数据用的都是样本标准差.

详细推导参考:为什么样本方差(sample variance)的分母是 n-1

2. 手撕代码

1、编辑距离
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。

你可以对一个单词进行如下三种操作:

插入一个字符
删除一个字符
替换一个字符

示例:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')
class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        n1 = len(word1)
        n2 = len(word2)
        dp = [[0] * (n2 + 1) for _ in range(n1 + 1)]
        # 第一行
        for j in range(1, n2 + 1):
            dp[0][j] = dp[0][j-1] + 1
        # 第一列
        for i in range(1, n1 + 1):
            dp[i][0] = dp[i-1][0] + 1
        for i in range(1, n1 + 1):
            for j in range(1, n2 + 1):
                if word1[i-1] == word2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1] ) + 1
        #print(dp) 
        return dp[-1][-1]       

详细过程可参考:【LeetCode】72. 编辑距离(动态规划 hard)

2、求出每种编辑操作的次数分别是多少次

回答:不同操作的时候记录下来,而后每种操作的 count 来分别计数

  1. 替换: d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] + 1 dp[i][j] = dp[i-1][j-1] + 1 dp[i][j]=dp[i1][j1]+1
  2. 插入: d p [ i ] [ j ] = d p [ i ] [ j − 1 ] + 1 dp[i][j] = dp[i][j-1] + 1 dp[i][j]=dp[i][j1]+1
  3. 删除: d p [ i ] [ j ] = d p [ i − 1 ] [ j ] + 1 dp[i][j] = dp[i-1][j] + 1 dp[i][j]=dp[i1][j]+1

但是面试官提示表示你的 dp 表其实已经记录下很多信息了,用 trackback 就可以,但是没有想出来,欢迎评论区解答。