• Golang 基础面试题 01


    a4afb12ae1e34f5f144b20872daf467b.png

    Golang 面试题合集.png

    背景

    在之前的文章中分享了 k8s 相关的面试题,本文我们重点来讨论和 k8s 密切相关的 Go 语言面试题。

    这几年随着云原生的兴起,大部分后端开发者,特别是 Java 开发者都或多或少的想学习一些 Go 相关的技能,所以今天分享的内容比较初级,适合 Go 语言初学者。

    252129779865b3d93133b342d3c10f49.png
    image.png

    本文内容依然来自于这个仓库https://github.com/bregman-arie/devops-exercises

    以下是具体内容:

    ()的内容是我的补充部分。

    Go 101

    Go 语言有哪些特点

    • Go 是一种强类型静态语言,变量的类型必须在声明的时候指定(但可以使用类型推导),在运行时不能修改变量类型(与 Python 这类动态类型语言不同)。

    • 足够的简单,通常一个周末就能学会

    • 编译速度够快

    • 内置并发(相对于 Java 的并发来说非常简单)

    • 内置垃圾收集

    • 多平台支持

    • 可以打包到一个二进制文件中,所有运行时需要依赖的库都会被打包进这个二进制文件中,非常适合于分发。

    Go 是一种编译型的静态类型语言,正确还是错误

    正确✅

    为什么有些函数是以大写字母开头的

    这是因为 Go 语言中首字母大写的函数和变量是可以导出的,也就是可以被其他包所引用;类似于 Java 中的 publicprivate 关键字。

    变量和数据类型

    简洁和常规声明变量方式

    1. package main
    2. import "fmt"
    3. func main() {
    4.   x := 2 // 只能在函数内使用,自动类型推导
    5.   var y int = 2
    6.   fmt.Printf("x: %v. y: %v", x, y)
    7. }

    正确✅还是错误❌

    • 可以重复声明变量❌(强类型语言的特性)

    • 变量一旦声明,就必须使用✅(避免声明无效变量,增强代码可读性)

    下面这段代码的结果是什么?

    1. package main
    2. import "fmt"
    3. func main() {
    4.     var userName
    5.     userName = "user"
    6.     fmt.Println(userName)
    7. }

    编译错误,变量 userName 没有声明类型;修改为这样是可以的:

    1. func main() {
    2.     var userName string
    3.     userName = "user"
    4.     fmt.Println(userName)
    5. }

    var x int = 2 and x := 2 这两种声明变量的区别

    结果上来说是相等的,但 x := 2  只能在函数体类声明。

    下面这段代码的结果是声明?

    1. package main
    2. import "fmt"
    3. x := 2
    4. func main() {
    5.     x = 3
    6.     fmt.Println(x)
    7. }

    编译错误,x := 2  不能在函数体外使用, x = 3 没有指定类型,除非使用 x := 3 进行类型推导。

    如何使用变量声明块(至少三个变量)

    1. package main
    2. import "fmt"
    3. var (
    4.   x bool   = false
    5.   y int    = 0
    6.   z string = "false"
    7. )
    8. func main() {
    9.   fmt.Printf("The type of x: %T. The value of x: %v\n", x, x)
    10.   fmt.Printf("The type of y: %T. The value of y: %v\n", y, y)
    11.   fmt.Printf("The type of z: %T. The value of z: %v\n", y, y)
    12. }

    变量块配合 go fmt 格式化之后的代码对齐的非常工整,强迫症的福音。

    Go 的基础面试题也蛮多的,我们先从基础的开始,今后后继续更新相关面试题,难度也会逐渐提高,感兴趣的朋友请持续关注。#GO #面试

    往期推荐

    k8s入门到实战--跨服务调用

    k8s 入门到实战--部署应用到 k8s

    使用 SQL 的方式查询消息队列数据以及踩坑指南

    VictoriaLogs:一款超低占用的 ElasticSearch 替代方案

    k8s 常见面试题

    鼓励一下

    0f27504c9993ec6cd2c27290e7e7ab7c.gif

    赞完再走

  • 相关阅读:
    Git远程仓库配置SSH(以github为例)
    Java入门有多快,看这篇
    【宋红康 MySQL数据库 】【高级篇】【16】事务基础知识
    嵌入式Qt-简易网络监控摄像头
    购物车下单
    FreeRTOS中的内存分配策略
    c++二叉树遍历-从递归法到迭代法的前世今生
    Quarkus 集成 mailer 使用 easyexcel 发送表格邮件
    Vue学习-computed和watch的区别
    `算法知识` 数论分块, 下取整函数
  • 原文地址:https://blog.csdn.net/qq_18661793/article/details/132867476