Golang 基础面试题 01


Golang 面试题合集.png

背景

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

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

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

以下是具体内容:

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

Go 101

Go 语言有哪些特点

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

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

  • 编译速度够快

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

  • 内置垃圾收集

  • 多平台支持

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

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

正确✅

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

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

变量和数据类型

简洁和常规声明变量方式

go 复制代码
package main

import "fmt"

func main() {
  x := 2 // 只能在函数内使用,自动类型推导
  var y int = 2

  fmt.Printf("x: %v. y: %v", x, y)
}

正确✅还是错误❌

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

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

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

go 复制代码
package main

import "fmt"

func main() {
    var userName
    userName = "user"
    fmt.Println(userName)
}

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

go 复制代码
func main() {
    var userName string
    userName = "user"
    fmt.Println(userName)
}

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

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

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

go 复制代码
package main

import "fmt"

x := 2

func main() {
    x = 3
    fmt.Println(x)
}

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

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

go 复制代码
package main

import "fmt"

var (
  x bool   = false
  y int    = 0
  z string = "false"
)

func main() {
  fmt.Printf("The type of x: %T. The value of x: %v\n", x, x)
  fmt.Printf("The type of y: %T. The value of y: %v\n", y, y)
  fmt.Printf("The type of z: %T. The value of z: %v\n", y, y)
}

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

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

往期推荐

<>

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

<>

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

<>

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

<>

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

<>

k8s 常见面试题
<>

鼓励一下

赞完再走

相关推荐
工业甲酰苯胺14 分钟前
聊一聊 C#线程池 的线程动态注入
java·开发语言·c#
zfenggo15 分钟前
c/c++ 无法跳转定义
c语言·开发语言·c++
向宇it25 分钟前
【从零开始入门unity游戏开发之——C#篇30】C#常用泛型数据结构类——list<T>列表、`List<T>` 和数组 (`T[]`) 的选择
java·开发语言·数据结构·unity·c#·游戏引擎·list
hakesashou30 分钟前
python怎么看矩阵维数
开发语言·python
daopuyun39 分钟前
GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能
java·开发语言·安全
编程洪同学43 分钟前
Spring Boot 中实现自定义注解记录接口日志功能
android·java·spring boot·后端
qh0526wy1 小时前
pyqt5冻结+分页表
开发语言·python·qt
hjxxlsx1 小时前
探索 C++ 自定义函数的深度与广度
开发语言·c++
罗政1 小时前
PDF书籍《手写调用链监控APM系统-Java版》第12章 结束
java·开发语言·pdf
匹马夕阳1 小时前
详细对比JS中XMLHttpRequest和fetch的使用
开发语言·javascript·ecmascript