GO必知必会面试题汇总
互联网的就业环境越来越差了,应小伙伴们的强烈建议,你们要的Go面试题汇总他来了。
我们平常在工作中除了撸好代码,跑通项目之外,还要注意内外兼修。内功和招式都得练👌,才能应对突如其来的变故,顺利的拿到新的offer。
近期我会整理分享一系列后端工程师求职面试相关的文章,知识脉络图如下:
- JAVA/GO/PHP 面试常问的知识点
- DB:MySql PgSql
- Cache: Redis MemCache MongoDB
- 数据结构
- 算法
- 微服务&高并发
- 流媒体
- WEB3.0
- 源码分析
通过这一系列的文章,大家不仅能温习和梳理后端开发相关的知识点,也可以了解目前的市场环境对服务端开发,尤其是对Go开发工程师的岗位要求,需要掌握哪些核心技术。
值类型和引用类型
值类型有哪些?
基本数据类型都是值类型,包括:int系列、float系列、bool、字符串、数组、结构体struct。
引用类型有哪些?
指针、切片slice、接口interface、管道channel
值类型和引用类型的区别?
- 值类型在内存中存储的是值本身,而引用类型在内存中存储的是值的内存地址。
- 值类型内存通常在栈中分配,引用类型内存通常在堆中分配。
垃圾回收
引用类型的内存在堆中分配,当没有任何变量引用堆中的内存地址时,该内存地址对应的数据存储空间就变成了垃圾,就会被GO语言的GC回收。
一图胜千言
堆和栈
栈
在Go中,栈的内存是由编译器自动进行分配和释放,栈区往往存储着函数参数、局部变量和调用函数帧,它们随着函数的创建而分配,函数的退出而销毁。
一个goroutine对应一个栈,栈是调用栈(call stack)的简称。一个栈通常又包含了许多栈帧(stack frame),它描述的是函数之间的调用关系,每一帧对应一次尚未返回的函数调用,它本身也是以栈形式存放数据。
堆
与栈不同的是,应用程序在运行时只会存在一个堆。狭隘地说,内存管理只是针对堆内存而言的。程序在运行期间可以主动从堆上申请内存,这
