返回

用一道笔试题解读nowcode之chan、fallthrough、闭包

后端

刷题是笔试成功关键的一步

笔试是求职过程中非常重要的一环,想要在笔试中取得好成绩,刷题是必不可少的。刷题不仅可以帮助我们熟悉各种题型,还能加深对知识点的理解,提高我们的编程能力。

现在有很多在线刷题平台,比如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、闭包等概念,通过这道题,我们可以加深对这些概念的理解。同时,我们也可以学习到一些笔试技巧,比如:

  • 要注重质量而不是数量,每道题都要认真思考,争取一次做对。
  • 如果遇到不会做的题,也不要灰心,可以先标记下来,等以后再回来做。
  • 在刷题时,可以多参考一些题解,这样可以帮助我们更好地理解题目。

希望这篇文章对大家有所帮助,祝大家笔试顺利!