小编亲身经历,面试35W的AI互联网大厂,现场手撕一道经典的算法题!

几率大的现场手撕算法面试题(含答案) 现场手撕算法面试题个人经历比较少,但会收集网上面经,一般线下要求手撕算法的次数更多,其次就是来个共享链接自己在电脑上写代码。这个系列将会持续更新。 先提前了解一些常用的类以及方法: 类 Scanner: 从控制台输入: 方法一: Scanner sc = new Scanner(System.in); //构造一个Scanner对象实例 String queue = sc.next(); //接受... 阅读详情

点击上方“菜鸟学Python”,选择“星标”公众号

重磅干货,第一时间送达

今年的就业形式虽然非常的严峻,但是仍旧有着不少的机会,小编本身是做深度学习的算法的,虽然本身的水平可能比较差,但是也有幸得到了一个AI互联网大厂的面试资格,薪资待遇什么的还是很好的。

但是要求也是很高的,面试当天就是高强度的4个小时面试。这其中当然是少不了手撕代码,小编今天就带着最新鲜的面试题,跟大家一起分享。

01.题目引入-基础版

手撕代码是第二个面试官在面试最后提出的。开始的基础题目就是常见的爬楼梯问题。

题目:小明要上楼,他一次只能上一个台阶或者两个台阶,问他上N阶台阶有多少种方法呢。

面对这个问题,想必有过《剑指offer》或者力扣刷题经验的伙伴们,肯定暗自窃喜,这问题不就是简单的动态规划问题或者利用递归方式进行解决嘛!确实,这道题,可以按照以下的思路进行解决。

入下图所示:

  • 当N=1,也就是只需要爬一个台阶时,那么只有1种方法;

  • 当N=2时,此时就有两种方法,要不就是每次上一个台阶,也就是1、1,要不就是直接上两个台阶;

  • 那如果N=3时,此时,小明只可能从第1个台阶直接走两步到第三个台阶,或者从第二个台阶,直接走一步上来;

  • 对于N=4的情况,同样,小明只能从第三个台阶走一步或者是从第二个台阶走两步上来;

  • 然后对于N,就是从第N-1个台阶走一步或者是从N-2个台阶走两步上来。

我们总结成公式的表达方式就是f(N) = f(N-1) + f(N-2)。而前面我们求出f(1) = 1,f(2) = 2。这是不是就很简单了,我们直观上就直接可以利用递归来求取了。例如:

f(5) = f(4) + f(3),而f(4) = f(3) + f(2) ,而f(3) = f(2) +f(1) = 3。于是可以求出f(5) = 8。也就是说小明跳到第5个台阶一共有8种方法。如果小伙伴不信的话,可以自己去跳以下试试。当然,这里小编也给出了8种不同的方法:

1、1、1、1、1

1、1、1、2

1、1、2、1

1、2、1、1

2、1、1、1

1、2、2

2、1、2

2、2、1

至于程序,那也是很简单的,小编直接给出动态规划的方法程序,因为当N很大时,递归会造成很多的计算浪费,同时时间消耗也比较大。

02.进阶版-花费最少的力气爬楼梯

可能时面试官觉得我做的太轻松了,于是他就进一步问了一个问题,如何花费最少的力气来爬楼梯。

题目描述是这样的。基础问题不变,小明还是每次只能上一步或者是两步,但是现在的问题是每上一个楼梯都会消耗一定的能量,称之为cost,例如cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] ,如下图所示:

小明分别走1、3、5、7、8、10号台阶,总的能量损失为6。用最小的能量登上了所有的台阶,那我们又如何分析这道题呢,下面小编带大家一步一步仔细分析。

03.手撕面试题

首先,我们用dp数组来保存经过每个台阶的最小能量的损耗。例如,dp[0]表示上0个台阶能量损耗为0,那么dp[1] = 1,而dp[2]为100;

