全部版块 我的主页
论坛 数据科学与人工智能 IT基础 JAVA语言开发
5418 0
2023-11-02
最新版GO面试宝典,助力快速斩获offer
网盘地址:https://pan.baidu.com/s/1PrzS-BGKRVygeiw6v_rfnA 提取码:arwz
腾讯微云下载地址:https://share.weiyun.com/Nt9Sf7Se 密码:xn627x




分享课程——最新版GO面试宝典,助力快速斩获offer,附源码+电子手册。


在面试中,我们需要深入了解Go语言特性,并适当辅以源码阅读(Go源码非常人性化,注释非常详细,基本上只要你学过Go就能看懂)来提升能力。常考的点包括:切片,通道,异常处理,Goroutine,GMP模型,字符串高效拼接,指针,反射,接口,sync,go test和相关工具链。


基础语法
01 = 和 := 的区别?
=是赋值变量,:=是定义变量。


02 指针的作用
一个指针可以指向任意变量的地址,它所指向的地址在32位或64位机器上分别固定占4或8个字节。指针的作用有:
获取变量的值
import fmt

func main(){
  a := 1
  p := &a//取址&
  fmt.Printf("%d\n", *p);//取值*
}
改变变量的值
// 交换函数
func swap(a, b *int) {
     *a, *b = *b, *a
}
用指针替代值传入函数,比如类的接收器就是这样的。
type A struct{}

func (a *A) fun(){}




03 Go 允许多个返回值吗?
可以。通常函数除了一般返回值还会返回一个error。




Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。


1、简单介绍一下Golang。
谷歌开发的一种系统编程语言。它具有内置的垃圾收集机制并支持并发。代码可以编译成单个可执行二进制文件,不需要添加库或运行时环境即可在服务器上执行。


2、Golang是否可以声明一个类?
是的,Golang用一种独特的类型接口方式实现类。
详情请移步:如何声明一个Golang类


3、Go是否支持 泛型 ?(陷阱问题)
否,泛型是方便的,但是它们在类型系统和运行时的复杂性方面付出了代价。
4。从GitHub或者bitbucket导入代码的命令是什么?
go get 和 go install 命令


5。一个通过make()命令创建的缓冲区被分配了一块内存后。如何销毁缓冲区并收回内存?
buffer = nil
在运行时,buffer = nil将启动垃圾回收。


6。以下内容表示什么?(陷阱问题)
var num int( 整型变量 )
var prt * int(指针)
num=10(赋值10到变量num)
ptr = &num(指针指向变量num的内存地址)


7。切片和数组的显著差异是什么?
数组大小是固定的,切片大小不是。在运行时可以动态地增加或减少切片的大小,但数组不可以。切片类似于链表,可以向切片push,pop数据,实现FIFO,LIFO。使用了内置的添加、复制功能对切片操作。


8。cap()和len()函数的区别是什么?
len()返回切片中的元素个数。
cap()返回切片的容量即切片可以容纳的元素数量。


9。 哈希表 或哈希映射允许快速查找。GO如何实现哈希映射?(陷阱问题)
哈希表在Golang中相当于map,也就是哈希映射。
hash-table := make(map[string]string)


10。以下哪些函数,变量,标识符可以被导出,或者可以被外部函数调用?(陷阱问题)
var aName // private , 私有,只在函数或声明范围内可访问
var BigBro // public 公有,可导出
var 123abc // 非法
var 爱 = “love” // public 公有,可导出
func (p *Person) SetEmail(email string) { // public 因为SetEmail()函数以大写字母开头
p.email = email
}
func (p Person) email() string { // private 私有,因为email()函数以小写字母开头
return p.email
}


Go语言
golang的接口原理,怎么用,接口的作用
多线程的一些理解,进程线程协程
数据库索引,哈希索引、B+树索引,哪些字段适合加索引
new和make的区别
golang哪些类型是值传递,哪些是引用传递,区别是什么,用的场景
golang中都是采用值传递,即拷贝传递,也就是深拷贝。没有引用传递。之所有有些看起来像是引用传递的场景,是因为Golang中存在着引用类型,如slice、map、channel、function、pointer这些天生就是指针的类型,在传递的时候是复制的地址。
堆和栈,golang变量的内存分配,什么时候分配在栈,什么时候堆
golang的channel读写流程


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群