leecodecode【面试150】【2026.7.9打卡-java版本】 这个是二维动态集合基本都是f[i][j] min/max [i-1][j] /[i][j-1]/[i-1][j-1] 某个数字三角形最小路径和要点这个是从下到上class Solution { public int minimumTotal(ListListInteger triangle) { int n triangle.size(); int[][] f new int[n][n]; for(int j 0; j n; j){ f[n-1][j] triangle.get(n-1).get(j); } for(int i n-2; i 0; i--){ for(int j 0; j i; j){ f[i][j] Math.min(f[i1][j], f[i1][j1]) triangle.get(i).get(j); } } return f[0][0]; } }最小路径和要点从两个方向过来class Solution { public int minPathSum(int[][] grid) { //二维dp,注意n,m int m grid[0].length; int n grid.length; int[][] dp new int[n][m]; dp[0][0] grid[0][0]; for(int i 1; i m; i){ dp[0][i] grid[0][i] dp[0][i-1]; } for(int j 1; j n; j){ dp[j][0] grid[j][0] dp[j-1][0]; } for(int i 1; i n; i){ for(int j 1; j m; j){ dp[i][j] Math.min(dp[i-1][j], dp[i][j-1]) grid[i][j]; } } return dp[n-1][m-1]; } }不同路径 II要点有个阻碍阻碍的地方dp0class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { //二维dp int n obstacleGrid.length; int m obstacleGrid[0].length; int[][] dp new int[n1][m1]; dp[0][1] 1; for(int i 0; i n;i){ for(int j 0; j m; j){ if(obstacleGrid[i][j] 0){ dp[i1][j1] dp[i][j1] dp[i1][j]; } } } return dp[n][m]; } }最长回文子串要点状态转移方程 s[i][j] 字符串相等s【i-1】【j-1】class Solution { public String longestPalindrome(String s) { //动态规划dp【i1】【j1】 dp【i】【j】1 int n s.length(); int strat 0; boolean[][] dp new boolean[n][n]; int max 0; for(int i 0; i n; i){ dp[i][i] true; max 1; strat i; } for(int i 0; i n-1; i){ if(s.charAt(i) s.charAt(i1)){ dp[i][i1] true; max 2; strat i; } } for(int len 3 ; len n; len){ for(int i 0; i len-1 n; i){ int j i len -1; if(s.charAt(i) s.charAt(j) dp[i1][j-1]){ dp[i][j] true; max len; strat i; } } } return s.substring(strat,stratmax); } }交错字符串要点也是状态转移dp【i][j] dp[i-1][j] || dp[i][j-1] 字符串相等吗class Solution { public boolean isInterleave(String s1, String s2, String s3) { int n s1.length(), m s2.length(), t s3.length(); if (n m ! t) return false; boolean[][] dp new boolean[n 1][m 1]; dp[0][0] true; for (int i 0; i n; i) { for (int j 0; j m; j) { int p i j - 1; // s3 当前位置索引 if (i 0) { dp[i][j] dp[i][j] || (dp[i - 1][j] s1.charAt(i - 1) s3.charAt(p)); } if (j 0) { dp[i][j] dp[i][j] || (dp[i][j - 1] s2.charAt(j - 1) s3.charAt(p)); } } } return dp[n][m]; } }编辑距离要点f[i][j] min/max [i-1][j] /[i][j-1]/[i-1][j-1] 某个数字class Solution { public int minDistance(String word1, String word2) { //二维dp int n word1.length(); int m word2.length(); int[][] dp new int[n1][m1]; for(int i 0; i n; i){ dp[i][0] i; } for(int j 0; j m; j){ dp[0][j] j; } for(int i 1; i n; i){ for(int j 1; j m; j){ if(word1.charAt(i-1) word2.charAt(j-1)){ dp[i][j] dp[i-1][j-1]; }else{ dp[i][j] Math.min(dp[i-1][j], Math.min(dp[i][j-1],dp[i-1][j-1]))1; } } } return dp[n][m]; } }最大正方形要点minclass Solution { public int maximalSquare(char[][] matrix) { //二维dp //dp[][] dp[i-1][j-1] int n matrix.length; int m matrix[0].length; int[][] dp new int[n1][m1]; int ans 0; for(int i 1; i n; i){ for(int j 1; j m; j){ if(matrix[i-1][j-1] 1){ dp[i][j] Math.min(dp[i-1][j], Math.min(dp[i][j-1], dp[i-1][j-1])) 1; ans Math.max(ans, dp[i][j]); } } } return ans*ans; } }随机知识️ 模块一底层架构与推理机理必考基础大厂面试第一题往往从这里切入考察你是否真的懂“物理运行逻辑”。本质基于Transformer的自回归概率模型核心是预测下一个Token。Prefill vs Decode核心考点Prefill预填充处理Prompt全量并行计算生成KV Cache。耗时决定TTFT首Token延迟受算力FLOPS瓶颈限制。Decode解码自回归逐个吐字利用KV Cache增量计算。耗时决定TPS每秒吞吐量受显存带宽Memory Bandwidth瓶颈限制。KV Cache本质缓存的是每层Self-Attention的K矩阵和V矩阵浮点数张量不是自然语言文本。显存占用 2 * Layers * Seq_Len * Hidden_Size。面试话术“超长上下文首字慢是因为Prefill阶段计算量随长度平方增长而生成过程靠KV Cache避免重复计算但显存压力巨大所以业界才需要PagedAttention如vLLM来管理。”⚙️ 模块二数据、训练与对齐算法核心考察你是否清楚模型“聪明的来源”和“变乖的过程”。Tokenizer模型不看字看TokenBPE/SentencePiece。同一段中文在不同模型Token数不同源于词表合并规则差异。这直接影响成本计费和跨语言表现。三阶段训练流程预训练Pre-training海量文本自监督学习奠定世界知识和语言分布。Base Model满腹经纶但不会对话。SFT监督微调用指令高质量回答对教会模型“对话格式”。数据量门槛针对单一任务至少500-2000条通用对话需数万。100条只够做概念验证。RLHF / DPO偏好对齐通过人类偏好排序教会模型“安全与价值观”。知道什么该答什么该拒。Constitutional AI试图用规则减少人工标注寻求Helpful与Harmless的帕累托最优。对齐的核心目标不是让模型只会拒绝而是“该答时有证据地答该停时停不确定时明确说不确定”。 模块三核心能力与致命缺陷认知深度强项In-context Learning上下文学习——给几个例子就能模仿通用模式归纳——极强的泛化推理能力。命门工业界最头疼幻觉模型是“概率分布”而非“知识库”会编造不存在的事实。过时知识截断无法感知训练截止后的新事件。格式不稳定概率采样导致JSON、结构化输出偶尔崩坏。面试话术“本质原因是它存储的是Token间的统计规律而非显式数据库。因此绝不能把LLM当作搜索引擎只能当作‘推理引擎’。” 模块四工程落地与增强大厂生存技能面试官最看重这一块看你如何把“有缺陷的模型”变成“可靠的产品”。提示词工程结构化优秀Prompt 角色锚定 清晰指令 输入上下文 格式约束JSON Schema 兜底策略。本质是压缩概率空间消除歧义。RAG检索增强生成解决幻觉和过时的外挂知识库。核心Prompt原则“仅基于以下参考资料回答禁止使用预训练知识”。Agent工具调用赋予模型“手”和“脚”。关键在于设计决策路由——让模型决定何时调用API查天气/算数何时直接回答。解码约束工程捷径固定格式如JSON不一定要靠SFT硬学可用Guidance / JSON Mode在解码层强制约束性价比极高。 模块五大厂面试的“升维打击”认知定薪分水岭如果你能在基础之上说出下面这几点前沿商业洞察这就是你拿SSP Offer的资本Scaling Law规模法则模型能力与参数量、数据量、算力呈幂律关系。但大厂现在已从“盲目堆参数”转向“MoE混合专家”——用稀疏激活降低推理成本。长上下文的工程代价上下文从128K扩展到1MKV Cache显存呈线性增长。这是为什么大厂狂卷Multi-Query Attention (MQA)和Grouped-Query Attention (GQA)的原因——为了压榨显存。Post-Training后训练的重要性基座模型决定上限后训练SFTRLHF决定下限和产品体验。大厂算法团队80%的人力其实不在预训练而在构造SFT数据和RLHF偏好对。成本意识面试必杀技落地时能用Prompt解决的绝不微调能用小模型如7B解决的绝不用大模型如70B。 终极面试腹稿串联所有模块面试官“请谈谈你对大模型的理解。”标准满分回答框架“面试官我认为大语言模型本质上是一个基于Transformer的通用推理引擎。在原理上它通过自回归预测下一个Token推理分为Prefill建立KV Cache和Decode逐字生成两阶段前者制约首字延迟后者受限于显存带宽。在能力构建上它经历了预训练注入知识→ SFT学习对话格式→ RLHF/DPO对齐人类偏好三步。需要特别强调的是SFT解决‘会不会答’RLHF解决‘该不该答’两者不能混淆。落地时它存在幻觉和知识过时的天然缺陷所以不能裸用必须结合RAG补充实时知识通过结构化提示词强制输出格式必要时辅以工具调用处理精确计算。最后作为工程师我的核心考量是成本与效果的权衡能用System Prompt约束的绝不用微调能用7B MoE模型承载的绝不调用70B稠密模型。”碎碎念后续会更新每天学习的八股和算法 题开始准备秋招的第60天。努力连续更新100天以后每天就按秋招项目【java agent】科研必做项目算法八股锻炼身体来总结。总结60天了唯一的收获应该就是不怕看代码了相信自己1.算法面试150 133/150 2h2.秋招项目【java 项目】【agent 项目 】3.科研要跑一下4.实习7h6.背八股2h7.锻炼身体总结今天看来大模型的八股继续加油继续整理项目的内容【这周周末加油看看能不能来个大总结吧也得抓紧时间总结出个完整版应对秋招了】