阿里大模型算法工程师面试题
应聘岗位:阿里大模型算法工程师 面试轮数:第二轮 整体面试感觉:偏难
面试过程回顾
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[i].length <= 500
-
-10^4 <= lists[i][j] <= 10^4
-
lists[i] 按 升序 排列
-
lists[i].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技术的相关知识和技能,了解面试中可能出现的问题和技巧,你就能够在面试中展现出自己的专业素养和实力,赢得面试官的青睐和认可。因此,让我们一起努力,用知识和技能武装自己,迎接AI时代的挑战和机遇吧!
有需要的朋友可以扫描下方二维码,免费获取更多相关资料!
最后,祝愿所有转行、求职的同学都能够在AI产品面试中取得优异的成绩,找到心仪的工作!加油!