CS-OA cs-vo Faang

字节跳动tiktok SDE/DS OA面经以及真题答案
最近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真题:第一道                      

下面是对代码的详细解释:

  1. helper 函数是主要的计算函数。它接受两个参数:s 是输入的字符串表达式,start 是开始处理的位置。

  2. 在 helper 函数中,使用了一个栈来保存数字,以便进行后缀表达式计算。

  3. curr_num 用于保存当前处理的数字,curr_op 用于保存当前的操作符。

  4. 遍历字符串中的每个字符,根据字符的类型进行不同的处理:

    • 如果字符是数字,将其加入 curr_num
    • 如果字符是左括号,则递归调用 helper 函数处理括号内的表达式。
    • 如果字符是加减乘除操作符或右括号,则根据之前的操作符和数字进行相应的计算,并更新操作符和重置 curr_num
    • 如果遇到右括号,返回括号内计算的结果和右括号的位置。
  5. 在遍历结束后,处理最后一个数字。

  6. 最后返回栈中所有数字的和作为最终结果。

在测试代码中,输入的表达式是 "-1+2*4/2+(1+1)/2",根据运算优先级,它的计算结果是 4。

    第二道题:

我们为您解释这个代码和它的输出:

首先,这个代码定义了一个名为 calculate 的函数,它接受一个字符串作为输入,这个字符串包含数字、加减乘除操作符和括号。该函数的目标是计算这个字符串表示的数学表达式的结果。

函数 calculate 内部定义了一个名为 helper 的递归辅助函数。这个函数从输入字符串的开始位置开始处理,并使用一个栈来保存中间的计算结果。

在 helper 函数中:

  1. 遇到数字时,将其加入当前的数字 curr_num
  2. 遇到左括号时,递归调用 helper 函数处理括号内的表达式。
  3. 遇到加减乘除操作符或右括号时,根据之前的操作符和当前的数字进行相应的计算,并更新操作符和重置当前数字。
  4. 如果遇到右括号,返回栈中所有数字的和以及右括号的位置。
  5. 在遍历结束后,处理最后一个数字。
  6. 返回栈中所有数字的和作为最终结果。

在测试代码中,输入的表达式是 "-1+2*4/2+(1+1)/2"。按照运算优先级,该表达式的计算过程如下:

  1. 先计算 2*4/2 = 4
  2. 然后计算 (1+1)/2 = 1
  3. 最后计算 -1 + 4 + 1 = 4

所以,输出的结果应该是 4。

它使用栈来保存中间的计算结果,并在遇到操作符或右括号时进行相应的计算。

Leave a Reply

Your email address will not be published. Required fields are marked *