小红书PE(全栈)一面面经
《面试题目》
- 自我介绍
- RAG 项目的整体流程是怎样设计的?参数是如何选型的?采用了哪些优化手段?如何做效果评测(RAGAS)?
- 前端掌握程度如何?擅长什么语言?
- 手撕算法题:LeetCode 72 编辑距离
- 手撕算法题:LeetCode 61 旋转链表
《参考解析》
- 编辑距离(LeetCode 72):经典二维动态规划,
dp[i][j]表示 word1 前 i 个字符转换为 word2 前 j 个字符所需的最少操作数。若两字符相同则dp[i][j] = dp[i-1][j-1];否则取插入、删除、替换三种操作中的最小值加一:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1,边界条件dp[i][0]=i、dp[0][j]=j。 - 旋转链表(LeetCode 61):先遍历一遍求链表长度 n,并将链表首尾相连成环;实际需要向右移动的步数为
k % n,从头节点走n - k % n步找到新的尾节点,将其 next 置空即完成旋转,整体只需一次遍历加简单指针操作,时间复杂度 O(n)。