GolangRoadmap-Golang面试题笔记(1)

欢迎加入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{1234})   // 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(协程)独占。
同步锁的作用:
保证资源在使用时的独有性,不会因为并发而导致数据错乱,保证系统并发时的稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值