Go语言常见面试题讲解!老男孩GO语言培训
老男孩IT教育
常见问题
2021年9月18日 16:00
对于不少已经学习的差不多的小伙伴来说,最重要的事就是面试了,也就是找工作阶段,人人都想进入一个自己喜欢、薪资、待遇也都合适的企业吧,那如何进入呢?当然要靠我们的实力了,面试就要靠面试题,如果我们本身能力不低,面试答得也不错,大几率会被企业选中的,因此小编整理了一篇面试题文章,请看下文:
对于不少已经学习的差不多的小伙伴来说,最重要的事就是面试了,也就是找工作阶段,人人都想进入一个自己喜欢、薪资、待遇也都合适的企业吧,那如何进入呢?当然要靠我们的实力了,面试就要靠面试题,如果我们本身能力不低,面试答得也不错,大几率会被企业选中的,因此小编整理了一篇面试题文章,请看下文:
1、说说go语言中的init函数?
一个包中,可以包含多个init函数;程序编译时,先执行导入包的init函数,再执行本包内的init函数。
2、go语言中的引用类型和值类型包含哪些?
引用类型:组切片、字典、通道、接口;值类型:基本数据类型,int、float、bool、string以及数组和struct。
3、select是随机的还是顺序的?
select会随机选择一个可用通道做收发操作。
4、说说go语言的channel特性?
a.给一个nil channel发送数据,造成永远阻塞;b.从一个nil channel接收数据,造成永远阻塞;c.给一个已经关闭的channel发送数据,引起panic;d.从一个已经关闭的channel接收数据,如果缓冲区中为空,则返回一个零值。
5、map如何顺序读取?
可以把key放入切片,对切片进行排序,遍历切片,通过key取值。
6、new()和make()的区别?
new(X)会为X类型的新值分配已置零的内存空间,并返回地址(指针),即类型为*X的值,不能对指针执行append操作,适用于值类型,如数组、结构体等。
7、Redis有哪些数据类型?
Redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set)有序集合
8、Goroutine的调度原理?
基于G-P-M模型:
G:它是Goroutine,存储了Goroutine的执行栈信息,Goroutine状态以及Goroutine的任务函数等都是可以重用的;
P:它是逻辑Processor,P的数量决定了系统内最大可并行的G的数据(物理CPU核数>=P的数量);P最大的作用是它有各种G对象队列、链表、缓存和状态;
M:它是真正执行计算的资源,在绑定有效的P后,一个调度循环开始,而调度循环的机制是从各种队列、P的本地运行队列中获取G,切换到G的执行栈上并行执行G的函数,调用goexit做清理工作,然后回到M。这样反复。M并不保存G的状态,这是G可以跨M调度的基础。
老男孩GO语言学习周期是多久?我校GO语言课程以周末班、网络班为主,学习周期4-6个月。
推荐阅读:
