博学谷 > 资讯 > 区块链 > 区块链开发求职不用愁:golang面试题总结分享

原创 区块链开发求职不用愁:golang面试题总结分享

发布时间:2019-07-15 17:54:22 浏览 421 来源:博学谷资讯 作者:枫调

      Golang就是所谓的go语言。是Google开发的一种静态强型、编辑型、并发型,并且由垃圾回收功能的编程语言。他姐姐与V语言,但是对变量的声明是有所不同的。目前go语言被定义为区块链开发语言。现在市面上已经有很多机构推出go语言培训,像博学谷go语言与区块链课程已经有很多同学报名学习了。在这里将博学谷老师整理的部分golang面试题与大家分享一下。

     

    <a href = 'https://www.boxuegu.com/news/golang/' target='_blank' style='color: #466de2;font-size: 14px'>区块链</a>开发求职不用愁:golang面试题总结分享

     

      1. go语言中,newmake的区别?

     

      new 的作用是初始化一个指向类型的指针(*T)

      new函数是内建函数,函数定义:func new(Type) *Type

      使用new函数来分配空间。传递给new 函数的是一个类型,不是一个值。返回值是 指向这个新分配的零值的指针。

      make 的作用是为 slicemap chan 初始化并返回引用(T)

      make函数是内建函数,函数定义:func make(Type, size IntegerType) Type

      第一个参数是一个类型,第二个参数是长度。

      返回值是一个类型。

      make(T, args)函数的目的与new(T)不同。它仅仅用于创建 Slice,Map Channel,并且返回类型是 T(不是T*)的一个初始化的(不是零值)的实例。

     

      2. go语言中,Printf()Sprintf()Fprintf()函数的区别用法是什么?

     

      都是把格式好的字符串输出,只是输出的目标不一样:

      Printf(),是把格式字符串输出到标准输出(一般是屏幕,可以重定向)。

      Printf() 是和标准输出文件(stdout)关联的,Fprintf 则没有这个限制。

      Sprintf(),是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目标字符串地址。

      Fprintf() 是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针FILE*。主要用于文件操作。Fprintf()是格式化输出到一个stream,通常是到文件。

     

      3. 说说go语言中,数组与切片的区别?

     

      (1) 数组

      数组是具有固定长度且拥有零个或者多个相同数据类型元素的序列。

      数组的长度是数组类型的一部分,所以[3]int [4]int 是两种不同的数组类型。

      数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 ;

      数组是值传递;

      数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度。

      数组定义:var array [10]int

      var array = [5]int{1,2,3,4,5}

      (2)切片

      切片表示一个拥有相同类型元素的可变长度的序列。

      切片是一种轻量级的数据结构,它有三个属性:指针、长度和容量。

      切片不需要指定大小;

      切片是地址传递;

      切片可以通过数组来初始化,也可以通过内置函数make()初始化 .初始化时len=cap,在追加元素时如果容量cap不足时将按len2倍扩容;

      切片定义:var slice []type = make([]type, len)

     

      4. 解释以下命令的作用?

     

      go env:   #用于查看go的环境变量

      go run:   #用于编译并运行go源码文件

      go build:  #用于编译源码文件、代码包、依赖包

      go get:   #用于动态获取远程代码包

      go install:  #用于编译go文件,并将编译结构安装到binpkg目录

      go clean:  #用于清理工作目录,删除编译和安装遗留的目标文件

      go version:  #用于查看go的版本信息

     

      5. 说说go语言中的协程

     

      协程和线程都可以实现程序的并发执行;

      通过channel来进行协程间的通信;

      只需要在函数调用前添加go关键字即可实现go的协程,创建并发任务;

      关键字go并非执行并发任务,而是创建一个并发任务单元;

     

      现在区块链在代币、信息共享、鉴证证明、数字资产、物流链、供应链金融、跨境支付、游戏等诸多领域已经取得了较为广泛的应用。相比在区块链技术不断发展中。会促使互联网健全。现在区块链并没有大范围的推广应用,对于求职者来说是一个非常好的机会。如果你还没有学习这方面的知识,可以通过博学谷go语言与区块链技术课程学习。

上一篇:一篇文章带你了解哈希算法 下一篇: