返回
用一道笔试题解读nowcode之chan、fallthrough、闭包
后端
2023-11-26 00:47:54
刷题是笔试成功关键的一步
笔试是求职过程中非常重要的一环,想要在笔试中取得好成绩,刷题是必不可少的。刷题不仅可以帮助我们熟悉各种题型,还能加深对知识点的理解,提高我们的编程能力。
现在有很多在线刷题平台,比如nowcode、leetcode等,这些平台提供了大量的笔试题,可以帮助我们进行针对性的练习。在刷题时,我们要注重质量而不是数量,每道题都要认真思考,争取一次做对。如果遇到不会做的题,也不要灰心,可以先标记下来,等以后再回来做。
nowcode笔试题分析
nowcode笔试题库中有一道题是这样的:
package main
import "fmt"
func main() {
c := make(chan int)
go func() {
for i := 0; i < 10; i++ {
c <- i
}
close(c)
}()
for {
select {
case i, ok := <-c:
if !ok {
fmt.Println("channel closed")
break
}
fmt.Println(i)
case <-time.After(time.Second * 1):
fmt.Println("timeout")
break
}
}
}
这道题考察了Go语言中的chan、fallthrough、闭包等概念。
首先,chan是一个通信机制,可以用来在goroutine之间发送和接收数据。在这个程序中,我们创建了一个chan,然后启动了一个goroutine,在goroutine中不断地将数据发送到chan中。
其次,select是一个选择语句,它可以同时监听多个channel,当其中一个channel有数据可读时,select语句就会执行相应的case。在这个程序中,我们使用select语句来监听chan和一个定时器,当chan中有数据可读时,我们就打印出数据,当定时器超时时,我们就打印出“timeout”。
最后,闭包是一个函数,它可以访问其外部作用域中的变量。在这个程序中,我们使用了一个闭包来启动一个goroutine,goroutine中的变量可以使用main函数中的变量。
总结
这道题考察了Go语言中的chan、fallthrough、闭包等概念,通过这道题,我们可以加深对这些概念的理解。同时,我们也可以学习到一些笔试技巧,比如:
- 要注重质量而不是数量,每道题都要认真思考,争取一次做对。
- 如果遇到不会做的题,也不要灰心,可以先标记下来,等以后再回来做。
- 在刷题时,可以多参考一些题解,这样可以帮助我们更好地理解题目。
希望这篇文章对大家有所帮助,祝大家笔试顺利!