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 常见面试题
<>

鼓励一下

赞完再走

相关推荐
Asthenia04122 分钟前
Feign结构与请求链路详解及面试重点解析
后端
左灯右行的爱情4 分钟前
缓存并发更新的挑战
jvm·数据库·redis·后端·缓存
brzhang8 分钟前
告别『上线裸奔』!一文带你配齐生产级 Web 应用的 10 大核心组件
前端·后端·架构
shepherd1119 分钟前
Kafka生产环境实战经验深度总结,让你少走弯路
后端·面试·kafka
anqi2718 分钟前
如何在 IntelliJ IDEA 中编写 Speak 程序
java·大数据·开发语言·spark·intellij-idea
XuX0322 分钟前
MATLAB小试牛刀系列(1)
开发语言·matlab
袋鱼不重22 分钟前
Cursor 最简易上手体验:谷歌浏览器插件开发3s搞定!
前端·后端·cursor
嘻嘻哈哈开森24 分钟前
Agent 系统技术分享
后端
用户40993225021225 分钟前
异步IO与Tortoise-ORM的数据库
后端·ai编程·trae
会有猫30 分钟前
LabelStudio使用阿里云OSS教程
后端