然后,小明每次只能上一个或者两个台阶,如果一个一个上台阶的话,那么dp[2]=1+100=101 > 100。所以就一次上两个就是100;

接着分析,那么dp[3]为多少呢,我们知道,第三个台阶可以从第1个台阶上两步走到3,也可以从第二个台阶上一个台阶来到第三个台阶;

最后,dp[3] = min(dp[1], dp[2]) + cost[2]。我们递推可以知道dp[N] = min(dp[N-1], dp[N-2]) + cost[N-1]。有了这个状态转移公式,我们便可以编写程序了。

上述程序中,我们对cost的长度进行判断,如果小于1,那么就返回0,如果小于3,那么就返回cost[-1]。否则的话就按照我们上面的状态转移公式进行计算即可。返回最后两个台阶数值的最小值即可。结果也证明了我们的结果正确性。

以上就是小编在面试的时候,遇到的真实的面试 题目。不得不说,对于基础的coding能力还是非常考验的,大家需要在平时多多的刷题,多多积累,才能够从容的分析问题,并得到最终的结果。

如果你觉得本文有帮助,欢迎留言区给个三连!

推荐阅读:

点这里,获取新手福利
2025秋招-AI工程师一定要准备的手撕算法代码题 深度学习手撕代码题 阅读详情

相关推荐

VS2019+CAXACAD2023二次开发教程(一、环境搭建)

CAXACAD2023的二次开发相关文件和库都在的文件夹下。CAXACAD2023的默认开发环境是VS2019,如果是用VS2019的环境话,可以直接安装这个插件,安装好后就可以一键新建的项目,新建的项目会自动帮我们配置好所有的环境,并且生成必要的代码和初始的框架。(本来想用VS2022的,但配置环境太麻烦,用VS2022,增加一个环境变量是可以运行自带的例程的,但新建项目要配置的东西和环境太多,就放弃折腾了)

weixin_42968757的博客 4623

菜鸟集团市场销售一面面经全记录

这份文件是菜鸟集团市场销售岗位一面面试的详细记录。面试官是业务线总监,面试时长约50分钟,氛围良好。面试主要围绕应聘者的经历和简历展开,重点考察其思考能力与对过往经历的深度理解。应聘者分享了面试体验,并推荐使用多面鹅AI进行模拟面试,认为其结构化的答案和复盘功能有助于提升面试表现。面试问题涵盖自我介绍、创业经历、岗位理解、物流行业看法、未来规划等多方面。

offergoose的博客 474

EDA与机器学习融合:智能优化芯片设计流程的工程实践

机器学习作为数据驱动的核心技术,通过从历史数据中学习复杂模式,实现对系统行为的预测与优化。其原理在于构建模型,将输入特征映射到目标变量,从而揭示数据背后的内在规律。在工程领域,这项技术的核心价值在于能够将专家经验转化为可量化、可复用的智能模型,显著提升自动化水平与决策效率。电子设计自动化(EDA)是芯片设计的关键支撑,传统流程高度依赖人工试错,面临参数空间巨大、优化周期长等挑战。将机器学习应用于EDA,能够构建预测模型来预估设计性能(PPA),或通过代理模型加速设计空间探索,实现智能化的设计辅助与优化。本文

weixin_30411239的博客 684

菜鸟物流运营面试流程,同学信誓旦旦地说,Java基础面试常常死在这几个问题上

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。很多人担心学了容易忘,这里教你一个方法,那就是重复学习。打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

2401_84023787的博客 970

ERA5气象数据下载与解压全攻略:Python脚本一键搞定(附错误处理技巧)

本文提供了一套完整的ERA5气象数据自动化处理方案,涵盖从CDS API配置、智能批量下载到高效解压与数据验证的全流程。重点介绍了如何通过Python脚本实现一键式数据下载与批量解压,并分享了实用的错误处理技巧与性能优化策略,帮助科研人员高效获取和处理大规模气象数据。

k8l9m0n的博客 338

AD9176 双通道高速DAC调试记录

