
1. 面试前的整体备战思路别急着刷题先把方向盘握住先说结论58同城算法工程师的面试考察范围并不偏门但非常看重基础功底的扎实程度和工程落地的思维。我刷完2023年的真题之后最大的感受是——它不像某些大厂那样故意刁难人也不像某些小厂那样面试全靠聊而是很典型的互联网中大型平台风格数据结构与算法是敲门砖机器学习基础是分水岭最后还要看你能不能把理论用到实际业务场景里。我当时准备的时候没有一上来就闷头刷题而是先做了两件事第一把面试题按照考察维度做了分类第二针对58同城的业务模式分类信息、本地生活服务、招聘房产二手交易等想清楚算法工程师在里面到底要解决什么问题。这个思路帮我省了大量无效准备时间所以也想分享给正在备战的人。先说分类。2023年的真题大致可以分成四块经典算法与数据结构基础数组、链表、树、排序、字符串匹配等机器学习与深度学习理论LR、GBDT、集成学习、优化算法等手撕代码与现场推演快排、KMP、堆排、动态规划题等业务场景题与工程落地题特征工程、模型评估、AB实验等这个分类不是拍脑袋分的而是对应了算法工程师日常工作的核心技能树你既要能写对一段逻辑严密的代码也要能说清楚一个模型为什么有效更要想明白模型上线后怎么评估、怎么迭代。再说业务视角。58同城的业务特点是“连接人和服务”招聘、房产、二手车、本地生活服务都是典型的双边市场。算法工程师在里面做的事情无非是匹配效率优化把合适的人和服务对上、反作弊识别虚假信息、排序推荐让用户更快找到想要的东西、以及风控防止交易环节中的各种风险。所以面试官问你“用过哪些机器学习算法”不是随口一问而是在考察你有没有能力把模型落到这些具体的业务痛点上。1.1 热词背后的真实考点映射网上关于“58同城2023算法工程师面试题”的热搜词里出现了KMP算法、粒子群算法原理、堆排序算法、贪心算法、Dijkstra算法、模拟退火算法、KL散度等一堆关键词。看着挺吓人但仔细拆解就会发现真正高频出现的核心考点其实很集中。KMP算法出现频率极高因为它是一道非常经典的手撕字符串匹配题既考察对next数组的理解也考察代码功底。粒子群算法、模拟退火算法这类启发式优化算法一般是出现在问你“除了梯度下降你还知道哪些优化方法”这种开放型问题里属于加分项。堆排序和快排则是手撕代码的高频题因为实现简单、边界条件多最能反映出一个人写代码的细致程度。另外KL散度KL ELBO会出现在问VAE变分自编码器或者生成模型的地方说明面试官对深度学习前沿有一定关注。Dijkstra算法和图论相关内容可能会以算法题形式出现也可能结合业务场景来问比如本地生活服务里的最短路径规划。我的建议是不要被这些名词吓到它们基本都是算法工程师知识体系里的“常规配置”。你需要做的是把每个算法背后的原理搞清楚把代码写熟练然后能用自己的话讲明白“它是什么、解决什么问题、有什么优缺点、在什么场景下用”。1.2 参考资料挑选与复习路线规划市面上算法面试的资料很多但不建议贪多。我实际用下来的组合是LeetCode高频题重点做前200题 两本经典书《剑指Offer》和《算法导论》的精选章节 机器学习基础李航的《统计学习方法》前几章 吴恩达的机器学习课程笔记。LeetCode做题有个小技巧按标签分类刷比随机刷效率高得多。数组、字符串、链表、树、动态规划、贪心、图这七个大类覆盖了面试中90%以上的手撕代码题。每个类别做20-30道经典题把套路吃透比盲目刷500题有用得多。《剑指Offer》里的题是面试的“母题”很多面试题都是它的变体一定要反复做。比如“重建二叉树”“字符串的排列”“连续子数组的最大和”这些题在58同城的面试里都出现过同类型。《统计学习方法》重点看感知机、K近邻、朴素贝叶斯、决策树、逻辑回归、SVM这几章这些是机器学习面试题的核心来源。深度学习部分面试前把MLP、CNN、RNN的基本原理过一遍就够除非你明确面试的是CV或NLP方向的算法岗那就需要准备得更深。2. 数据结构与算法核心题拆解KMP、排序、堆排是三大护法数据结构与算法基础这部分是算法工程师面试的入场券。58同城2023年的面试题里这一块考得非常扎实。我挑了几个最具代表性的题目做详细拆解每一个都会讲清楚原理、手撕要点、以及面试官考察的真实意图。2.1 KMP算法与next数组一道题看穿你的字符串功底KMP算法在热搜词里出现了两次这绝不是偶然。字符串匹配是算法面试的高频考区而KMPKnuth-Morris-Pratt算法是最经典的高效匹配算法。先还原一下题目本身对于模式串 pabacaba要求计算其 next 数组其中 next[i] 的定义是模式串前 i 个字符组成的子串中最长相同前后缀的长度不同资料对next数组定义略有差异有的从0开始有的从-1开始面试时一定要和面试官确认清楚。我当时在考场上的推导过程是这样的模式串是abacaba长度是7。我们要求每个位置i对应的next值核心是找“前缀后缀相等的最长长度”。i0时子串是a最长相同前后缀长度为0单个字符没有真前后缀。i1时子串是ab前缀有a后缀有b不相等next0。i2时子串是aba前缀有aab后缀有baa最长相等的是a长度1next1。i3时子串是abac前缀aababa后缀bacacc没有相等next0。i4时子串是abaca前缀aababaabac后缀bacaacacaa最长相等的是a长度1next1。i5时子串是abacab前缀aababaabacabaca后缀bacabacabcababb最长相等的是ab长度2next2。i6时子串是abacaba前缀aababaabacabacaabacab后缀bacabaacabacabaababaa最长相等的是aba长度3next3。所以得到的next数组是[0, 0, 1, 0, 1, 2, 3]。面试官除了让你求next数组很大概率会追问为什么要求最长相同前后缀它和匹配时的回退有什么关系这个问题才是考察的重点。答案是最长相同前后缀决定了当某一位匹配失败时模式串可以直接向右滑动多少位。假设我们在匹配文本串时模式串的 j 位置匹配失败那么我们可以直接将 j 回退到 next[j-1]或按具体定义调整而不是从头开始。这样就避免了重复匹配我们已经知道匹配成功的前缀部分将算法的时间复杂度从暴力匹配的O(m*n)降到了O(mn)。手撕KMP的代码模版我建议背熟下面这个版本以next[i]表示前i个字符组成子串的最长相同前后缀长度next[0]0void computeNext(const string p, vectorint next) { int m p.size(); next.resize(m); next[0] 0; int j 0; for (int i 1; i m; i) { while (j 0 p[i] ! p[j]) { j next[j - 1]; } if (p[i] p[j]) { j; } next[i] j; } } int kmpSearch(const string s, const string p) { int n s.size(), m p.size(); if (m 0) return 0; vectorint next; computeNext(p, next); int j 0; for (int i 0; i n; i) { while (j 0 s[i] ! p[j]) { j next[j - 1]; } if (s[i] p[j]) { j; } if (j m) { return i - m 1; // 找到匹配位置 } } return -1; }这里有个容易写错的地方while循环里回退时用的是 next[j-1] 而不是 next[j]因为前 j 个字符里的最长相同前后缀长度已经存在 next[j-1] 里。这个细节我第一次写的时候也搞错过调试了半天才反应过来。注意KMP的next数组定义在不同教材里可能不同有“从0开始”和“从-1开始”的差异。面试时如果题目给出了定义务必先按题目定义推导如果没给自己先说清楚你的定义是什么避免和面试官产生沟通偏差。2.2 排序算法全家桶快速排序、堆排序、归并排序必会排序算法是算法面试的“钉子户”58同城的面试题里涉及了冒泡排序、快速排序、堆排序、归并排序等多种。问的方式也多种多样手撕实现、分析时间复杂度、比较稳定性、给出优化思路等。先说我被问到最多的快排。快排的核心思想是分治选一个基准值把数组分成小于基准和大于基准两部分然后递归处理两个子数组。手撕快排时最容易出错的是边界条件的处理。void quickSort(vectorint arr, int left, int right) { if (left right) return; int i left, j right; int pivot arr[left]; // 选最左作为基准 while (i j) { while (i j arr[j] pivot) j--; arr[i] arr[j]; while (i j arr[i] pivot) i; arr[j] arr[i]; } arr[i] pivot; quickSort(arr, left, i - 1); quickSort(arr, i 1, right); }这个版本是“挖坑法”逻辑清晰不容易写错。平均时间复杂度O(n log n)最坏情况O(n^2)当数组本来就是有序的时候表现最差。优化方式是随机选基准或者三数取中面试时如果能主动提出来会很加分。堆排序在热搜词里单独出现说明也是高频考点。要理解堆排序首先要理解堆这种数据结构完全二叉树且父节点的值大于大顶堆或小于小顶堆子节点。堆排序分两步建堆 反复取出堆顶调整。手撕堆排的代码相对较长但核心逻辑就是调整堆给定一个数组和一个父节点位置不断把较大或较小的子节点上移。归并排序考察的要点是“分治”思想和“合并有序数组”的操作。它的额外空间复杂度是O(n)但具有稳定性这在某些场景下很关键。58同城这种业务型公司排序算法不太会考太复杂的变体但一定会问清楚时间复杂度和稳定性因为这两个指标在业务系统里直接决定性能表现。实操心得复习排序算法时不要只背代码一定要自己能画出整个排序过程。面试官很喜欢让你“拿着一个具体数组走一遍快排过程”如果你能对着白板把每一轮的分区结果写出来基本就稳了。2.3 贪心、图论与启发式算法从会做到会聊贪心算法在这批热词里也有一定权重典型的面试题是“跳跃游戏”“分发饼干”“活动安排”等。贪心算法的核心就是每一步做局部最优决策最终达到全局最优。但难的是证明“为什么贪心策略是对的”这个在面试中可能会被追着问。图论算法中Dijkstra算法是经典中的经典。考察点包括解决的问题单源最短路径、使用条件边的权值非负、时间复杂度分析、以及优化方式用优先队列代替线性扫描复杂度从O(V^2)降到O((VE)logV)。在58同城的算法题里Dijkstra可能不会直接考裸题但可能会包装成“外卖配送最短路径”之类的业务场景题。粒子群算法原理、模拟退火算法、剪枝算法这些不是每个面试者都会被问到但一旦问到基本是考察你有没有“算法视野”。我当时被问过除了梯度下降你还知道哪些优化算法我答了模拟退火和粒子群面试官接着问“知道它们的核心思想吗”。比如粒子群算法PSO的核心思想是模拟鸟群觅食行为每个候选解是一个“粒子”粒子有位置和速度每次迭代时粒子向自己的历史最优位置和群体的历史最优位置靠近。它不依赖于梯度信息适合求解不可导或非凸的优化问题。模拟退火的核心思想则是模拟金属退火过程以一定概率接受更差的解从而跳出局部最优——这个“以概率接受差解”的机制是它和贪心最大的区别。我的建议是对这类算法至少要能说清楚“思想、适用场景、优缺点”三个层面不需要能手撕完整代码。它们是你知识面的体现属于面试中的加分项。3. 机器学习与深度学习理论从公式到业务的理解如果说数据结构和算法是面试的第一关那机器学习基础和深度学习理论就是算法工程师面试的硬核关卡。58同城2023年的面试题里这部分内容占比很高而且面试官问得比较深不是那种“你说说什么是过拟合”就完事的level。3.1 经典模型考点逻辑回归、决策树、GBDT与XGBoost逻辑回归是机器学习面试题中永远不会缺席的模型。为什么因为它是最简单的“神经元”也是理解深度学习的基础。面试必问的几个点包括逻辑回归的损失函数为什么用交叉熵而不是均方误差逻辑回归如何处理多分类问题以及逻辑回归为什么是线性模型。对于第一个问题核心答案是逻辑回归的输出经过sigmoid函数压缩到0-1之间如果用均方误差作为损失函数目标函数是非凸的容易陷入局部最优而交叉熵损失对应的是极大似然估计目标是凸函数可以通过梯度下降可靠地找到全局最优解。这个问题我建议你能从头推导一遍。决策树相关的考点集中在特征选择上信息增益ID3、信息增益比C4.5、基尼指数CART。面试官可能会问“ID3和C4.5的区别是什么”“CART树为什么用基尼指数不用信息增益”回答的关键是理解每种准则背后的直觉——信息增益偏好多取值的特征所以用信息增益比来做归一化基尼指数计算起来更快而且不涉及对数运算。GBDT和XGBoost是业务算法团队最常使用的模型所以也是面试官最爱问的对象。常见的考察思路是连环问GBDT的核心思想是什么加法模型前向分布算法决策树基学习器GBDT和随机森林的区别在哪里RF可以并行训练而GBDT必须串行RF降低了方差而GBDT降低了偏差RF对异常值不敏感而GBDT敏感XGBoost在GBDT基础上做了哪些改进加入了正则化项、二阶泰勒展开、支持列抽样、近似直方图算法等。我当时回答XGBoost的改进时用了一个生活化的类比如果说GBDT是一个只知道当前怎么走最好的“目光短浅的攀登者”那XGBoost就是不仅看当前梯度方向还要看下一步坡度变化率的“带望远镜的攀登者”。它利用了一阶导数和二阶导数信息走得更稳更精准。面试官听完之后很满意说明类比对沟通很重要。3.2 模型评估与调优过拟合、正则化、交叉验证模型评估与调优是算法工程师面试里容易被忽视但一定会考的内容。58同城这类业务型公司特别看重这块因为你调的模型要上线服务用户评估如果做不好直接影响业务效果。过拟合是必考题目。面试官会问你过拟合是什么怎么检测怎么解决逻辑上要答全不能只答一个“加正则化”。我建议的回答框架是过拟合表现为训练集表现好、验证集表现差检测方法就是比较训练集和验证集的表现差异解决方案包括增加训练数据、数据增强、降低模型复杂度、添加正则化、Dropout神经网络、早停等。其中“增加训练数据”和“降低模型复杂度”是治本“正则化和Dropout”是治标。交叉验证也是高频考点。你要能说清楚K折交叉验证的原理、为什么比单一训练测试集划分更可靠、以及在实际业务中如何选择K。一般K取5或10数据量越大K可以适当取小数据量小的时候K取大一些能更充分利用数据。还有一个容易被忽略但面试官很爱问的点类别不平衡问题怎么处理58同城的业务里招聘场景的“异常用户识别”、房产场景的“虚假房源识别”都是典型的正负样本极不平衡问题。回答的要点包括重采样过采样、欠采样、调整类别权重、使用评估指标AUC而不是Accuracy、选择对不平衡数据更鲁棒的算法如基于树的模型。3.3 深度学习基础前向传播、反向传播与激活函数深度学习在58同城算法工程师岗位里不一定每个组都用到但面试官会问基础目的是考察你是否具备学习新模型的底层能力。手写反向传播是深度学习面试的经典题目一个简单的两层网络要能从损失函数开始逐步推出每一层参数的梯度表达式。我当时给自己定的标准是能完整推一遍“输入-隐藏层-输出”的BP过程包括链式法则在每一层的具体展开。激活函数也是必问知识点Sigmoid、Tanh、ReLU各自的优缺点为什么ReLU在深度网络中表现更好解决了梯度消失问题、计算更快ReLU有哪些缺点神经元死亡问题以及有哪些改进方案LeakyReLU、PReLU、ELU等。另外面试官可能问你在实际项目中怎么选择激活函数以及在CNN里为什么每一层卷积结束后都要接一个非线性激活函数。这个问题的答案是如果没有非线性激活函数多层线性变换叠在一起还是线性变换模型的表达能力就受限了堆多少层都没有意义。注意深度学习这块别只背概念。面试官如果深入问下去很可能会让你写一个简单的softmax函数或者手推一下sigmoid的导数。这些细节平时不注意的话现场很容易懵。4. 手撕代码与场景题实录三轮技术面的真实还原面试的实操环节往往决定最终结果。这一节我按照2023年58同城算法工程师的实际面试流程把三轮技术面的典型题目和应对策略还原一遍大家可以根据这个节奏做模拟训练。4.1 第一轮在线笔试限时两小时算法题是主战场第一轮通常是线上笔试时间90-120分钟2-3道算法题。题目难度整体中等偏上不会超过LeetCode中等难度但需要注意时间分配。我遇到的笔试题里有一道是和“TopK”相关的给定一个长度为N的数组找出其中最大的K个数。这题有好几种解法排序取前KO(N log N)、堆O(N log K)、快排partition平均O(N)。最优解是用堆或者partition因为只需要维护一个大小为K的小顶堆遍历一遍数组即可。这类题目在58同城的笔试题里出现频率很高因为它能考察你“知不知道在资源受限的情况怎么选最优算法”。我当时还用了大顶堆的变体思路和面试官做了讨论——如果是海量数据内存放不下时用堆配合外部排序来处理TopK问题。笔试环节的实操建议先把所有题目读一遍按难度排优先级先写有把握的题。写代码之前先在注释里理清思路避免写着写着逻辑混乱。边界条件一定要检查空数组、单元素、全是相同数字等。时间复杂度写清楚面试官会看。4.2 第二轮技术面基础理论追问与手撕代码现场第二轮的面试官通常是一线技术骨干或团队leader会深入考察你的理论基础和代码能力。我当时被问到的第一个题是“实现一个LRU缓存淘汰算法”。这个题在互联网公司面试中出现的频率极高原因在于它同时考察了数据结构组合使用能力和工程思维。核心数据结构是哈希表双向链表哈希表用于O(1)查找双向链表用于维护访问顺序。每次get或put一个key时如果key存在就把这个节点移动到链表头部如果缓存满了就淘汰链表尾部的节点。这个题考察的内容其实是日常工程中很常见的技术比如缓存系统、Redis内存淘汰策略面试官会顺着这个题目问Redis的内存淘汰机制交叉考察你对中间件是否了解。第二轮还可能会让你在白板/在线编辑器上写一个单例模式或者实现一个线程安全的计数器。这类题看似简单实际是在考察并发场景下的代码质量要能主动说出volatile、synchronized、AtomicInteger等不同方案的取舍。4.3 第三轮总监面业务场景与综合方案设计第三轮通常是团队负责人或总监面考察的重点从“你会不会做”转向“你做过什么、遇到问题怎么解决、能不能从业务角度思考问题”。58同城算法一面如果聊得深入会结合具体业务场景发问。我被模拟过的一道题是如何识别虚假招聘信息这个题非常典型因为它和58同城的主营业务强相关。这类题的作答思路我建议按以下框架来组织问题定义虚假招聘信息定义清楚了才能建模。是识别欺诈性职位还是识别不符合平台规则的夸大宣传特征工程文本特征关键词、职位描述的异常模式、发布者行为特征新号、高频发布、凌晨发布、联系方式特征手机号历史关联的举报次数、以及图像特征公司LOGO是否盗用等。模型选型使用GBDT或XGBoost做二分类冷启动阶段用规则引擎兜底。评估指标这块要用召回率和精确率的平衡因为漏掉虚假信息比误杀正常信息更严重但误杀率也要控制在一定范围。上线后的迭代线上反馈数据回流定期重训模型。这种问题没有标准答案面试官其实看的是你的思考框架是否完整。我当时主动提到了特征工程里“联系方式关联图谱”这个点面试官明显感兴趣追问了很多细节。所以我的经验是平时多积累一些业务上的具体案例面试时能抛出自己的独到见解比单纯复述理论要加分得多。5. 高频补充考点分布式锁、Redis、线程池与Linux算法工程师面试并不只考算法和机器学习计算机基础也会问。根据2023年的面试题反馈以下四个方向出现频率较高值得在冲刺阶段集中补一下。5.1 Redis面试题缓存三兄弟与分布式锁Redis相关内容在热搜词里单独出现说明出镜率很高。算法工程师面试问Redis重点一般在缓存穿透、缓存击穿、缓存雪崩这“三兄弟”以及分布式锁的实现方式。缓存穿透是指查询一个不存在的数据请求直接打到数据库解决方案是布隆过滤器或者缓存空值。缓存击穿是指一个热点key过期瞬间大量请求打到数据库解决方案是互斥锁或逻辑过期。缓存雪崩是指大量key同时过期或者Redis宕机导致请求全部打到数据库解决方案是过期时间加随机值、多级缓存。分布式锁的实现是重点基于Redis的SETNX 过期时间、基于Redisson的看门狗机制、以及基于ZooKeeper的临时顺序节点。面试官会问为什么不能只用SETNX如果业务执行时间超过了锁的过期时间怎么办你需要答出“锁续期”的思想。5.2 线程池与并发编程3分钟说清核心参数线程池在Java面试题里很常见算法工程师的面试也有一定概率遇到因为很多算法服务是Java写的。线程池的七个核心参数核心线程数、最大线程数、空闲线程存活时间、时间单位、任务队列、线程工厂、拒绝策略至少要说得出名字和含义还要能说出线程池的执行流程核心线程满了进队列队列满了创建新线程达到最大线程数后走拒绝策略。我当时还准备了“当核心线程已满、队列已满、最大线程数也满了的时候后续提交的任务去哪了”这个问题但实际上这类问题在算法岗出现概率较低如果时间有限优先准备分布式锁和缓存相关的内容。不过线程池的问题我觉得还是提一下因为它考察了程序员的系统工程基础在算法工程师的日常工作中确实会用到。5.3 MySQL与Linux索引原理和日志排查MySQL索引是很多技术面试题的高频内容算法工程师面试也有一定概率被问到尤其是当你的简历里写了“负责特征存储和离线数据 pipeline”的时候。重点掌握B树索引结构、聚簇索引与非聚簇索引的区别、联合索引的最左前缀原则、以及前缀索引等索引优化技巧。Linux面试题则更偏实践常见的考点包括查看CPU使用率的命令top、vmstat、查看内存的命令free、查看磁盘IO的命令iostat、查看网络连接状态的命令netstat、ss、以及文本处理三剑客grep、sed、awk。对算法工程师来说一旦模型要部署上线日志排查和线上问题定位能力就非常重要。建议把常用命令手打练习几遍不要只停留在“知道”的层面。6. 经验汇总我来按自己的经验给你们一份避坑清单前面的内容已经把考点和解题思路拆得比较细了。最后这一部分我从“过来人”的角度分享几条关于准备这场面试我个人的经验和体会不光是知识层面也包含了备考节奏和现场发挥的细节。6.1 备考节奏三轮递减法不要贪多根据我自己的经验算法面试准备最怕的就是“什么都想抓到最后什么都抓不住”。比较稳妥的方式是三轮递减法第一轮覆盖为主把数据结构与算法、机器学习基础、深度学习基础的知识点全面过一遍搭建知识框架每天固定刷2-3道LeetCode题保持手感。这一轮的重点是“都知道”。第二轮重点突破针对自己的薄弱环节集中练习。比如KMP不熟就连续做5道字符串匹配题DP不好就专门刷DP的经典题。这一轮的重点是“都搞懂”。第三轮模拟冲刺重点背高频题做模拟面试。找朋友或者自己对着镜子把每个知识模块的常见问题的答案口头讲一遍看能不能讲清楚。这一轮的重点是“都讲得出”。我把这个节奏分享出来是因为我自己第一轮准备时就是吃了“贪多”的亏想着把 LeetCode 刷个 300 题再投简历结果进度拖慢了很多题刷完也就忘了。后来改为“按题目类型吃透套路”效率反而高了不少。6.2 现场应变的三个小技巧技巧一遇到不会的题先说思路再动手。很多面试者拿到题就闷头写代码写到一半发现自己思路错了不仅浪费时间还影响心态。正确做法是先跟面试官说“我打算用XXX算法时间复杂度是O(XXX)”看面试官的反应如果有提示或纠正及时调整。这也是面试官考察沟通能力的方式。技巧二推导公式的时候慢一点没关系但步骤要清晰。尤其是手推逻辑回归梯度、BP传播这类过程面试官不是看你推得有多快而是看你的逻辑是否严密。每一步变换都写清楚用什么法则遇到不常用的变形可以先暂停想清楚再继续。技巧三卡壳的时候别沉默。如果某道题确实卡住了可以主动说“我现在的思路是XXX但是在XXX地方卡住了”面试官多半会给你提示。面试官最怕的不是你会不会而是你一言不发干瞪眼。6.3 最后的复盘题库是死的思路是活的经历过58同城2023年算法工程师面试之后我的一个整体感受是相比很多互联网公司这轮面试更看重基础和综合能力而不是偏题怪题。题库本身是固定的如果你只是背答案遇到稍微变形的题目就可能露馅。但如果你把每个知识点的“为什么”搞懂了万变不离其宗。准备面试的过程虽然辛苦但只要建立起自己的知识框架面试也只是把框架里的内容讲给面试官听而已。这套框架不仅对58同城有效对任何一家公司的算法工程师面试都适用。希望这些拆解能帮正在准备的人少走一些弯路后面面试顺利。