【第三届字节跳动青训营|刷题打卡】DAY6

3,889 阅读1分钟
  • 为了助力本届青训营课程的学习,青训营项目组为同学们精心挑选了练手习题 📖
  • 每两天发布一篇,包含选择题和实操题各一题(第二天将发布答案解析)🥳
  • 同学们可以在评论区留下你的解题过程并进行互动交流 ✍️

一、【单选】下列关于 Python 的说法错误的是?

a. Python 是强类型语言
b. Python 中所有变量本质上都是指针
c. Python 运行时会根据类型提示(type hints)检查变量类型
d. CPython 不支持尾递归优化

答案 & 解析

c;
Python 运行时并不会检查变量类型, 类型提示主要给第三方工具使用, 比如IDE可以据此给出方法/属性的自动补全建议。

二、给定包含 N 个任务 task 的数组 tasks 和整数 K,和一个可并发调用的执行函数 execute,要求实现以下逻辑:

  1. execute并发调用次数不超过10
  2. 以最快速度执行完所有task
  3. 使用golang

答案 & 解析

利用并发 + channel 缓冲区实现。

type Task int

func handle(tasks []Task, execute func(task Task)) {
   wg := sync.WaitGroup{}
   ch := make(chan struct{}, 10)
   for i, _ := range tasks {
      ch <- struct{}{}
      wg.Add(1)
      task := tasks[i]
      go func() {
         defer wg.Done()
         // execute task
         execute(task)
         <-ch
      }()
   }
   wg.Wait()
}

今天是 DAY6 啦,同学们加油哦 😉