- 博客(160)
- 收藏
- 关注
原创 字节一面-大模型
这份面经非常典型,涵盖了现代大模型面试的核心考点:项目深挖:考察你的工程和研究能力。微调技术:LoRA是当前PEFT的绝对核心。模型基础:Transformer是一切的基础,必须倒背如流。对齐前沿:DPO是RLHF之后最重要的对齐方法之一,必须掌握。编码能力:常规的算法题考察。祝你面试顺利!
2025-09-12 22:28:22
950
原创 携程AI面 大模型
📍面试公司:携程AI面💻面试岗位:大模型❓面试问题:1. 你在项目中有没有团队成员出现矛盾,你是怎么解决的2. 你过往在项目中有没有什么把a领域的知识用到b领域,具体是怎么做的3. 你在学习陌生知识的时候,怎么制定学习计划,有什么新的学习思路和方法4. 你有没有主动参加额外的工作的经历,为什么要做,给团队带来了哪些贡献5. 你有没有遇到过需求和描述不一致的情况,具体是怎么解决的,你怎么确定首先做什么事情🙌面试感想:有六个问题,还有一个真忘了,每次追问还是挺个性化的。
2025-09-12 22:22:51
1399
原创 美团大模型方向产品经理面试经验整理
简要总结你的核心能力(如:具备AI产品规划、需求挖掘、项目管理、数据分析能力,并对大模型技术原理有持续学习)。结尾:表达对美团和该岗位的热情。
2025-09-12 22:19:07
550
原创 美团多面试
这份面经描绘了一次非常标准且理想的大模型算法岗技术一面:技术栈匹配:问题完全围绕LLM的训练 pipeline(SFT -> Reward Model -> RLHF/DPO)展开,说明美团在这个领域有深入的实践。难度适中:问题既有理论深度(RLHF算法),也有实践基础(编码),全面考察候选人的能力。体验良好:面试官的专业素养给候选人留下了极好的印象。给您的准备建议:吃透简历:确保能深入、流畅地讲解每一个项目细节。夯实基础。
2025-09-12 22:09:41
756
原创 快手一面快手二面
经典DP问题: 完美考察动态规划思想的理解和应用能力。广泛应用: NLP中的拼写纠错、生物信息学中的DNA序列比对等核心场景。难度适中: 作为一面手撕题,既不会太简单(需要理解DP),也不会过于复杂(思路清晰、代码量适中)。建议你在 LeetCode 上找到第 72 题“Edit Distance”,练习代码实现并理解每一步的推导过程,这是应对此类面试的必备技能。 祝你下次面试顺利!
2025-09-12 22:00:32
914
原创 科大讯飞大模型飞星计划秋招一面
岗位:大模型算法工程师面试 timeline:7.22面试时长:40min面试问题:1. 讲业务背景2. 知识图谱如何构造的?3. 如何衡量质量?4. RL的原理?手撕算法:无面试感觉:不知道是我简历太唐了还是我讲的太唐了还是面试官太唐了,面试官全程皱眉听我讲,我努力的想让她听懂,结果变成两个人都全程皱眉。总之,面的很尴尬知识图谱的构建、质量评估以及强化学习(RL)的原理都是人工智能领域的核心知识点。下面我将为你系统地梳理这些内容,并提供清晰的解释。
2025-09-12 21:53:55
866
原创 滴滴大模型秋招提前批
这次面试失利是一次宝贵的学习机会,它帮你明确了算法编码和可能存在的技术深度上的不足。很多优秀的开发者都经历过类似的挫折。不要气馁,针对性地补齐短板,深化技术理解,继续打磨项目经验和面试技巧。机会还有很多,充分准备后,下次你一定能表现得更加出色!祝你未来求职顺利!你问到的“并查集”和“最大二叉树宽度”确实是面试中常见的数据结构和算法题。它们在力扣(LeetCode)上都有对应的题目。算法/数据结构力扣题目编号与链接题目名称难度最大二叉树宽度662. 二叉树最大宽度🟡 中等。
2025-09-12 20:52:19
1556
原创 百度提前批三面
RAG(Retrieval-Augmented Generation,检索增强生成)是一种将信息检索与大语言模型生成相结合的技术框架。其核心思想是让模型在生成答案前,先从外部知识库中检索相关信息,然后基于这些信息进行生成,从而提升生成内容的准确性和事实性,减少“幻觉”。工作流程:索引:将外部知识库(如文档、网页)通过分块(Chunking)和向量化建立可检索的索引(常用向量数据库)。检索:根据用户查询,从知识库中检索最相关的若干文档片段。增强。
2025-09-12 20:34:02
1237
原创 面试公司:阿里国际面试岗位:大模型面试问题
阿里国际的大模型面试非常注重对强化学习基础和大模型训练优化技术的深度理解。关键在于不仅要知道各种算法是什么,更要理解它们为什么被设计出来(解决了什么问题),以及如何在实际中应用和权衡。希望这些梳理对你的复盘和后续准备有帮助!祝你面试顺利!
2025-09-12 20:30:25
1001
原创 pre = cur->next;和 cur->next=pre ;有什么区别,在c++中是如何阅读的,从左到右还是从右到左
牢记正确顺序:在迭代法反转链表中,pre = cur;和cur = temp;的顺序绝对不能交换。理解指针含义pre:总是指向已经反转好的部分链表的头节点。cur:总是指向尚未进行反转的部分链表的头节点。temp:临时保存cur->next,防止在反转cur->next指针后,丢失后续链表的访问入口。多在纸上画图:对于链表、树等指针操作复杂的题目,在纸上一步步画出指针的变化过程是最好的理解方式。希望这个详细的解释能帮助你彻底理解这个问题!
2025-09-23 12:02:45
821
原创 if (mm.count(find)!=0){ 和if (uset.find(num - 1) == uset.end()) {代码里面为什么一个用count,另一个用find
0){ 和if (uset.find(num - 1) == uset.end()) {代码里面为什么一个用count,另一个用find你在代码中看到的count和find的使用差异,主要源于它们不同的返回值特性以及具体的应用场景。下面这个表格汇总了它们的核心区别,帮助你快速理解:特性count方法find方法整数(0或1迭代器(指向找到的元素,若未找到则返回end()元素是否存在元素并返回其迭代器,便于后续访问或操作只需知道键是否存在,无需获取具体值(如条件判断)
2025-09-23 10:24:54
350
原创 u_set.emplace(nums[i]); // 使用emplace方法高效插入元素,去除数组中的重复元素(集合自动去重)是什么意思
你可以把这段代码的功能想象成:你有一个装满了各种颜色乒乓球的篮子(nums数组),里面有很多重复的颜色。你需要一个只能容纳一种颜色一个乒乓球的网兜(u_set集合)。你执行的操作是:从篮子里一个一个拿出乒乓球(循环遍历nums[i]),然后尝试把它放进网兜里(u_set.emplace(...)如果网兜里已经有一个这种颜色的球了,你就把手里这个扔掉(自动去重如果没有,就把它放进去。最后,你的网兜里就是篮子中所有不同颜色的乒乓球了。所以,这行简洁的代码同时完成了三项任务:取值:获取数组。
2025-09-22 19:13:43
416
原创 关注我,内存泄漏和内存溢出的定义及其解决方案
理解区别:泄漏是“只进不出”,溢出是“要太多却没有”。泄漏是原因,溢出可能是结果。重在预防:C/C++:优先使用 智能指针和 RAII 机制管理资源。:理解垃圾回收机制,注意避免循环引用(特别是被全局变量或静态变量引用),必要时使用弱引用。所有语言:注意及时释放非内存资源(文件、连接等)。善用工具:在开发测试阶段积极使用内存检测工具来发现潜在问题。监控与 profiling:对长期运行的系统,进行持续的内存使用监控。
2025-09-22 11:19:00
1788
原创 面试经验大全,关注我
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储栈: 存放函数参数以及局部变量, 在出作用域时, 将自动被释放.栈内存分配运算内置于处理器的指令集中, 效率很高 , 但分配的内存容量有限.堆 :new 分配的内存块 ( 包括数组 , 类实例等 ), 需 delete 手动释放 . 如果未释放 , 在整个程序结束后 ,OS 会帮你回收掉 .自由存储区: malloc 分配的内存块 , 需 free 手动释放 . 它和堆有些相似 .全局/静态区: 保存自动全局变量和stat
2025-09-22 11:14:09
320
原创 力扣735小行星碰撞
行星碰撞行星碰撞是指宇宙中两个或多个天体(如行星、卫星、小行星等)因引力等因素相互靠近,并最终发生撞击的现象。这类事件能释放巨大能量,改变天体形态,甚至影响整个星系的演化。下面是一个使用栈来模拟行星碰撞过程的C++代码,它遵循“向右移动(正数)和向左移动(负数)的行星才会碰撞,且小行星爆炸”的规则。
2025-09-21 12:00:15
229
原创 计数质数C++代码
计数质数是一个经典的编程问题,在C++中主要有几种实现方法,其效率和适用场景各不相同。为了帮你快速了解,我先用一个表格总结这些方法的特点:方法核心思想时间复杂度空间复杂度适用场景逐个判断每个数是否能被小于它的数整除O(n√n)O(1)小范围数据(n < 10^6)或单次判断从2开始,将其倍数标记为非质数O(n)中等范围数据(n < 10^7)确保每个合数只被其最小质因数标记一次O(n)O(n)大范围数据(n > 10^7)或需要高效求解。
2025-09-20 23:10:34
409
原创 手撕 二维数组两个端点的最短路径
在二维数组中寻找两个端点(通常是左上角到右下角)的最短路径是一个经典的算法问题。解决方法主要取决于问题的具体约束条件,例如移动方向是否受限、路径成本是否均匀、以及网格中是否存在障碍物。下面我将为你介绍两种最常用的方法:广度优先搜索(BFS) 和 动态规划(DP)。特性广度优先搜索 (BFS)动态规划 (DP)适用场景可向上下左右移动,寻找步数最少的路径(无权图)通常只能向右或向下移动,寻找代价最小的路径(带权图)核心思想层层扩散,首次到达终点时的路径一定是最短的递推填表,当前格子的最优
2025-09-20 22:23:29
907
原创 你知道哪些数据结构,哪些算法?介绍一下动态规划?
真诚至上:所有的回答都要基于你自己的真实情况和思考,适当包装,但不要过度夸大。提前准备:针对这些问题,结合你自己的经历提前准备好答案,并大声练习几次,确保在面试时能流畅自然地表达。展现思考:对于方案设计、优缺点等问题,尽量展现出你的思考过程,这比一个简单的答案更重要。积极互动:面试是双向的交流,可以在回答完一些问题后,礼貌地询问面试官的看法或团队的实际情况。希望这些详细的拆解和示例能帮助你更好地准备。祝你面试顺利,展现出最好的自己!
2025-09-20 22:22:53
958
1
原创 一面14大问题
一面:1.数组和链表的区别2.单向链表和双向链表的区别,优劣对比3.二分查找了解吗4.描述冒泡排序的过程5.如何避免内存泄漏6.全局变量和局部变量在内存中的存储区域7.堆溢出发生在什么情况8.进程和线程的区别9.并发和并行的区别10.进程间的通信方式有哪些11.用户区和内核区操作过吗?12.用linux做过什么东西13.进程线程区别14.面向过程和面向对象的区别,优势。
2025-09-20 20:12:48
395
原创 字母异位词分组
字母异位词分组好的,我们来详细解析您提供的这张图片中的(字母异位词分组)代码。这是一个非常巧妙的解法,其核心思想是,将具有相同签名的字符串归为一组,这个签名就是它们的字母异位词。
2025-09-20 19:10:41
715
原创 乘积最大子数组C++暴力求解代码
乘积最大子数组C++暴力求解代码在C++中,使用暴力方法求解“乘积最大子数组”问题,其核心是。该方法思路直接,但时间复杂度较高(O(n²)),适合理解问题,但在处理大数据集时可能效率不足。
2025-09-20 19:09:27
161
原创 层数最深叶子节点的和”的C++代码
int val;对于“层数最深叶子节点的和”这个问题:如果你追求思路清晰和代码直观,BFS方法是很好的选择。如果你更熟悉递归或希望代码更简洁,DFS方法同样有效。两种方法都是解决此类二叉树问题的经典策略。希望这些代码和解释能帮助你理解!
2025-09-20 16:17:15
416
原创 如何用c++遍历链表并统计链表长度
首先,我们需要定义一个表示链表节点的结构体。int val;// 节点存储的数据// 指向下一个节点的指针ListNode(int x) : val(x), next(nullptr) {} // 构造函数遍历链表并统计长度主要依赖于通过next指针逐个访问节点。迭代法是首选方法,因其空间效率高(O(1)),代码直观,且能处理很长的链表。递归法虽然代码简洁,但其空间复杂度为 O(n),需谨慎使用。务必注意链表的边界条件(如空链表)和有效性(如无环)。
2025-09-20 16:09:07
353
原创 int maxNum = INT_MIN; // 初始化当前窗口的最大值为最小整数 这个代码没理解/滑动窗口最大值
暴力枚举滑动窗口最大值是一个经典的算法问题,它要求找出数组中所有指定大小的滑动窗口中的最大值。下面我为你提供几种C++解决方案,从直观但低效的暴力法到高效的双端队列法。
2025-09-16 17:32:11
981
原创 #include <climits>没理解
include <climits>没理解是 C++ 中一个非常重要的头文件,它提供了各种。简单来说,它帮你搞清楚你使用的整数类型(如intcharlong等)在当前的计算机系统上能表示的最大数和最小数分别是多少。宏名称 (Macro Name)含义 (Description)典型值(32位系统) (Typical Value on 32-bit Systems)CHAR_BITcharchar8CHAR_MINcharchar-128 或 0 (取决于默认符号)
2025-09-16 17:22:23
1254
原创 找到字符串中所有字母异位词,题目是什么意思,没理解
你可以把这个题目想象成一个“字母配对”游戏:字符串p是一个模板,你要在长字符串s中找到所有那些字母组成和模板一模一样的小片段,并告诉我们这些小片段都是从s的哪个位置开始的。希望这个解释能帮助你完全理解题目!理解之后,实现代码就会更有方向。
2025-09-15 19:48:08
510
原创 u_set.emplace(nums[i]); // 使用 emplace 方法高效插入元素
+i) {// 使用 emplace 方法高效插入元素u_set.emplace(nums[i])是什么含义是 C++ 中向无序集合()插入元素的一种高效方法。
2025-09-14 20:37:06
323
原创 最长连续序列是什么意思
最长连续序列是什么意思最长连续序列是算法问题中一个常见的概念,它指的是在一个中,找到的最长序列(该序列中的元素在原数组中)的长度。为了帮你快速理解,我们先来看一个经典例子:对于数组,其数值上能构成连续递增的最长序列是,因此最长连续序列的长度是 。
2025-09-14 20:35:49
249
原创 寻找重复数 快慢指针
注意:这段代码实现了Floyd判圈算法(龟兔赛跑算法)来查找数组中的重复数字。第二阶段将一个指针重置到起点,然后两个指针以相同速度移动,再次相遇的点就是重复数字。: 输入数组,包含n+1个整数,数字范围在1到n之间,且有一个数字重复。第一阶段使用快慢指针找到相遇点。: 慢指针,每次移动一步。: 快指针,每次移动两步。【参考csdn链接】
2025-09-14 18:45:54
233
原创 swap函数底层剖析
对于自定义类型(如类或结构体),为其实现高效的swap函数非常重要。在类中提供成员swap函数:直接交换内部资源。在类的同一命名空间内提供非成员swap函数:让std::swap能通过 ADL(参数依赖查找)找到你这个高效的版本。#include <algorithm> // 标准库 std::swapprivate:int* data_;public:// ... 构造函数、析构函数、拷贝构造函数、拷贝赋值运算符等// 成员 swap 函数// 交换指针// 交换大小。
2025-09-13 20:56:02
753
原创 三个条件的嵌套关系及结构怎么执行的,请你用文字加以解释说明
摩尔投票算法中的条件判断结构是一个顺序执行的、互斥的条件链,每次循环只会进入一个分支。这种设计确保了算法能够通过"正负抵消"的机制,在O(n)时间内找到多数元素,而且不需要修改原始数组。这种算法的巧妙之处在于它模拟了投票过程:多数派最终会胜出,即使中间经历了很多"抵消"过程。好的,我们来详细解析您提供的这段使用 Boyer-Moore摩尔投票算法 来求解多数元素的C++代码。
2025-09-13 17:54:04
924
原创 #include <vector> 为什么C++代码总是要添加这个,这个是干嘛用的
虽然自动管理内存,但内部的扩容操作(申请新内存、拷贝元素、释放旧内存)可能有性能成本,这就是为什么推荐使用。虽然自动管理内存,但内部的扩容操作(申请新内存、拷贝元素、释放旧内存)可能有性能成本,这就是为什么推荐使用。,它帮你管理一组相同类型的数据,让你可以轻松地添加、删除和访问元素,而无需手动处理复杂的内存分配和释放。如果变小了,多余的元素会被丢弃。(capacity),即预分配内存,但不改变实际元素个数(size),不可直接访问。)效率相对较低,因为需要移动后续的所有元素,时间复杂度为 O(n)。
2025-09-13 15:33:11
925
原创 std::sort(nums.begin(), nums.end());为什么要出现std::
中的是为了明确指定你所使用的sort函数是 C++ 标准库中定义在std命名空间里的版本。
2025-09-13 15:11:43
252
原创 for (int num : nums) { 和for (int i = 0; i < nums.size(); ++i) {的区别和联系
您可以这样理解:是一种更现代、更简洁、更安全的“只读”遍历方式(除非你显式使用引用),它体现了“我关心的是元素本身,而不是它在哪里”的意图。++i)是一种更底层、更灵活的遍历方式,它保留了索引的控制权,让你能进行更复杂的操作。在您图片的特定算法中,由于只需要访问元素的值而不需要索引,for (int num : nums)是更优的选择,因为它写起来更简单,且完全避免了越界风险。是现代 C++ 中遍历序列容器的重要语法糖,它能简化代码、避免手动操作迭代器可能带来的错误,如越界。
2025-09-13 14:54:47
704
原创 C++里面public和private分别代表什么
简单来说:使用public来定义类该做什么(接口)。使用private来隐藏类如何做(实现细节)。合理运用public和private能有效提升代码的安全性可维护性和模块化程度,是C++面向对象编程的基石。
2025-09-13 13:34:21
984
原创 除自身以外数组的乘积是什么意思
除自身以外数组的乘积”指的是对于一个给定数组nums,计算一个新的数组answer,其中answer中的每个元素answer[i]等于原始数组nums中除了nums[i]这个元素之外,所有其他元素的乘积。为了帮你直观理解,我们来看一个例子。假设有一个数组,那么:对于i=0(元素是1),除自身外的乘积就是,所以。对于i=1(元素是2),除自身外的乘积就是,所以。对于i=2(元素是3),除自身外的乘积就是,所以。对于i=3(元素是4),除自身外的乘积就是,所以。因此,最终得到的answer。
2025-08-27 23:16:52
538
原创 轮转数组或者旋转数组-力扣189
特性您的自定义reverse函数C++ 标准库函数区间约定左闭右闭左闭右开反转前k个元素的调用参数含义right是最后一个元素的索引last是最后一个元素之后的迭代器等效关系right≈last - 1last≈right + 1反转数组指定区间(左闭右闭)编辑reverse函数需关注:数据结构特性(数组/字符串/链表);语言内置支持(如Python切片、C++标准库);自定义需求(如部分反转或原地操作)。
2025-08-27 23:08:12
1214
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