• go面试题


    1)解释什么是GO?

    GO是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。程序是从包中构建的,其属性允许有效地管理依赖关系。

    2)GO中的语法是什么?

    GO中的语法遵循Extended Backus-Naur Form(EBNF)

    Production = production_name “=” [ Expression ]

    Expression = Alternative { “l” Alternative }

    Alternative = Term { Term }

    Term = Production_name l token [ “…”token] l Group l Option l Repetition

    Group = “ ( “ Expression”)”

    Option = “ [ “ Expression “ ]”

    Repetition = “ {“ Expression “}”

    3)什么是字符串?

    字符串代表一个从连接字符序列得到的字符串常量。

    通常有两种形式,

    原始字符串:原始字符串的值是由引号之间的不间断字符组成的字符串。

    解释字符串:使用双引号“”表示,不包含换行符的双引号之间的文本形式的值。

    4)解释在Go程序中的包?

    每个GO程序由包组成。程序开始在main中运行,之后导入“fmt”和“math / rand”的包。

    5)解释GO中的工作区?

    工作区内GO代码必须保留。工作区是一个目录层次结构,其根目录有三个目录。

    src包含组织成包的GO源文件

    pkg包含包对象

    bin包含可执行命令

    6)如何使用GO语言中的自定义包?

    如果你想让库 作为单独的get –table 项目,且在内部使用,那么可以这样编码:

    在项目目录下放置目录与库文件

    使用与项目组成工作区的根相对应的路径引用库。

    例如:src/

    myproject/

    mylib/

    mylib.go

    . . .

    main.go

    这样,你就可以在在main.go中导入myprojec / mylib。

    7)什么是GOPATH环境变量?

    GOPATH环境变量决定工作区的位置。它是开发Go代码时必须设置的唯一环境变量。

    8)怎么在GO中做测试?

    它自带由go测试命令和测试包组成的轻量级测试框架。

    要编写测试,必须创建一个名称以_testing结尾的文件,测试代码包含测试函数、测试辅助代码和示例函数;测试函数有以Test开头的功能测试函数和以Benchmark开头的性能测试函数两种,功能测试函数需要接收*testing.T类型的单一参数t。

    9)什么是字符串类型?

    字符串类型表示字符串值的集合,字符串值是字节序列。一旦创建的字符串是不可能改变的。

    10)GO有哪些优点?

    GO编译很快

    Go支持语言级别的并发性

    函数属于第一类对象

    GO具备垃圾收集

    Strings和Maps内置于该语言中

    11)GO中内置的支持?

    GO中可用的内置支持包括

    容器:container/list , container/heap

    Web服务器:net / http

    加密:Crypto/md5 , crypto/sha1

    压缩:compress / gzip

    数据库:database / sql

    12)GO中的 go routine是什么?如何停止 go routine?

    goroutine是一种能与其他功能同时运行的功能

    要停止goroutine,您将goroutine传递给一个信号通道。这个信号通道将接受一个推送来的值, goroutine会定期访问通道,一旦检测到信号它就会退出。

    Quit : = make (chan bool)

    go func ( ) {

    for {

    select {

    case <- quit:

    return

    default

    // do other stuff

    }

    }()

    // Do stuff

    // Quit goroutine

    Quit <- true

    13)如何在GO中编写多行字符串?

    要在GO中编写多行字符串,可以使用原始字符串,其中字符串由单引号分隔。

    ‘ line 1

    line 2

    line 3 ’

    14)如何访问传递给GO程序的命令行参数?

    您可以使用os.Args变量访问命令行参数。例如,

    Package main

    import (

    “fmt”

    “OS”

    )

    func main () {

    fmt.Println(len(os.Args), os.Args)

    15)如何在GO中表示指针?

    Var var_name * Var-type

    var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。

    16)如何在不Printf的情况下格式化字符串?

    要格式化字符串而不Printf,您必须使用命令

    return fmt.Sprintf(“at%v,%s”,e.When,e.What)

    17)GO中的数组与C有何不同?

    GO 中的数组与C中的数组的不同:

    数组是值,可以将一个数组的全部元素复制到另一个数组中

    如果将数组传递给函数,它将复制数组,而不是指向它的指针

    数组的大小是其类型的一部分。类型[10] int和[20] int是不同的

    18)什么是GO接口?

    在GO中,接口是一种指定对象行为的方法。通常使用“type”单词创建一个接口,后跟一个名称和接口关键字。一个接口被指定为两部分:

    方法

    类型

    19)什么是类型断言?如何使用?

    Java当中有instanceof这样的关键字判断类型,Go当中自然也有相应的方法来判断类型即Comma-ok断言。类型断言接受一个Interface,并从中检索指定的显式类型的值。

    20)在GO语言中,如何在runtime检查变量类型?

    switch可以用于判断变量类型,同时它还可以判断Interface的类型。

  • 相关阅读:
    【CTF WEB】函数绕过
    【CTF WEB】命令执行
    【CTF WEB】文件包含
    【CTF WEB】GCTF-2017读文件
    【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)
    【技巧总结】Penetration Test Engineer[4]-Web-Security(文件处理、会话管理、访问控制、SSRF、反序列化漏洞)
    【技巧总结】Penetration Test Engineer[3]-Web-Security(SQL注入、XXS、代码注入、命令执行、变量覆盖、XSS)
    【技巧总结】Penetration Test Engineer[2]-Information gathering
    【技巧总结】Penetration Test Engineer[1]-Basic
    【 Linux 】单台服务器上并发TCP连接数
  • 原文地址:https://www.cnblogs.com/craneboos/p/8376775.html
Copyright © 2020-2023  润新知