最近TikTok开招SDE岗,今天来给大家分享一下23ng SDE岗的面经,参考一下。
6/25 HR reach out
7/26一面:当晚收到survey+约下一轮面试。
8/1二面:外加两道followup都是非原题,难度比较大。第二天上午收到survey,晚上收到约下轮面试。
8/3三面:HM BQ+深挖简历,HM主要是深挖了实习经历,有点压力面,他会提出很多对你project motivation,structure以及实现方法的质疑,并且穷追不舍。HM每个问题都挺切中要害的,有几个当时没解决,丢到future work里的问题。BQ比较常规,主要问了实习时候如何快速wrapup,自己的缺点以及challenging project。
8/7:收到HR约zoom call,一周后谈薪。
tiktok真题:第一道
下面是对代码的详细解释:
-
helper
函数是主要的计算函数。它接受两个参数:s
是输入的字符串表达式,start
是开始处理的位置。 -
在
helper
函数中,使用了一个栈来保存数字,以便进行后缀表达式计算。 -
curr_num
用于保存当前处理的数字,curr_op
用于保存当前的操作符。 -
遍历字符串中的每个字符,根据字符的类型进行不同的处理:
- 如果字符是数字,将其加入
curr_num
。 - 如果字符是左括号,则递归调用
helper
函数处理括号内的表达式。 - 如果字符是加减乘除操作符或右括号,则根据之前的操作符和数字进行相应的计算,并更新操作符和重置
curr_num
。 - 如果遇到右括号,返回括号内计算的结果和右括号的位置。
- 如果字符是数字,将其加入
-
在遍历结束后,处理最后一个数字。
-
最后返回栈中所有数字的和作为最终结果。
在测试代码中,输入的表达式是 "-1+2*4/2+(1+1)/2",根据运算优先级,它的计算结果是 4。
第二道题:我们为您解释这个代码和它的输出:
首先,这个代码定义了一个名为 calculate
的函数,它接受一个字符串作为输入,这个字符串包含数字、加减乘除操作符和括号。该函数的目标是计算这个字符串表示的数学表达式的结果。
函数 calculate
内部定义了一个名为 helper
的递归辅助函数。这个函数从输入字符串的开始位置开始处理,并使用一个栈来保存中间的计算结果。
在 helper
函数中:
- 遇到数字时,将其加入当前的数字
curr_num
。 - 遇到左括号时,递归调用
helper
函数处理括号内的表达式。 - 遇到加减乘除操作符或右括号时,根据之前的操作符和当前的数字进行相应的计算,并更新操作符和重置当前数字。
- 如果遇到右括号,返回栈中所有数字的和以及右括号的位置。
- 在遍历结束后,处理最后一个数字。
- 返回栈中所有数字的和作为最终结果。
在测试代码中,输入的表达式是 "-1+2*4/2+(1+1)/2"。按照运算优先级,该表达式的计算过程如下:
- 先计算 2*4/2 = 4
- 然后计算 (1+1)/2 = 1
- 最后计算 -1 + 4 + 1 = 4
所以,输出的结果应该是 4。
它使用栈来保存中间的计算结果,并在遇到操作符或右括号时进行相应的计算。