分享一篇面试阿里大模型算法工程师的经历与经验。
- 应聘岗位:阿里大模型算法工程师 面试轮数:第二轮 整体面试感觉:偏难
面试过程回顾
1. 自我介绍
在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。
2. Leetcode 题
【23. 合并 K 个升序链表】
题目内容:
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例 1:
输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[
1->4->5,
1->3->4,
2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6
示例 2:
输入:lists = []
输出:[]
示例 3:
输入:lists = [[]]
输出:[]
提示:
k == lists.length
0 <= k <= 10^4
0 <= lists.length <= 500
-10^4 <= lists <= 10^4
lists 按 升序 排列
lists.length 的总和不超过 10^4
题目解答:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
lists_len = len(lists)
if lists_len == 0:
return
return self.merge(lists,0,lists_len-1)
def merge(self,lists,left,right):
if left == right:
return lists[left]
mid = left+(right-left)//2
l1 = self.merge(lists,left,mid)
l2 = self.merge(lists,mid+1,right)
return self.mergeTwoList(l1,l2)
def mergeTwoList(self,l1,l2):
head = ListNode(0)
h = head
while l1 and l2:
if l1.val >= l2.val:
h.next = l2
l2 = l2.next
else:
h.next = l1
l1 = l1.next
h = h.next
if l1:
h.next = l1
if l2:
h.next = l2
return head.next
3. 技术问题回答
- llama2 中使用的注意力机制是什么?手写实现下分组注意力。
- 了解 langchain 吗?讲讲其结构。
- 对位置编码熟悉吗?讲讲几种位置编码的异同
- RLHF的具体工程是什么?包含了哪几个模型?
- 分别讲讲 encoder-only、decoder-only、encoder-decoder 几种大模型的代表作。
- 具体讲讲 p-tuning、lora 等微调方法,并指出它们与传统fine-tuning微调有何不同。
- 显存不够一般怎么解决的?
- 几种主流大模型的 loss 了解过吗? 有哪些异同?
- 了解半精度训练吗?展开讲讲。
- deepspeed 用过吗? 展开讲讲。
(注:我回答了大部分问题,但仍有部分问题回答不够准确。)
4. 面试总结
- 很多题目非常强调实践,没有做过大模型的项目且没有针对性准备过,很难回答上。
- 大模型微调是很多公司的考察重点。
- 几种模型的注意力机制、位置编码要熟悉。
- RLHF的几步多熟悉熟悉
这里给大家总结了
全套的AI大模型面试题及答案解析资料
,有需要的小伙伴,可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费
】