• GO面试一定要看看这些面试题


    Go核心特性

    1.goroutine

    协程是用户态轻量级线程,它是线程调度的基本单位

    使用者分配足够多的任务,系统能自动帮助使用者把任务分配到 CPU 上,让这些任务尽量并发运作。这种机制在 Go语言中被称为 goroutine(协程)。

    2.channel

    Don’t communicate by sharing memory, share memory by communicating.

    channel是go语言协程中数据通信的双向通道。但是在实际应用中,为了代码的简单和易懂,一般使用的channel是单向的。

    img

    缓冲机制

    有缓冲

    1. package main
    2. import "fmt"
    3. /*有缓冲*/
    4. func main() {
    5. ch := make(chan int, 3)//缓冲区大小为3,消息个数小于等于3都不会阻塞goroutine
    6. ch <- 1
    7. fmt.Println(<-ch)//输出1
    8. ch <- 2
    9. fmt.Println(<-ch)//输出2
    10. ch <- 3
    11. ch <- 4
    12. fmt.Println(len(ch))//输出2,表示是channel有两个消息
    13. fmt.Println(cap(ch))//输出3,表示缓存大小总量为3
    14. }

    无缓冲

    1. package main
    2. import "fmt"
    3. /*无缓冲*/
    4. func main() {
    5. ch := make(chan int, 3)
    6. ch <- 2
    7. ch <- 1
    8. ch <- 3
    9. elem := <-ch
    10. fmt.Println("The first element received from channel ch:%v\n", elem)
    11. }

    3.defer

    defer执行顺序和调用顺序相反,类似于栈先进后出。

    defer一般用于资源的释放和异常的捕捉, 作为Go语言的特性之一.

    defer 语句会将其后面跟随的语句进行延迟处理. 意思就是说 跟在defer后面的语言 将会在程序进行最后的return之后再执行.

    在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。

    4.切片

    5.垃圾回收机制

    6.int与int32

    go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节。如果是64位操作系统,int类型的大小就是8个字节。除此之外uint也与操作系统有关。

    int8占1个字节,int16占2个字节,int32占4个字节,int64占8个字节。

  • 相关阅读:
    微信小程序│ 游戏开发 │连连看游戏
    Android 静态代码检查
    【数据结构 C语言版】第五篇 队列(看完刷题无敌)
    什么是序列化和反序列化?
    Linux驱动开发笔记(零)驱动基础知识及准备
    记录一次接入xxl-job的踩坑记录
    数字IC前端笔试常见大题整理(简答+手撕)
    Android Studio 最新汉化包下载及安装方法,持续更新 & IDEA
    JavaScript 1.0
    数字图像处理(十二)最大熵算法
  • 原文地址:https://blog.csdn.net/m0_68263709/article/details/128024794