AD9176是一款高性能双通道16位数模转换器,支持高达12.6GSPS采样率,专为多频段无线应用设计。该器件集成8通道15.4Gbps JESD204B接口,支持复数/实数数据输入,每通道最大输入速率达3.08GSPS。关键特性包括:48位高精度NCO、灵活的插值滤波器(最高12倍)、优异的动态性能(SFDR达-83dBc@1.84GHz)以及多芯片同步功能。硬件调试需重点关注时钟配置(建议250M基准时钟)、JESD参数匹配及交流耦合设计。测试指标要求SFDR>55dBc@312MHz,实测值可达65d

universaldata的博客 1492

菜鸟面试攻略

大家在找工作时,是不是这样的情景(大致描述一下,自己进行脑补) 1、雄心壮志,准备阶段: 你在网上搜索了大量的面试题目和答案,开始背诵,…… 结果发现:很难记住,好不容易记住了,却忘得很快(宝宝很难)……垂头丧气 ...... 好吧,告诉你:这是因为,网上搜索到的面试题答案,都是大段的晦涩难懂的描述性文字。(砖太烫手了......嘿嘿嘿) 2、忐忑不安,等待面试 面试题没有记住,记住的好像也 ...... 忘了 3、瑟瑟发抖,面试过程 诚惶诚恐、如坐针毡...... 4、七个世纪,

qianfeng_dashuju的博客 752

手把手教你用CH340给正点原子ESP8266烧录固件(附串口调试技巧)

本文详细讲解了使用CH340模块为正点原子ESP8266烧录AT固件的完整流程与关键技巧。核心在于烧录时必须使用3.3V供电,并正确连接GPIO0引脚至GND以进入下载模式。文章涵盖了从硬件接线、软件参数配置到烧录后串口调试验证的全步骤,并提供了常见问题排查方案,帮助开发者一次性成功完成固件烧录。

weixin_29201933的博客 232

华为AI算法岗面试攻略:机考手撕八股项目全解析

在人工智能技术落地加速的背景下,算法工程师的面试考察逐渐从单一理论转向工程实践与基础功底的结合。数据结构与算法中的双指针、动态规划、哈希表等经典知识,是衡量候选人编码基本功的标尺;而机器学习中的过拟合、正则化、Transformer等核心概念,则考验对模型原理的透彻理解。这些技术不仅在实际业务中支撑着推荐、搜索、异常检测等场景,也构成了技术面试中“机考”与“手撕代码”环节的考察重点。华为AI算法岗的面试流程正是这一趋势的典型体现,覆盖机考、手撕、八股、项目深挖等多个维度。本文系统梳理高频考点与实战策略,帮助

weixin_29159127的博客 617

无GPS室内飞行:基于PX4与MID360的FAST-LIO定点悬停实战解析

本文详细解析了基于PX4飞控与大疆MID360激光雷达的无GPS室内飞行技术,重点介绍了FAST-LIO算法在定点悬停中的应用。通过硬件配置、软件环境搭建、坐标系转换等实战经验,帮助开发者解决室内定位难题,实现精准悬停与稳定飞行。

weixin_29056781的博客 262

深入解析Linux驱动开发中的I2C时序及I2C高频面试题

在 I2C 通信中,主设备和从设备的角色有着明确的定义。主设备是发起通信的设备,它负责控制整个通信过程。主设备可以是微控制器、处理器等具有控制能力的设备。

大模型大数据攻城狮的专栏 2765

某程序员辞职后,接6份兼职,月入3w+

对于程序员来说,35岁真的是很关键。如果成为架构师或者是成为管理方面的人才,还是不用担心失业。要是你30多岁还在一线写代码,那被裁的可能性很大。即使你现在没有失业,也说明你能力很一般。,晒出收入以为看错了,网友:“打工皇帝”!这是怎么回事呢?原来该员工说自己现在面临着中年危机,自从被上一家公司裁掉之后,因为没有找到合适的工作。但是家里开销又很大,有2个小孩,没办法只能边找工作,边找一些兼职,另外还能够照顾小孩。

