欢迎加入GolangRoadmap,一个年轻的GO开发者社区https://www.golangroadmap.com/,目前是邀请制注册,注册码:Gopher-1035-0722,已开放Golang岗位内推,Golang企业题库,Golang精品资源等栏目
以下题目资源都来自GolangRoadmap->Go求职->企业题库
题目ID-1 与其他语言相比,使用Golang有什么好处?
- Go 代码的设计是务实的。每个功能和语法决策都旨在让程序员的生活更轻松。
- Golang 针对并发进行了优化。。
- 自动垃圾收集明显比 Java 或 Python 更有效,因为它与程序同时执行。
题目ID-4 Golang支持什么形式的类型转换?
Go 支持显式类型转换以满足其严格的类型要求。
题目ID-6 如何在运行时检查变量类型?
类型开关(Type Switch)是在运行时检查变量类型的最佳方式。类型开关按类型而不是值来评估变量。每个 Switch 至少包含一个case用作条件语句,如果没有一个case 为真,则执行default。
示例:
package main
import (
"fmt"
"io"
"os"
)
func show(e interface{}) {
switch v := e.(type) {
case nil:
fmt.Printf("Don't input nil\n")
case int, uint, int32, uint32, float32, float64:
fmt.Printf("This is a number: %v\n", v)
case string:
fmt.Printf("This is a string: %s\n", v)
case bool:
fmt.Printf("This is a boolean: %v\n", v)
case io.Writer:
fmt.Printf("This is a writer: %T\n", v)
case *os.File:
fmt.Printf("This is a *os.File\n")
default:
fmt.Printf("I don't know what it is\n")
}
}
func main() {
show(5) // This is a number: 5
show("hello world") // This is a string: hello world
show(true) // This is a boolean: true
show(5.6) // This is a number: 5.6
show(os.Stdout) // This is a writer: *os.File
show([]int{1, 2, 3, 4}) // I don't know what it is
}
题目ID-7 Golang两个接口之间可以存在什么关系?
如果两个接口有相同的方法列表,那么他们就是等价的,可以相互赋值。如果接口A的方法列表是接口B的方法列表的自己,那么接口B可以赋值给接口A。接口查询是否成功,要在运行期才能够确定。
题目ID-8 Golang当中同步锁有什么特点?作用是什么
golang中sync包实现了两种锁Mutex (互斥锁)和RWMutex(读写锁),其中RWMutex是基于Mutex实现的。
1.Mutex:
当一个Goroutine(协程)获得了Mutex后,其他Goroutine(协程)就只能进入等待之中,除非该gorouline释放了该Mutex。
2.RWMutex(读写锁):
RWMutex在读锁占用的情况下,会阻止写,但不阻止读;RWMutex在写锁占用情况下,会阻止任何其他goroutine(读和写)进来,整个锁相当于由该goroutine(协程)独占。
同步锁的作用:
保证资源在使用时的独有性,不会因为并发而导致数据错乱,保证系统并发时的稳定性。