Golang 基础面试题 01

2023-09-13 08:08:07

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 关键字。

变量和数据类型

简洁和常规声明变量方式

package main

import "fmt"

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

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

正确✅还是错误❌

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

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

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

package main

import "fmt"

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

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

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

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

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

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

package main

import "fmt"

x := 2

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

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

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

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

鼓励一下

0f27504c9993ec6cd2c27290e7e7ab7c.gif

赞完再走

更多推荐

2023 蓝帽杯初赛web&部分取证复现

前言:初赛进线下了,计划着在决赛前突击学习一下取证,但时间还是太紧只看了很多内存取证和手机取证计算机取证和服务器取证没掌握---(不过复赛没考,也算狗运了)目录<1>web-LovePHP(file()函数侧信道攻击)<2>取证(1)APK取证1【APK取证】涉案apk的包名是?[答题格式:com.baid.ccs]2

华为云云耀云服务器L实例评测|redis漏洞回顾 & MySQL数据安全解决 搭建主从集群MySQL & 相关设置

前言最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到过MySQL数据库被攻击的情况,数据丢失,还好我有几份备份,没有造成太大的损失;后来有发现Redis数据库被攻击的情况,加入了redis密码初步解决问题。总之就是各种遭受毒打。。。本篇博客回顾Redis的未授权访问漏洞,介绍MySQL主从集群的搭建,以及相关

短视频搭建矩阵源码--短视频矩阵源码搭建

短视频矩阵系统是一种通过将短视频内容进行分类、管理和展示的系统。它可以将用户上传或者选择的短视频按照不同的特定标签进行分类和管理,用户可以根据自己的兴趣和需求选择观看不同类别的短视频。短视频矩阵源码的开发部署其实并不难,主要依托于抖音平台各种开放权限进行研发,市面上常见的源码功能构建也是大同小异,主要处理还在于细节及产

Delphi - Record记录和变体记录

//Integer类型刚好是4个字节,ShortInt类型是1个字节,但是Windows中内存是4字节分配,//所以这里其实还是4个字节,用SizeOf可以看到这个record的大小是8字节,这样虽然浪//费了空间,但是加快了速度(Windows内存分配中的边界对齐原理)TPerson=recordAge:Intege

深入了解接口测试:Postman 接口测试指南

在现代软件开发生命周期中,接口测试是一个至关重要的部分。使用Postman这一工具,可以轻松地进行接口测试。以下是一份简单的使用教程,帮助你快速上手。安装Postman首先,你需要在电脑上安装Postman。你可以从官网上下载并安装它。安装完成后,你可以打开应用并创建一个新的请求。创建请求在Postman应用中,你可以

OSI模型与数据的封装

1、OSI模型上层||七层模型四层模型||应用层|表示层应用层http/ftp/ssh/ftps|会话层-----------------------------------------------------------------------|·传输层传输层tcp/udp----------------------

推荐几款优秀的项目报表软件

项目报表在项目工作中扮演着重要的角色,它是领导和客户了解项目进况的直接途径。有需求就会有市场,为解决传统报表制作复杂困难的问题,专业报表工具应运而生。一款好用的项目报表软件可以帮助项目团队快速产出项目报表,实现数据可视化,进行高效的项目数据分析。有什么好用的项目报表软件?在琳琅满目的项目报表软件产品中,有什么好用的项目

Linux开发工具之项目自动化构建工具-make/Makefile

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建makefile带来的好处就是自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率下面来看一个实例:在Makefile文件里可以如上图一样g++/gcc编译代码一步到位,也可以如下图一样,一步一步拆

滨州ITSS认证流程,认证条件

ITSS认证流程,认证条件一、ITSS的意义ITSS认证——信息技术服务标准,是在工业和信息化部、国家标准化委的领导和支持下,由ITSS工作组研制的一套IT服务领域的标准库和一套提供IT服务的方法论。ITSS认证-信息技术服务标准是一套成体系和综合配套的信息技术服务标准库,全面规范了IT服务产品及其组成要素,用于指导实

css --- 让人上头的flex

用自己的理解记录下flex的知识点,部分文字描述是在学习其他作者分享的文章觉得很好而使用的,不是无脑搬运,是学习和借鉴!一、基本原理二、flex容器和项目三、轴线四、flex属性4.1属性汇总4.2属性分类4.3属性详解(1)flex-direction(2)flex-wrap(3)flex-flow(4)justif

VLAN的配置实例

基于端口的vlan划分以下配置为例:注意选择copper线,可以任意选择端口PC配置如下:LSW1配置如下[LSW1]vlan10[LSW1-vlan10]qu[LSW1]interfaceg0/0/9[LSW1-Gigabitethernet0/0/9]portlink-typeacces[LSW1-Gigabite

热文推荐