Golang就是所谓的go语言。是Google开发的一种静态强型、编辑型、并发型,并且由垃圾回收功能的编程语言。他姐姐与V语言,但是对变量的声明是有所不同的。目前go语言被定义为区块链开发语言。现在市面上已经有很多机构推出go语言培训,像博学谷go语言与区块链课程已经有很多同学报名学习了。在这里将博学谷老师整理的部分golang面试题与大家分享一下。
1. 在go语言中,new和make的区别?
new 的作用是初始化一个指向类型的指针(*T)。
new函数是内建函数,函数定义:func new(Type) *Type。
使用new函数来分配空间。传递给new 函数的是一个类型,不是一个值。返回值是 指向这个新分配的零值的指针。
make 的作用是为 slice,map 或 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不足时将按len的2倍扩容;
切片定义:var slice []type = make([]type, len)
4. 解释以下命令的作用?
go env: #用于查看go的环境变量
go run: #用于编译并运行go源码文件
go build: #用于编译源码文件、代码包、依赖包
go get: #用于动态获取远程代码包
go install: #用于编译go文件,并将编译结构安装到bin、pkg目录
go clean: #用于清理工作目录,删除编译和安装遗留的目标文件
go version: #用于查看go的版本信息
5. 说说go语言中的协程?
协程和线程都可以实现程序的并发执行;
通过channel来进行协程间的通信;
只需要在函数调用前添加go关键字即可实现go的协程,创建并发任务;
关键字go并非执行并发任务,而是创建一个并发任务单元;
现在区块链在代币、信息共享、鉴证证明、数字资产、物流链、供应链金融、跨境支付、游戏等诸多领域已经取得了较为广泛的应用。相比在区块链技术不断发展中。会促使互联网健全。现在区块链并没有大范围的推广应用,对于求职者来说是一个非常好的机会。如果你还没有学习这方面的知识,可以通过博学谷go语言与区块链技术课程学习。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
区块链就业前景好吗?区块链好找工作吗?
区块链就业前景好吗?区块链好找工作吗?因为比特币,区块链成为国内外技术的核心关键词。其热度一度超过大数据、云计算、人工智能。但是区块链技术目前并没有完全融入到人们的日常生活中,还有很大的发展空间。
13071
2019-10-11 18:36:38
分布式和微服务哪个好?两者有什么区别?
分布式和微服务哪个好?两者有什么区别?其实分布式和微服务各有其优缺点,谈不上谁比谁好。而且两者的概念也不同,微服务是架构设计方式,分布式是系统部署方式。下面就来好好认识一下分布式和微服务吧!
8271
2019-09-09 11:46:12
Go语言与区块链技术就业方向多不多?具体有哪些?
Go语言与区块链技术就业方向多不多?具体有哪些?先说Go语言,它不仅是区块链开发的常用语言,还是IT技术人员最欢迎和喜爱的编程语言之一。近些年来,大家越来越能发现区块链的价值与优势,都知道区块链技术能带来丰厚的财富,同时区块链相关的企业也纷纷拔地而起。因此Go语言与区块链技术就业方向有着相当丰富的选择,下面我们来具体看一下吧。
3215
2019-09-29 11:28:51
区块链要学多久才能从入门到精通?
区块链要学多久才能从入门到精通?学习是潜移默化的过程,学多久取决于你对计算机知识等相关专业的背景,区块链用的技术其实都是现有技术的组合。分布式存储,非对称加密,哈希算法,博弈论,这些都要熟悉和了解。
3139
2020-07-24 16:59:18
挖矿病毒到底是什么?有什么危害?
挖矿病毒到底是什么?有什么危害?常见挖矿病毒qW3xT、Ddgs.3011、S01wipefs、acpidtd、MSFC等。系统中毒后系统CPU占用接近100%;系统卡顿执行基本命令响应缓慢;系统出现异常进程无法正常kill;系统内存异常占用不稳定。
1814
2022-03-03 10:22:53
- Golang工程师面试攻略
推荐课程
热门文章
- 我做了10年程序员 最后Java架构师弯道超车
- JavaEE极速就业班课程怎么样?有哪些优势?
- 狂野大数据课程怎么样?项目实战多吗?
- 狂野架构师课程培训哪些内容?能学会吗?
- Spark SQL 结构化数据处理流程及原理是什么?
- Java互联网架构师就业前景怎么样?待遇好不好?
- 狂野架构师课程怎么样?Java架构师学什么内容?
- 狂野大数据厉害吗?可以提升哪些核心技能?
- 缓存淘汰策略有几种?要怎么用?
- 软件测试极速就业班课程怎么样?零基础能学吗 查看更多
扫描二维码,了解更多信息