Python84310366的博客 504

电子技术课程设计:声音音量峰值检测显示系统设计

本文介绍了声音音量峰值检测显示系统的设计方案。系统采用分立元件设计,不使用单片机和集成运放,包含电源模块、声音采集放大电路、峰值检测保持模块、比较器、A/D转换及显示控制等部分。麦克风信号经两级晶体管放大后,通过二极管-电容电路检测峰值并保持,再经A/D转换显示为数字值(0000-9999)。系统采用9V电池供电,包含启动/清除控制功能,能指示声音过低或过高状态。详细阐述了各模块电路设计、参数计算和仿真验证,并提供了完整的原理图和PCB布线方案。该系统实现了声音峰值电压的准确检测与数字显示功能。

huanghm88的专栏 257

大厂面试手撕源码之java数组拷贝

深拷贝与浅拷贝的关键之处在于是否分配了新的内存空间。 1.使用for循环进行数组拷贝(深拷贝) int[] array=new int[] {1,2,3,4}; int[] array1=new int[array.length]; for(int i=0;i<array.length;i++) { array1[i]=array[i]; } int[][] array2=new int[][] {{1,3,2},{1,4,5},{4,2,5}}; int[][] array3=ne

qq_44713855的博客 445

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大厂面试为什么总考算法?以及如何避开算法面试。

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法作者 | liuyubobobo来源 | 是不是很酷大厂面试为什么总是考算法?很多同学都问过...

程序员吴师兄的博客 4257

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

75道经典AI面试题,我就想把你们安排的明明白白的!(含答案)

https://www.toutiao.com/a6675561367048552963/ 基础知识(开胃菜) Python 1、类继承 有如下的一段代码: class A(object): def show(self): print 'base show' class B(A): def show(self): print 'derived show' obj = B(...

喜欢打酱油的老鸟 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

如何应对互联网大厂的手撕代码?

在互联网校招界,曾经流传着关于应届生面试互联网大厂的一个传说。 “ 传说某个冕世冠打开视频聊天的窗口时,窗口那头正坐着位男人。他是宿舍里无论春夏秋冬都穿着同一件格子衬衫的唯一的人。 他面容温和,满面油光,略微凹陷的眼窝似乎刚刚熬了几个通宵,稍稍靠后的发迹线展露出绝顶的智慧。穿的虽然是衬衫,但却光鲜亮丽,一点没有水洗多年而产生的褶皱和破败。 他对人说话,总是满口的性能优化最优解时间空间复杂度,叫人半...

业余码农Amazing10的博客 4583

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 233

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 318

把 KV Cache 压到 FP4:BitDecoding-FP4 的算法-系统协同设计复盘

长上下文推理卡在KV Cache的显存与带宽上,而现有FP4方案要么精度崩、要么速度废。这篇文章复盘BitDecoding-FP4如何用三个算法补丁加一个系统重构,在B300上把服务吞吐提升2.4–3.0倍,精度几乎不掉。

helloagent的博客 191

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 594

优选算法:分治-归并排序

交易逆序对的总数

Wangshijie1015的博客 122

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 22

408 算法 06|堆与 Top-K:最小的 10 个数,到底该用数组还是堆

2022(42) 找 100 万个数里最小的 10 个,官方给了"10 元素有序数组"和"大根堆"两种答案。我把两种都实现并数了比较次数:k=10 时两者几乎打平,k=10000 时堆少 111 倍。另附 2021(42) 计数排序的比较次数与稳定性实测。

m0_56226131的博客 353

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 750

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 414
上一篇: 知乎热议:月薪下到 5 千,上到 3 万,计算机专业钱景究竟如何?网友:虚高!...
下一篇: 菜鸟练手!100行代码,用Python制作生肖属相分析仪
菜鸟学Python
博客等级 码龄9年 8066粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值