栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go面试看这里了~(二十)

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go面试看这里了~(二十)

原文地址:Go面试看这里了~(二十)

1、cgo了解么?

Go提供的标准库,支持Go程序与C的类库交互操作,Go代码中加入【import “C”】语句就可以启动CGO特性。

2、make为什么不能返回指针?

make只支持slice、map、channel三种类型,某种意义上也可算作引用类型,返回引用类型的指针相较于直接使用引用本身并无优势可言,还需多使用一块儿内存保存指针,就好像使用整型变量,只会直接定义使用,而不是使用new创建。

指针能减少函数参数和返回的变量拷贝,slice、map、channel底层数据保存在指针类型中,基本不会出现大批量拷贝的情况,Go函数返回指针还涉及到内存逃逸分析,相较于此,引用显得轻量,不是任何情况下地址传递都是值得的。

对于引用类型主要在需更新数据时使用指针,Go没有构造函数,new创建返回的是变量指针,只会初始化零值,对于slice、map、channel这种引用类型的创建,只会创建出来一个指向nil的指针。

3、GORM了解么?

ORM(Object-Relationl Mapping)的作用是映射数据库和对象之间的关系,方便在实现数据库操作时不用写复杂的sql语句,把对数据库的操作上升到对于对象的操作,GORM就是基于Go实现的ORM库。

4、GIN的Handler底层数据结构?

Handler是请求的处理对象,需实现ServeHTTP方法,ServeHTTP执行的是业务逻辑,一般定义的func(w http.ResponseWriter, r *http.Request)的方法需要经过http.HandlerFunc包装为Handler对象。

Handler数据结构如下:

// Handler接口
type Handler interface {
    ServeHTTP(ResponseWriter, *Request)
}

// HandlerFunc实现了Handler接口
type HandlerFunc func(ResponseWriter, *Request)
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
    f(w, r)
}

Handler函数是具有func(w http.ResponseWriter, r *http.Requests)签名的函数,需要经过HandlerFunc函数包装,否则不能作为路由的Handler对象,HandlerFunc实现了ServeHTTP接口方法的函数。

5、GRPC相对于RESTFUL有什么优势?

RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可进行通信,且遵从server/client模型,客户端使用RPC调用server端提供的接口时就像是调用本地的函数一样。

GRPC和Restful API都提供一套通信机制,用于server/client模型通信,且都使用HTTP作为底层传输协议,严格来讲,GRPC使用的HTTP2.0,而Restful API则不一定),GRPC特有的优势如下:

  1. GRPC可以通过Protobuf来定义接口,可以有更加严格的接口约束条件,支持多种语言。

  2. Protobuf可以将数据序列化为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高传输速度。

  3. GRPC可以支持streaming流式通信(HTTP2.0),提高传输速度。

6、Protobuf了解下?

Protobuf实际是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用,相比较而言,Protobuf有如下优点:

  1. 足够简单。

  2. 序列化后体积很小:消息大小只需要XML的1/10 ~ 1/3。

  3. 解析速度快,解析速度比XML快20 ~ 100倍。

  4. 多语言支持。

  5. 更好的兼容性,Protobuf设计原则之一就是要能够很好的向下支持或向上兼容。

7、defer、return执行顺序?

多个defer执行顺序为后进先出,defer、return、返回值三者的执行逻辑应该是return最先执行,return负责将结果写入返回值中,接着defer开始执行一些收尾工作,最后函数携带当前返回值退出。

至此,本次分享就结束了,后期会慢慢补充。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号