前两天有个朋友去面试,把他给问自闭了。。。 拿到他的面试题后,花了一些时间,整理了以下golang面试题,都是比较基础的问题,留给大家作为面试参考。
文章目录
1、在进行项目开发时,遇到的关于golang的问题有哪些?
- 1、在进行项目开发时,遇到的关于golang的问题有哪些?
- 2、golang中关于grpc和rest都使用过吗?grpc相对于rest的优势是什么?为什么选择groc?
- 3、golang里面常用到的技术栈有哪些?
- 4、gin框架的好处是什么?
- 5、无缓冲通道和缓冲通道的区别是什么?
- 6 、select的用处是什么?
- 7、defer的用途和使用场景是什么?
- 8、defer的执行顺序是什么?
- 9、defer函数遇到return以后是怎么执行的?
- 10、对于进程,线程,协程的理解是什么?
- 11、有时候会遇到一些空的结构体,这个目的是什么?
- 12、map怎么顺序读取?
- 13、你在项目里面会用到什么数据结构,例如map、slice
- 14、如果用range修改切片元素的值,会发生什么?
- 15、了解空指针吗?
- 16、怎么用go去实现一个set
- 17、一般怎么比较两个结构体,怎么判断他们是否相等?
- 18、make和new的区别是什么?
- 19、说一下你对并发编程的理解?
- 20、碰到过分布式锁的问题吗?分布式锁的原理你清楚吗?
可简单描述工作中用到的东西,协程,通道,框架、加密等等,说一些关键的技术点
2、golang中关于grpc和rest都使用过吗?grpc相对于rest的优势是什么?为什么选择groc?两种API架构概述
-
grpc:gRPC是RPC框架中的一种,RPC(remote procedure call 远程过程调用)框架目标就是让远程服务调用更加简单、透明。RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。RPC是一种设计理念,而gRPC是基于此种设计理念设计的真实框架。
-
rest:描述的是在网络中client和server的一种交互形式;一个架构样式的网络系统,指的是一组架构约束条件和原则。
grpc相对于rest的优势
gRPC 对接口有严格的约束条件,安全性更高,对于高并发的场景更适用
为什么选择grpc
- grpc有明确的接口规范和对于流的支持;
- RPC 效率更高。RPC使用自定义的 TCP 协议,可以让请求报文体积更小,或者使用 HTTP2 协议,也可以很好的减少报文的体积,提高传输效率。
协程、通道、web框架、密码学等
4、gin框架的好处是什么?- 快速:基于Radix树的路由,性能非常强大。
- 支持中间件:内置许多中间件,如Logger,Gzip,Authorization等。
- 崩溃恢复:可以捕捉panic引发的程序崩溃,使Web服务可以一直运行。
- JSON验证:可以验证请求中JSON数据格式。
- 多种数据渲染方式:支持HTML、JSON、YAML、XML等数据格式的响应。
- 扩展性:非常简单扩展中间件。
- 无缓冲通道,在通道满了之后就会阻塞所在的goroutine。(需要在其他goroutine中取出该通道中的元素,才能解除它所在通道的阻塞,不然就会一直阻塞下去。)
- 缓冲通道,存完了东西可以不取出来,不会阻塞;
- 缓冲通道相较于无缓冲区的通道在用法上是要灵活一些的,不会出现一次写入,一次读完就会堵塞。
过select可以监听channel上的数据流动。 select的用法与switch语言非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。
示例代码如下:
select {
case
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?