做IC岗笔试刷题,最怕的不是题难,是方向跑偏。我见过不少人埋头刷了一堆逻辑推理、行测题,结果真到了专业笔试环节,连setup time和hold time的计算都算不利索,白白浪费了备考时间。华为IC岗的笔试(不管是数字IC设计、验证还是FPGA方向)核心就一个字:基础。它不太考偏题怪题,但会把基础概念往深里挖,挖到你怀疑自己到底会不会。这篇文章是第二期,我继续把平时整理的高频题和解析思路拿出来拆,重点放在时序、状态机、跨时钟域和低功耗这些重灾区,争取让准备笔试的朋友少走弯路。
先说清楚,这套题目不是华为官方题库,是历年考生回忆加上我自己的刷题总结。答案也不是唯一标准,很多题考察的是思考过程,比结果更重要。看题的时候别急着背答案,先想清楚“为什么要这么设计”,笔试考的就是这东西。
1. 华为IC岗笔试题型与考察逻辑
1.1 题型构成与考察逻辑
华为IC岗笔试通常是限时作答,题目类型大致分成几块:单选和多选的基础概念题、填空或简答的推导题、Verilog代码阅读或补全题,还有一些会带一点场景设计题。整体偏向数字IC设计和验证方向,模拟IC方向会单独出题,这里主要聊数字方向。
很多第一次参加的人会误判:以为笔试重点是“写出一个能工作的模块”,实际上笔试更看重的是“你知不知道什么时候该用什么结构”。举个例子,让你写一个三分频电路,很多人会直接上手用计数器,稍微有点经验之后才知道,奇数分频的正确打开方式是双沿计数然后组合逻辑处理,或者用状态机。笔试里类似的题,本质上是在考察你对时序本质的理解,而不是背一段可综合的代码。
考察逻辑里还有很重要的一条:错误选项往往长得很像正确答案。选择题里经常出现“把FIFO深度计算跟同步器等效”的干扰项,或者“把多bit信号打拍”这种看似合理的坑。做这类题一定要养成习惯,每看到一个选项先问自己:它说的是不是所有情况都成立?边界条件在哪?
1.2 考点权重分布
根据我刷完几十套回忆题后的统计,华为笔试的高频考点权重大概是这个局面:
- 时序分析(setup/hold/recovery/removal)占两成以上。
- 跨时钟域处理(CDC)和亚稳态问题占将近两成。
- 状态机设计、现代数字设计中常用的同步FIFO、异步FIFO相关概念占一成半。
- Verilog语法、可综合风格、阻塞与非阻塞赋值占一成半。
- 低功耗设计、时钟门控、UPF等占一成。
- 剩下的部分是总线协议(AMBA APB/AHB/AXI常见概念)、存储器接口、DFT基础等。
这个分布说明一个很现实的问题:光会写Verilog过不了笔试,能把电路时序、同步设计和架构权衡讲清楚,才有机会进下一轮。我下面拆解的都围绕这些重点,把“笔试题里最常出现的坑”从头到尾摆清楚。
2. 时序分析与亚稳态高频题
2.1 Setup/Hold计算题:不能再丢分的题
时序分析是华为IC岗笔试里性价比最高的一块,因为只要掌握方法,公式固定、思路固定,基本就是送分题。可偏偏很多人在送分题上翻车,问题多半出在不会看图、不会把寄存器的时序参数带进去。
先看一道经典题。假设电路中有两级寄存器FF1和FF2,FF1的时钟到输出延迟(clock-to-Q)是2ns,FF1到FF2之间的组合逻辑延迟是3.5ns,时钟周期是10ns,FF2的setup time是1ns,请问最小时钟周期是多少?
计算方法是:最小时钟周期 = clock-to-Q + 组合逻辑延迟 + setup time + clock skew(如果存在)。答案是2 + 3.5 + 1 = 6.5ns。如果题目加了一个条件,说时钟偏移是0.5ns且对setup是有利的,那么最小时钟周期可以更短,但如果不加条件,记得默认时钟偏移为0。
再看hold time的计算:hold time的约束条件是 clock-to-Q + 组合逻辑延迟 >= hold time。假设FF1的clock-to-Q是1.5ns,组合逻辑延迟是0.8ns,FF2的hold time是2ns,问是否存在hold violation?答案是1.5 + 0.8 = 2.3ns,大于2ns,所以没有违例。但如果组合逻辑延迟是0.3ns,1.5 + 0.3 = 1.8ns小于2ns,就存在hold violation。这种题在笔试人均出两道以上。
我整理几个必踩的点:第一,题目里可能包含clock skew,分清楚是有利偏移还是不利偏移;第二,多路径时要取延迟最大的一条算setup,取延迟最小的一条算hold;第三,异步复位信号如果复位释放时间靠近时钟沿,同样会触发recovery和removal违例,原理跟setup/hold完全对应,只是针对异步复位端。按这个思路去列公式,基本不会错。
提示:遇到时序题,先在草稿纸上画出寄存器的关系图,标清楚每段延迟的时间和方向,再套公式。直接心算很容易漏掉一个参数。
2.2 亚稳态与同步器:最容易答错的选择题
亚稳态几乎是每次必考的概念,但我发现很多人对它理解是模糊的。亚稳态指的是触发器的数据输入在建立时间和保持时间窗口内发生变化,导致输出端在一段时间内处于一个不确定的中间电平状态,既不是0也不是1。这不是仿真里随便加的delay,而是一个真实的物理现象。
笔试中有一道经典的选择题:单bit信号跨时钟域时,为什么需要两级同步器?答案不是“两级同步器能消除亚稳态”,而是“两级同步器能把亚稳态发生的概率降低到可以接受的范围,让亚稳态在校正时间内收敛到一个有效电平”。很多人选错,是因为把目的和效果混淆了。
还有个常见问法:两级同步器的每一级叫什么?正确叫法是第一级打拍的作用是让亚稳态有至少一个时钟周期的时间去收敛,第二级采样到一个稳定的值。有的资料会告诉你,三级同步器能进一步降低MTBF,但对绝大多数应用,两级足够了。笔试如果问MTBF(平均无故障时间)的相关公式,了解它是跟时钟频率、数据变化频率、触发器的分辨时间成指数关系就行,不用背具体常数。
关于同步器的坑,我必须单独提醒一句:两级同步器不能用来同步多bit信号。多bit信号如果对每个bit单独打两拍,bit与bit之间的到达时间不一致,可能导致接收端采到一个中间状态。正确做法是用格雷码(适用于计数器)、握手协议或者异步FIFO。这个知识点在跨时钟域题里几乎必考。
2.3 握手协议与脉冲同步器
华为笔试里跨时钟域的考题一般还会涉及更实际的实现方案。比如快时钟域到慢时钟域的单bit脉冲,怎么正确同步?最稳的方案就是用脉冲同步器:先把快时钟域的脉冲信号拉高成一个电平(toggle,也就是翻转信号),然后用慢时钟域打两拍到慢时钟域,再用慢时钟域对这个电平信号打一拍,通过边沿检测还原成脉冲。这个方案能把“脉冲太长/太短”的问题化解掉,因为它传递的是事件,不是宽度。
慢时钟域到快时钟域就相对简单,直接用两级同步器就能把慢脉冲同步到快时钟域,但要保证慢脉冲至少保持一个快时钟周期以上。笔试里还可能问如果慢时钟域的脉冲宽度只有1个慢时钟周期,快慢时钟频率比不合适会怎样?答案是可能丢脉冲,所以需要电平转换或握手。
握手协议的题也常考:req/ack跨时钟域时,如果请求信号用两级同步器同步到接收端,接收端回ack前要不要考虑req已经在本地稳定?完整的握手要求,发送端发出req之后要等待接收端回ack,收到ack后才能撤销req,接收端看到req撤销后拉低ack,发送端看到ack撤销后才能发起下一次req。整个过程是四段式,笔试里常让你补全时序图或者判断是否可能出现问题。这里的关键是“不能漏掉任何一段”,少一段就可能握手不完整。
3. 状态机设计与功能实现题
3.1 状态机写法与编码选择
状态机题一般在笔试里以补全代码或状态转移图的形式出现。考试频率最高的场景包括:序列检测器(比如检测1011)、交通灯控制器、简易UART接收状态机、FIFO读写控制状态机。
关于编码方式,常考一道基础题:一段式、两段式、三段式状态机的区别。一段式是把状态转移和输出都写在一个always块里,代码简单但不利于维护;两段式把组合逻辑的状态转移和时序逻辑的状态更新分开;三段式又把输出单独用一个组合逻辑块或寄存器输出块处理。笔试里如果问“推荐哪种”,我建议答三段式或两段式,重点强调:时序逻辑里用非阻塞赋值,组合逻辑里用阻塞赋值,这个铁律不能破。很多代码阅读题会故意混用阻塞和非阻塞赋值,让你判断哪里有问题。
再说状态编码。二进制编码、格雷码、独热码(one-hot)是三个老大难选项。笔试常见的问法是:FPGA里为什么推荐独热码?因为FPGA没有专门的译码电路,独热码可以让状态比较变得更简单,而且每个状态只有一个bit为1,译码逻辑小、速度快,代价是多用寄存器。而ASIC里如果状态连续跳转比较多,格雷码能有效降低毛刺和功耗。还有一类题给出状态数量(比如8个状态),问你最少需要几个触发器——答案是3个,如果采用独热码需要8个。
3.2 序列检测器题:从状态图到Verilog
序列检测器是状态机题的重头戏,因为题目短、考点集中,还能顺带考你“重叠检测”这个概念。经典题:设计一个检测“1011”序列的电路,要求检测到后输出1,考虑重叠情况。
所谓重叠,是指“1011011”这个序列里,前一个1011用掉前四位,但最后一位1可以跟后面的“011”组成新的“1011”。能检测到第二个1011就是重叠检测。设计状态图时,重点在于“前缀复用”:如果当前已经匹配了“10”,此时输入又是“1”,那实际上形成了“101”的状态,而如果输入“0”,则退回到“10”已经匹配前的状态需要重新分析。
笔试里让你写代码的话,推荐用状态机实现,每个状态用参数定义。示例代码风格大概是:
module seq_detect_1011 ( input wire clk, input wire rst_n, input wire din, output reg dout ); localparam IDLE = 3'd0; localparam S1 = 3'd1; // 已接收1 localparam S10 = 3'd2; // 已接收10 localparam S101 = 3'd3; // 已接收101 localparam S1011= 3'd4; // 已接收1011 reg [2:0] state, next_state; always @(posedge clk or negedge rst_n) begin if (!rst_n) state <= IDLE; else state <= next_state; end always @(*) begin next_state = state; case (state) IDLE: next_state = din ? S1 : IDLE; S1: next_state = din ? S1 : S10; S10: next_state = din ? S101 : IDLE; S101: next_state = din ? S1011 : S10; S1011: next_state = din ? S1 : S10; default: next_state = IDLE; endcase end always @(*) begin dout = (state == S1011); end endmodule注意上面这个写法,S1011这个状态在输入为1时可以转到S1,是因为序列“10111”从最后一个1开始又能匹配新的“1011”;如果输入0,它能匹配“10”。这个前缀逻辑很容易错,我建议做状态图时把“每个状态剩余多少序列被匹配”都写清楚,再转代码就不容易乱。笔试如果只让你写状态图,记住标注起始状态、终止输出状态和条件转移,别漏了复位状态。
3.3 分频器题:奇数分频反而是考点
分频器题也是华为IC岗笔试的常客。偶数分频很简单,计数器数到N/2-1翻转一次就可以实现N分频。奇数分频就有意思了,比如三分频、五分频,常考“占空比50%”的实现。
以三分频为例,正确思路是用两个计数器,一个在时钟上升沿计数,一个在下降沿计数。上升沿计数的信号生成一个3分频的波形,下降沿计数的信号也生成一个3分频的波形,但二者之间存在半个周期相位差,最终用“两个信号相或”得到占空比50%的三分频。这里的关键是“或者”还是“相与”,取决于初始值的极性。通常习惯是分频信号在计数到某个值时拉高、到另一个值时拉低。三分频的具体规则:上升沿翻转寄存器的周期是3个时钟,拉高1个周期,拉低2个周期;下降沿一样,只是错开半个周期;最后OR起来,就能补上缺失的低电平部分。
笔试中有一个高频判断题:五分频电路至少需要几个触发器?如果占空比是50%,答案是3个触发器(计数0到4需要3个bit),但如果你用两个计数器,一共是6个触发器。更常问的是“可综合的奇数分频代码需要注意什么”,回答要点是:只在时钟的上升沿或下降沿单边赋值,不要在always块中同时使用两个边沿做复杂逻辑,否则可能产生不可综合的描述或引入毛刺。
4. Verilog代码能力与可综合性
4.1 阻塞赋值与非阻塞赋值:选择题的必杀技
Verilog的代码题里,阻塞赋值和非阻塞赋值的考察率几乎100%。很多人背了“时序逻辑用非阻塞,组合逻辑用阻塞”的口诀,但笔试会把两个always块放在一起,让你判断仿真结果和综合结果的差异。
核心区别不用背太多,就理解机制:非阻塞赋值在时间步开始时先计算右侧值,在当前仿真时间步结束时才更新左侧值,因此多个非阻塞赋值同时执行时,它们读到的都是旧值。阻塞赋值则是立即更新,后面的语句能看到前面语句已经赋值的结果。这两者的差异直接决定了并发和顺序的概念。
举个例子,笔试里给两段代码:
always @(posedge clk) begin a <= b; b <= a; end答案是:每个周期结束后a和b互换。如果改成阻塞赋值,a和b都会变成同一个值,具体哪个值取决于两条语句的顺序。这种题考查的就是对“非阻塞赋值是并行更新”的理解。
还有个很典型的坑:组合逻辑always块里用了带复位的写法。比如:
always @(*) begin if (en) q = d; else q = 1'b0; end这种写法从功能上看是强制默认值,可用于组合逻辑,但如果把en当成时钟来写,就会出现锁存器的推断。笔试中如果问“怎样才能避免推断出锁存器”,标准回答是:确保组合逻辑中所有分支都覆盖了所有输出条件,也就是else要写全再加default赋值。这题表面是语法题,实际考察的是RTL风格是否干净。
4.2 可综合与不可综合:哪些写法不能进流片
华为笔试的代码题会穿插一些“判断以下代码能否综合”的题。这里的高频考点包括:
- initial语句在ASIC设计流程中不可综合,仿真中可以用,但综合工具会忽略或报错。
- 用
#10这类延迟控制不可综合。 wait、fork/join这类语句在部分工具里不可综合或综合结果不可控。- 动态内存分配(在可综合子集里不支持)不可综合。
- 对同一个reg在多个always块里赋值不可综合。
这些概念对做验证的同学可能觉得太基础,但笔试中却常常因为细节“看走眼”。比如一个always块里对同一个变量既赋值又读取,会不会产生问题?不一定,但如果在多个always里对同一变量赋值,就是多驱动,连线层面直接冲突,综合会报错。这类题目的本质是想确认你有没有真正写过可综合的代码,而不是只会在仿真器里跑testbench。
4.3 表达能力题:手写一个同步FIFO的接口
华为笔试偶尔会出大题让写关键代码,比如“请写出同步FIFO的基本读写逻辑”或者“补全异步FIFO的指针同步部分”。我见过的最常考的形式是让你写出同步FIFO的读写指针更新条件、空满判断,以及格雷码转换。不要求完整工程,但要求核心逻辑正确。
同步FIFO的空满判断比较简单:用两个计数器,一个写指针,一个读指针;当两个指针相等且发生过写操作时是满,当两个指针相等且发生过读操作时是空。比较安全的写法是总共用一个count计数,写加读减,count等于0为空,count等于深度为满。笔试里如果问“同步FIFO和异步FIFO在空满判断上有什么核心区别”,答案要点是:同步FIFO可以直接比较,异步FIFO直接比较会有亚稳态,需要把指针转换成格雷码后打拍同步,再通过格雷码比较。
异步FIFO还经常考一个点:读写指针为什么要用格雷码?因为多位二进制计数器在跨时钟域时,数值跳变过程中多个bit可能同时变化,虽然两级同步器对单bit有效,但对多bit无法保证一致性。格雷码每次只有一位翻转,即使同步过程中采样到中间状态,也只会错一位,配合特定空满判断条件不会影响功能。笔试问到这里,已经算是有深度的题了,如果时间充裕,建议认真画一下格雷码的指针和空满产生的结构图。
5. 边界时序与常见笔试陷阱
5.1 建立时间保持时间与时钟偏移的坑
时序分析的题再多,核心公式就那两个:建立时间要求数据在时钟沿前Tsu稳定,保持时间要求数据在时钟沿后Thd稳定。笔试里如果有计算,别忽略“时钟偏移clock skew”对两者的影响。时钟偏移指的是时钟信号到达不同寄存器的时间差,分为正偏移和负偏移。正偏移(后级时钟比前级晚到)对setup有利,对hold有害;负偏移对hold有利,对setup有害。
经常有人搞混,“有利”和“有害”的判断方向。我自己的记忆办法:想象你是一个数据,你需要在时钟沿之前到达并待住。后级时钟晚到,相当于给数据多争取了一点时间到达,所以setup更容易满足,这是有利的;但时钟沿晚到了,意味着前级数据从沿开始变化后,后级还没采样,如果数据变得太快,反而可能在晚到的时钟沿到达之前已经变了,hold就容易出问题。笔试中如果给了skew,让你判断是否timing违例,记住对setup用最差条件(skew取正值最大),对hold用最差条件(skew取负值最小)。
另一个常考的是“最小时钟周期”和“最大工作频率”互换。Fmax = 1 / (Tco + Tcomb + Tsu),注意分子单位换算成GHz别搞错。1ns对应1GHz,10ns对应100MHz,题里经常用ps做单位,看清楚再算。
5.2 低功耗设计题:从门控时钟到UPF
华为IC岗笔试对低功耗的考察近年来有加重趋势,因为芯片设计的功耗指标越来越关键。常考的第一类题是时钟门控(Clock Gating)的作用。答案核心在于:当模块不工作时,通过关闭时钟减少动态功耗,本质是减小翻转率。实现方式有门级(用AND/OR gate和latch组合)和寄存器级(在RTL中加时钟使能)。
还有一类常考题:为什么RTL里的时钟门控常常要用带锁存器的结构?因为如果直接用一个组合逻辑信号来门控时钟,容易产生毛刺,锁存器可以保证时钟门控使能信号在时钟低电平期间稳定。笔试中如果能答出“用latch锁存使能,避免毛刺,保证时钟干净”,基本就拿到分了。
如果有一定经验,还会遇到UPF(Unified Power Format)相关的概念题,比如多电压域、level shifter、isolation cell、retention register分别干什么用。高频考点是isolation cell的作用:在某个模块断电之前,用隔离单元把输出钳位到固定电平,避免浮空输出驱动后级逻辑产生不定态和漏电。Retention register则是断电时保存关键状态,恢复供电时把状态回填。
5.3 总线与协议题:APB/AHB/AXI的高频概念
数字IC方向笔试里,AMBA总线协议一定会带一两道题。APB相对简单,针对低速外设,状态机有IDLE、SETUP、ACCESS三个状态,两个时钟周期完成一次传输。AHB比APB多了流水线,分地址阶段和数据阶段,支持burst传输。AXI则在高性能场景下用五条通道独立传输,outstanding和乱序返回值都是常考点。
一道比较经典的笔试题:AXI协议里,写数据通道(W)和写响应通道(B)的作用分别是什么?答案是W通道传输写数据,B通道返回写响应,表示这次写事务已经完成。还有一道高频概念题:AXI的READY和VALID握手,主从双方可以同时拉高完成一次传输,如果先拉高VALID等待READY,就可能需要等待;如果先拉高READY等待VALID,就是在等待数据。两者之间没有先后级,都允许等待,但不能因为等待而依赖对方造成死锁。
APB里容易考的是“为什么APB适合低速外设,而不适合高性能模块”,核心原因是APB没有burst机制、没有独立的读写数据通道,每次传输需要至少两个周期,效率低。这样对比着记,总线协议的知识点就不容易乱。
6. 备考策略与刷题方法
6.1 刷题顺序:先基础后场景,先原理后代码
我的建议是不要一上来就刷整套模拟题。先把时序计算、亚稳态与同步、状态机设计这三块吃透,用3天左右把公式和原理彻底搞懂,再进入Verilog代码规范和FIFO设计,最后再刷总线协议和低功耗的概念题。每刷完一个专题,找一两道综合题练手,比如“用一个状态机实现带FIFO接口的简单发送模块”这种,把多个知识点串起来。笔试考的不是单点知识,而是你能不能把同步设计、时序、状态机协调起来。单点背得再熟,综合题露馅也不行。
我自己刷题时有个习惯:每道错题都整理成“错题卡”,卡上不只写正确答案,还写“我当时为什么错”和“正确思路的关键判断”。比如我常犯的错误是算hold time时忽略短路径分析,把组合逻辑最大延迟直接带进去,以为跟setup一样取最大值。实际上hold要用最短路径,这个反直觉的点,光看答案根本记不住,必须靠错题卡复盘才记得牢。
6.2 时间分配:笔试现场做不完是常态
根据我了解的情况,华为IC岗笔试的时间通常比较紧张,题量不小,含代码或简答题时更明显。我推荐的时间分配策略是:
- 选择题和判断题控制在总时间的40%以内,会的直接选,不会的先跳过并做标记。
- 计算题和简答题优先做,这类题分值高且答案固定,只要公式对就能拿分。
- 代码补全题放到最后如果还有时间再写,这类题容易耗时间,而且一旦卡住就浪费大量时间。
一个很现实的经验:笔试现场遇到读了两遍还读不懂的题,果断先跳过。后面做完所有题再回来看,往往会突然想通。卡在一道题上超过5分钟,基本等于浪费后面几道简单题的时间。我当年做笔试时,最后一道大题写了半截,但把前面所有计算题都拿住了,最后还是进了面试。笔试的及格线不是“做完”,而是“把能拿到的分都拿到了”。
6.3 一个容易忽略的准备:手写代码
我现在回头看,华为IC岗笔试里代码题如果没有事先动手练,很可能在编辑器里写出来的代码满是低级错误。笔试不是面试,一般不会让你跑仿真验证,所以写的代码必须有很强的“一遍正确率”。想练这个能力,平时就要习惯不看参考代码,纯手写一段功能逻辑。我用过的最好的练习方法是:每天手写一个不重复的小模块,比如序列检测器、计数器、时钟分频、同步FIFO接口、UART接收状态机,写完自己检查一遍可综合性,再跟参考代码对比。
另外提醒一个细节:手写代码一定要写好端口定义和参数命名,别以为笔试只看逻辑不看风格。可读性好的代码在人工阅卷阶段会有优势,尤其是代码补全题,清晰的分段和注释能让阅卷人快速理解你的意图,这在主观题评卷中是实打实的加分项。
7. 刷题之外的三点经验
笔试只是第一道坎,但它能直接反映一个人的RTL功底是否扎实。我见过Verilog语法熟练但时序概念模糊的,笔试题里setup/hold算错一大片;也见过状态机设计得很溜但一写跨时钟域就扔两级同步器不管多bit信号的人。这些短板在笔试阶段暴露出来,其实是好事,至少你有机会在面试前补上。
第一,把你做过的每一个设计都回到时序图上。代码写出来不算数,能在波形上画出数据每一步的到达时间、建立时间窗口、保持时间窗口,才算真懂。笔试里那些“设计一个逻辑满足某延时要求”的题,考的就是这种画时序图的能力。建议平时调仿真时,不只对着波形看功能对不对,停下来算一算关键路径上每个寄存器的slack。
第二,多bit同步问题必须有肌肉记忆。笔试中只要看到跨时钟域,立刻问自己是单bit还是多bit。单bit用两级同步器,多bit用异步FIFO或握手。如果既不是单bit也不需要满吞吐,还可以考虑握手加数据保持。这个“条件反射”能帮你避开选择题里一半的坑。
第三,别忽略低功耗和总线协议。很多人觉得笔试嘛,肯定考的都是数字逻辑,结果拿到卷子发现还有UPF和AXI的题,瞬间懵了。我之前也吃过这个亏,后来把低功耗和AMBA协议的基础概念过了一遍,再刷题时明显稳得多。准备范围还是要广一些,华为的岗位方向很多,与其赌它不考,不如花点时间把概念都过一遍。
8. 总结一下第二期刷题的重点
这一期我重点拆了时序计算、亚稳态与同步、状态机、Verilog代码规范、低功耗和总线协议这几个方向。跟第一期相比,这期的题目整体更偏“设计能力”,而不是单纯的知识记忆。如果你正准备华为IC岗笔试,花点时间把setup/hold和跨时钟域这两块彻底搞透,再把状态机和FIFO的代码手写顺,笔试的胜算就会大很多。
最后再分享一个小技巧:做题时哪怕时间再紧,也要在草稿纸上把关键信息写下来,尤其是时序题里的各个延迟参数。别以为脑子能同时记住多个数值,实际算的时候很容易用错。把图一画,公式一套,答案基本就出来了。下一期如果有机会,我再整理一些验证方向和脚本相关的笔试题目,验证岗的同学也可以提前蹲一波。