赞
踩
暑期实习基本结束了,校招即将开启。
不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。
最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。
总结链接如下:
分享一位群友面拼多多NLP算法岗(大模型方向)的面经,这位同学是有两个 Offer 机会,一个是国企,一个是互联网企业。
考虑到互联网的 996 内卷和当下的就业环境,最后去了国企,放弃了这家企业
把面经进行了汇总:
代码题:
最长递增子序列(LIS)的算法可以通过动态规划实现。下面是一个Python代码示例:
def longest_increasing_subsequence(nums):
if not nums:
return 0
dp = [1] * len(nums)
for i in range(1, len(nums)):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
# 示例
nums = [10, 9, 2, 5, 3, 7, 101, 18]
print(f"最长递增子序列的长度是: {longest_increasing_subsequence(nums)}")
该函数使用一个数组 dp
来存储到目前为止每个元素结尾的最长递增子序列的长度。通过两层循环比较每个元素和它之前的元素,如果当前元素大于之前的元素,就更新 dp
数组中的值。
这个算法的时间复杂度是 (O(n^2)),其中 (n) 是输入数组的长度。如果需要更高效的解决方案,可以使用二分查找,将时间复杂度降到 (O(n \log n))。
这是一个经典的电话号码字母组合问题,可以通过回溯算法来解决。以下是Python实现:
def letter_combinations(digits):
if not digits:
return []
phone_map = {
"2": "abc", "3": "def", "4": "ghi", "5": "jkl",
"6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"
}
def backtrack(combination, next_digits):
if not next_digits:
result.append(combination)
else:
for letter in phone_map[next_digits[0]]:
backtrack(combination + letter, next_digits[1:])
result = []
backtrack("", digits)
return result
# 示例
digits = "23"
print(f"字母组合为: {letter_combinations(digits)}")
这个函数定义了一个映射表 phone_map
,将每个数字对应到它的字母上。通过递归和回溯来生成所有可能的字母组合。递归函数 backtrack
负责在每一步选择当前数字对应的一个字母,并继续处理剩下的数字,直到处理完所有数字。最终的结果存储在 result
列表中。
反问:
技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。
成立了算法面试和技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。